我是dojo样式编码的新手。习惯了纯粹的javascript,然后是jQuery风格。搜索并获得一些结果,如
我遇到了
的问题jQuery.fn = jQuery.prototype
的$ .fn.somefunction扩展根jquery对象。在道场有类似的东西。需要一些帮助。我正在将几个插件从jQuery移植到dojo。这些插件在dojo中不可用。
我觉得在使用dojo编码时必须使用整个库,然后编译它以获得优化的代码,并将其导出到需要的地方。我在这儿吗?如果没有,我做错了什么?
答案 0 :(得分:8)
1)dojo.require通过XHR请求自动下载所需的文件。您无需手动下载任何内容。如果您使用谷歌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
命名空间添加新功能,只需键入dojo.new_function = function(){}
和普通JavaScript一样。但我不建议这样做。如果升级到以后的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,布局系统,小部件,数据抽象和许多其他非常高级的东西。如果你从未使用过类似的东西,那么很难从它开始,因为它包含了很多东西。 jQuery没有提供这样的东西。所以有时候开始使用它肯定会更容易。
有关文档,请查看:
4)Dojo是一个在JavaScript dojo
,dijit
和dojox
中使用3个名称空间的工具包。 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包含的内容。