Dojo风格编码

时间:2011-06-23 14:15:28

标签: javascript jquery dojo

我是dojo样式编码的新手。习惯了纯粹的javascript,然后是jQuery风格。搜索并获得一些结果,如

  • Dojo,当与闭包编译器一起使用时效果最佳。
  • 高级dojo比程序类型更多OO

我遇到了

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

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

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

1 个答案:

答案 0 :(得分:8)

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

2)像jQuery一样增强dojo没有任何意义。 dojo只是顶级名称空间,在其下面有很多类,例如dojo.Animationdojo.behaviordojo.Deferreddojo.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 dojodijitdojox中使用3个名称空间的工具包。 dojo命名空间包含几乎每个人以后使用的东西,比如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.DataGriddojox.chartingStart ChartingAdvanced Charting)或类似dojox.gfx等系统的内容来创建使用SVG,Canvas,VRML的跨浏览器图形,Silverlight或Flash。

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