我是 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.Animation
、dojo.behavior
、dojo。 Deferred
、dojo.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 个命名空间的工具包:dojo
、dijit
和 dojox
。 dojo
命名空间包含几乎每个人以后都会使用的东西,例如 I18N、L10N 框架、模型抽象(例如 dojo.data
或 dojo.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 Charting 、 Advanced Charting )或类似 dojox.gfx 的系统创建使用 SVG、Canvas、VRML、Silverlight 或 Flash 的跨浏览器图形。
只需查看 Beyond Dojo's Core获得 dijit 和 dojox 包含内容的(小)概述。
关于javascript - Dojo 风格编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6455503/