javascript - Dojo 风格编码

标签 javascript jquery dojo

我是 dojo 风格编码的新手。习惯了纯 JavaScript,然后是 jQuery 风格。搜索了一下,得到了一些结果,例如

  • Dojo 与闭包编译器一起使用时效果最佳。
  • 高级道场比程序类型更面向对象

我遇到问题

  • dojo.require() - 每当我下载 dojo 插件时,都会收到错误 - 404 NOT FOUND。一半的开发时间都花在解决这个问题上,获取 js 文件并将其放置在适当的位置。
  • 是否可以像在 jQuery 中那样扩展 dojo 对象,我们通过使用内部定义为 jQuery.fn = jQuery.prototype 的 $.fn.somefunction 来扩展根 jquery 对象。道场里有类似的东西吗?
  • 而且我觉得 dojo 的文档不如 jQuery 的文档。
  • 什么是 dijit 和 dojox ?当我从 Google api 库导入 dojo.js,然后在 dojo 中使用插件时,这些 dijit 和 dojox 始终是一个问题。

需要一些帮助。我正在将一些插件从 jQuery 移植到 dojo。这些插件在 dojo 中不可用。

我觉得使用dojo编码时必须使用整个库,然后编译它以获得优化的代码,并将其导出到需要的地方。我在这儿吗?如果不是,我做错了什么?

最佳答案

1)dojo.require通过XHR请求自动下载需要的文件。您无需手动下载任何内容。如果您使用 google CDN,所有类都应从那里下载,我建议将完整包下载到您的本地应用程序并从那里使用它。稍后您可能想创建一个 Build 。您还应该阅读Starting with Dojo

2) 像 jQuery 这样增强 dojo 没有任何意义。 dojo 只是顶部命名空间,在它下面有很多类,例如 dojo.Animationdojo.behaviordojo。 Deferreddojo.NodeList 和许多其他类。有些是诸如 dojo.connect()dojo.style() 之类的函数。

如果你想创建一个新类,请查看 dojo.declare 。您还可以在dojo“命名空间”或其他命名空间下创建新类。

如果您想向 dojo 命名空间添加新函数,只需像普通 JavaScript 一样输入 dojo.new_function = function(){} 即可。但我不建议这样做。如果您升级到更高的 Dojo 版本,可能会出现问题。

jQuery 和 Dojo 完全不同。如果您在 jQuery 中输入类似 $('.data') 的内容,它会获取所有具有“data”类的 dom 节点,并返回一个包装在 jQuery 中的新对象。类。

在 Dojo 中,您可以使用 dojo.query('.data') 达到相同的效果。但它返回一个dojo.NodeList类型的新对象。如果你想给链能力添加新的功能,你需要扩展dojo.NodeList。

已经存在一些扩展,例如dojo.NodeList-fx,它将动画效果添加到dojo.NodeList类中。如果您使用 dojo.require() 加载类,您的 dojo.Nodelist 将自动扩展。查看Extend dojo.NodeList了解更多信息。

3) 文档非常好,您询问的所有内容都已记录在案,并且我提供了一些您可以在 Dojo 主页上完全找到的资源。不同之处在于,Dojo 是一个完整的工具包,包括 GUI、布局系统、Widget、数据抽象和许多其他真正高级的东西。如果您从未使用过类似的东西,那么可能很难开始使用它,因为它包含太多内容。 jQuery 不提供这样的东西。所以有时从它开始肯定更容易。

有关文档,请参阅:

4) Dojo 是一个在 JavaScript 中使用 3 个命名空间的工具包:dojodijitdojoxdojo 命名空间包含几乎每个人以后都会使用的东西,例如 I18N、L10N 框架、模型抽象(例如 dojo.datadojo.store)还有很多其他东西。

顺便说一句,仅加载“dojo.js”文件并不能提供 dojo 提供的所有内容。

dijit 命名空间包含 Dojo 中的许多小部件。 dijit 命名空间中的所有小部件都具有完整的 I10N 和 L10N 支持。 dijit 包含对话框、布局系统、日历、按钮、选择字段、单选字段等小部件,完整的 WYSIWYG Editor under dijit.Editor .

另请参阅Dijit Theme Editor看看 Dijit 包含什么。整个网站包括布局都是基于dijit完成的。

dojox 命名空间包含许多不适合 dijit 或处于实验阶段的额外功能。但并非一切都是实验性的。您会发现类似 dojox.grid.DataGrid 的内容或 dojox.charting ( Start ChartingAdvanced Charting )或类似 dojox.gfx 的系统创建使用 SVG、Canvas、VRML、Silverlight 或 Flash 的跨浏览器图形。

只需查看 Beyond Dojo's Core获得 dijit 和 dojox 包含内容的(小)概述。

关于javascript - Dojo 风格编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6455503/

相关文章:

javascript - Dojo 无法解析自定义日期时间格式

java - 如何将 Dojo Data 网格单元格值重定向到另一个页面?

javascript - 如何在不使用指令的情况下操作 ng-if 内的元素

javascript - 插画家 Javascript : Select Based on Swatch

javascript 替换字符串单个

javascript - 如何显示无效输入的 Bootstrap 弹出窗口?

javascript - 数组值检查 JavaScript 中是否出现(使用箭头函数?)

c# - 任何适用于 .NET 的 Javascript 编辑器控件(如 Visual Studio 中的控件)?

jquery - 添加公共(public)方法的 jQuery 插件模式的缺点

javascript - 使用 dojo.xhrget() 方法在 Dojogrid 中显示数据