《the book of dojo》介绍翻译

都知道ajax的框架已经为数众多,真正了解点的大框架也只有ms的asp.net ajax (atlas)以及Jquery吧,其他的都是拿来就用。最近有想做个小应用,所以想换一个其他新框架来用。dojo去年就有下过0.3.1版本,但当时用的不太舒服(可能是还不了解),就放一边。这几天无意看到了dojo1.0这个月发布了,于是带着好奇去关注了下。真的很吃惊,这个框架发展真的太快了,变得出奇的强大,已经把许多框架远远抛在了后面,令人赞叹!!于是我就想深入下dojo。但究竟Dojo是怎么一个东西,我翻译了《the book of dojo》的introduce章节,也许可以回答一些这问题吧。另外,也希望大家可以关注mootool,我发现它也挺好,对我目前用不Dojo,所以我会选用它。但至于你选择哪一种框架,也许下文会对你的选择有所帮助,或许你也因此想有投身Dojo的冲动,至少我有点了。

最后,希望Dojo有更多的中文文档。。。

详细文档:http://dojotoolkit.org/book/dojo-book-0-9-0

Dojo1.0下载地址:http://dojotoolkit.org/downloads

CONTENTS
目录
介绍
Dojo 做得非常多,努力地使它在 3 个主要的层面上容易使用: Dojo Core Dijit 、和 DojoX 。这本书作为这三个层面的指导,介绍一些你需要的概念。使你在建立自己的组件、客户命名空间、单元测试这些高层次运用时,从手足难堪中解脱出来。
正如你所见, Dijit 和DojoXJ建立在为所有Dojo应用程序提供支持Dojo Core的固定基础上。由于Core和Dijit被放入可靠的API及强大品质保证(QA)、国际化(i18n),容易处理许多网页边缘化特征的能力,也是因此Dojo而为人们所知。它们也在更松散的、更有组织的DojoX项目中得到发展。我们在整本书中都会向你展示各个部分是如何建立在彼此之上,以及如何运用每一个提供的基础,优雅地去解决直到现在用基于浏览器UI也难以对付的用户体验问题。
感谢你能看Dojo和《the Dojo Book》一书。如果在这本书中你没有弄明白,就在该书的网页中评论,留下你的问题。我们会努力地去改善。正是由于你的运用,激励了我们建立了Dojo。正是大家不断提升toolkit的用户体验的许多事,使我们一直坚持。正是在你们的帮助下,我们写下了这本书。
许可授权
你可以在商业软件中使用Dojo。这不需要去单独获取许可证或承担其他的责任。
Dojo Toolkit 是双重许可。优先许可协议是 Academic Free License v2.1 http://trac.dojotoolkit.org/browser/dojo/trunk/LICENSE#L43 )。它是非常开放的,允许被做商业用途,也为次级许可授权提供支持。 Dojo 基金会的所有项目的代码都在这个许可条款下发行。因为 AFL 极其自由,因而几乎没有必要都使用双重许可授权条款的两个部分。
由于用户要面临一些 FSF 所造成的问题。这些问题有关于 AFL (L)GPL 的兼容性,模糊不清且由人为。因此, Toolkit 也许会交替使用 BSD 许可证。但是, AFL BSD 许可证都符合 Dojo 基金许可授权目标。
Dojo 的双重许可授权和许多开源项目的不同。两个条款都是开放源码和非常自由,没有特权和麻烦的商业用途条款。在任何时候,你都不需要选择 AFL 外其他东西。一般情况下,你也不需要另外做什么来表明你选择了一个许可证。如果你还有什么有关 Dojo 许可授权的问题,请不要犹豫,立即同目前 Dojo 基金会的主席 Alex Russell 联系吧。
Dojo 基金会的角色
Dojo 是一个开元源软件,由非赢利性基金会发布。这个基金会是作为中立的知识产权所有者而设立。为了向基金会的项目用户明确,关于基金会的代码不存在任何模棱两可或者隐藏的责任,所有的贡献者都被要求在贡献者许可同意书上的签名。
基金会的事务都要由 Dojo 基金会的所有委员投票决定。基金会由贡献者以透明的方式运作,并且只是依靠捐赠筹集资金。
基金会的许可授权目标概括在 Foundation page. http://dojotoolkit.org/foundation )。
第三方许可证
Dojo 使用了其他开源项目的代码,因此也要服从他们的许可条款。这些许可证和软件版权公告列表如下:
历史
早在 2004 年之前, Alex Russell(netWindows 的创始人 ) 就开始有意聘用 DHTML 项目 Informatica 的合作者。在这个过程中,许多 DHTML 社区的成员之间不断接触,以一封 2004 4 25 日标题为 “出售 DHTML 的未来”的邮件达到了顶点。 David Schontzler (Stilleye) Informatica 上花费了一个暑期的工作。 Dylan Schiemann 也在那时加入。就这样,在 Informatica 项目的帮助下, Alex Dylan 写下了 Dojo 的第一行代码。还有其他许多社区成员也活跃参与 Dojo 方面的设计。他们是 Joyce Park Tom Trenka Mark Anderson Leonard Lin ( 是他建议取名 Dojo) Aaron Boodman,Simon Willison Cal Henderson 以及 Dan Pupius
在许可授权、选择名字、代码规范、开发工具、服务器配置及需求上,我们和 ng-dhtml( 现在 Dojo 的开发者 ) 用一系列邮件讨论了几个月。这之后,便开始了工作,并成立了 Dojo 基金会。这个基金会是一个 501(c)6 (美国的一个联邦法案条款)实体,这个条款用来管理代码权和知识产权 (IP) ,今天也管着一些其他项目。在 2005 3 月,来自的社区的贡献开始重于核心开发团队。今天, Dojo 0.4.x 5 个主要发布版本已经有了超过 300,000 次的下载,有超过 60 个开发者的贡献和代码。以及有一些像 IBM AOL Sun SitePen Bloglines 等等这些大用户,也不断地使 Dojo 质量得到提高、社区变得活跃。
为什么要选择Dojo?
今天已经有几个高质量的 JavaScript 工具包,以及其他几百种质量与完整性不断改变的工具包。但为什么在如此多的选择中,你就要选择 Dojo 呢?
  • 宽度和深度: Dojo是一个“full stack”(意指集成了全部所需功能的框架)。与将几个来自不同源码的组件揉合在一起不同,Dojo是在可信赖的一套高质量大厦的基础上,用整合的公共基础和多种可选的模块去使用组件。这些组件提供了非常好的用户体验问题的解决方案,能够很容易地被放入你的需要。从平板层到客户图表和图象,从数据绑定到时间测试模块系统,Dojo都是实现强大体验的坚固基础。
  • 质量: 国际化和易用性基础,贯穿在整个Dojo的结构中。按键事件能正确地响应。所有的组件拼装成一个粘接力的整体。每一件事用CSS定制很轻松。可是,只要做很少的事,就可以在所有的地方都有非常好看的UI。
  • 表现: Dojo每天都被用在高收益、高流量的网站上,使用Dojo的构建工具是主要原因。Dojo的包系统,让管理大型UI项目开发、系统顶层建设更加的容易,使你的项目更出色。
  • 社区: Dojo是个开放社区。因此,许许多多的个人和公司一起加入进来,开发了大家得益的工具。工具的许可授权也尽量做得非政治。如果你正在打算涉及这些,我们也努力使满足你的渴望变得容易。所有的开发都是在开源环境中进行,参与近来的障碍也特意放得非常低。我们不在意你在哪工作或者你多有资格,我只关心你很想构件更好用户体验的产品。设计者、开发者或文档编写人员,Dojo社区尊重每一种贡献,你在社区中的地位只等于你所做工作,而不是政治口角。我们正做工作改变关于那些人可以参与贡献开源组织的概念,我们邀请你参与我们一起绘描绘新的路径。如果你想要构建一个强大的产品以及觉得自己可以帮助我们,那么希望你告诉我们。
Dojo 与其他的工具包的比较
几个其他的工具包常常被用来和 Dojo 作比较。这里的比较也不全面,但也是一些高层次的比较。包括了它们的特征和设计目标,以及它们与 Dojo 特征和开发工序及原理的比较。
  • MochiKit:MochiKit是一个高质量的JavaScript工具包,它使得写Javacript代码更出神入化并且达到出色的表现效果。它和Dojo一样,采用了许多旧的打包、命名、全局名字空间的惯例。主要由Bob Ippolito所写。它有大量的文档和测试。但是不像Dojo,它没有一个小组件系统(widget system)和可扩展的组件套。一些代码被Mochi和Dojo共享(当然,在CLA许可协议下)。Mochi没有被一个基金会所援助,代码门第也未得证明,但是它被很自由地许可。
  • Prototype+Scriptaculous: 这二者是个普遍使用的库,提供了许多和Dojo Core同样的功能。但是,在关于全局命名空间、常使用方法简命名偏好,及其它所关心的方面上,它们和Dojo保持了不同的原理。这两个库主要有良好的文档和广泛的社区支持,还可以与Ruby On Rails(以及其他框架中)紧凑的整合在一起。Scriptaculous提供了一些控件,比如自动完成输入框(auto-complete)、滑动条(sliders)等,但都不是组件工具包,也没有为轻松构件组件提供支持。虽然许多第三方扩展(add-on)库可以用在Prototype+Scriptaculous上,可是同样没有和库一起发布,也没有具有特色的包和构建系统。Prototype和Scriptaculous Mochi没有被一个基金会所援助,代码门第也未得证明,但是它们非常自由的被使用。
  • YUI: YUI是由Yahoo内部开发,以可扩展性、高质量的文档和示例为特色。目的是为实现快速,锁定专业PHP开发者设计。其实说实话,YUI主要是为满足Yahoo规模的应用程序的需要而设计的。工具包中的可用控件日渐变多,都使用了好用的标准化布局样式表CSSYUI没有使用包系统,但是分发了向上滚动(roll up常用功能文件,并用文档清楚告诉用什么顺序装载。不能用CSS查询、标记驱动组件(markup-driven widget)。YUI有活跃的社区和大方的许可授权,但是外部的贡献者并不被允许进入这个项目,Yohoo也没有澄清代码的血统和其他工具包的知识产权(IP)YUI没从源头控制任何的数据访问。在Yahoo CDN上使用的YUI都被边缘缓存(edge-cached)。
  • JQuery:一个最初关注于操纵现在DOM结构的小型系统。它以混合Xpath/CSS查询语言(Dojo使用的是标准的CSS3.0查询)为特色,为查询结果提供了一套丰富的选择和操作。JqueryAjax、效果和其他一些运用装入一个核心(除了Mootools,胜过其他所有的)然而Jquery中没有足见和包系统,可以使用在Jquery上建立的第三方组件库。Jquery社区高度活跃,常常也很有帮助,外部的贡献和补丁也被接受。JqureyMITGPL双重许可,John Resig具有所有版权。但是并不清楚在什么条款下,其他贡献者如何把知识产权(IP)分给了John。有几个框架(特别是Drupal)已将Jquery整合了进去。
  • EXT:有点类似DojoDijit系统,EXT是一个组件库。它以数量庞大的一致且好看的小组件(widget)为特色,这些组件实现了跨浏览器的纯像素布局和仿桌面UI。最初EXT是为在YUI和后来的Jquery上运行而设计。如今,它有自己的低层库,不需要依赖第三方。EXT社区非常活跃,具有良好的库文档。依据LGPL许可授权,有多种形式的商业许可证。但是,外部的贡献者是否被认可(在哪些条款下),以及在某些方面,无名子版本的访问受不受那些项目资金提供者的限制,都还不清楚。
  • GWT:GWT注意到JavaScript应是个要被解决的bug,应运用高级编译器技术让开发者在Java中编写,并生成以JavaScript为基础的动态Google风格的UI。因此,GWT直接整合了服务器端开发和客户端开发。默认的小组件(widget)系列完全是Dijit所提供的子系列,但是要充分地运用所有的代码生成却相当辛苦。不断增大的第三方扩展库很宝贵,可为默认组件做了不少提升。不像YUIEXTGWT是以一个开源项目进行的,允许来自外部的贡献者(committer)。在开源环境下进行开发,然而这也使得在管理知识产权(IP)的问题上用了很复杂方式(CLA、代码检查,许多地方很像ApacheDojo)。GWT应用程序只能用Java来写,并且很多是要依赖于Java的容器。良好的文档和不断成长的社区提供了很有帮助。
为了比较 ,Dojo :
  • 接受外部贡献者,并使用CLA许可协议(如同GWT和Apache)来保证没有知识产权的争论。
  • 许可授权非常自由,为每个人都提供了匿名SVN访问。权利也得到了保证。
  • 提供一个比较丰富的客户端组件套,但不要求和任何服务器端语言(“是协议,而不是API”)紧密绑定。
  • 尽量在网线中传输大小和常用功能之间提供一种平衡。Dojo的基础库(Dojo Base)大小和Prototype接近。
  • 非常注意使你的页面不会侵犯到其他代码,并且都保留了它们的全局命名空间。
  • AOLs CDN上的所有使用都会可以被边际缓存(edge-cached)。
  • 提供包系统,使你知道在假设的问题上以什顺序进行加载的。
允许通过标记进一步增进。提供了易用的小组件(widget)系统构建你自己的可重用组件(component),这些都能非常容易通过标记实例化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


我有一个网格,可以根据更大的树结构编辑小块数据.为了更容易知道用户保存了什么,我希望当用户第一次看到网格时,网格处于不可编辑状态.当用户准备好后,他们可以单击编辑按钮,这将使网格的某些部分可编辑.然后,有一个保存或取消按钮可以保存更改或还原.在大多数情况下它是有效的.但
我即将开始开发一款教育性的视频游戏.我已经决定以一种我可以轻松打包为Web,Mobiles和可能的Standalone版本的方式来实现这一目标.我不想使用Flash.因此,我确信(无论如何我会听取建议)使用JavaScript和SVG.我正在对这个问题进行大量研究,但我很难把各个部分放在一起.我知道Raphae
我正在使用带有Grails2.3.9的Dojo1.9.DojoNumberTextBox小部件–我在表单中使用–将固定格式(JavaScript基本格式)的实数值(例如:12.56)设置为HTML表单输入字段(但根据浏览器区域设置显示/编辑它们,所以用户总是看到格式正确的数字).另一方面,Grails期望输入字段根据浏览器
1.引言鉴于个人需求的转变,本系列将记录自学arcgisapiforjavaScript的学习历程,本篇将从最开始的arcgisapiforjavaScript部署开始,个人声明:博文不在传道受业解惑,旨在方便日后复习查阅。由于是自学,文章中可能会出现一些纰漏,请留言指出,不必留有情面哦!2.下载ArcGISforDe
我正在阅读使用dojo’sdeclare进行类创建的语法.描述令人困惑:Thedeclarefunctionisdefinedinthedojo/_base/declaremodule.declareacceptsthreearguments:className,superClass,andproperties.ClassNameTheclassNameargumentrepresentsthenameofthec
我的团队由更多的java人员和JavaScript经验丰富组成.我知道这个问题曾多次被问到,但为了弄清楚我的事实,我需要澄清一些事情,因为我在客户端技术方面的经验非常有限.我们决定使用GWT而不是纯JavaScript框架构建我们的解决方案(假设有更多的Java经验).这些是支持我的决定的事实.>
路由dojo/framework/srcouting/README.mdcommitb682b06ace25eea86d190e56dd81042565b35ed1Dojo应用程序的路由路由FeaturesRoute配置路径参数RouterHistoryManagersHashHistoryStateHistoryMemoryHistoryOutletEventRouterContextInjectionOutl
请原谅我的无知,因为我对jquery并不熟悉.是否有dojo.connect()的等价物?我找到了这个解决方案:http:/hink-robot.com/2009/06/hitch-object-oriented-event-handlers-with-jquery/但是没有断开功能!你知道jquery的其他解决方案吗?有jquery.connect但这个插件在我的测试中不起作用.
与java类一样,在dojo里也可以定义constructor 构造函数,在创建一个实例时可以对需要的属性进行初始化。//定义一个类mqsy_yjvar mqsy_yj=declare(null,{     //thedefaultusername    username: "yanjun",          //theconstructor   
我一直在寻找一些最佳实践,并想知道Dojo是否具有框架特定的最佳实践,还是最好只使用通用的Javascript标准?特别是我主要是寻找一些功能和类评论的指导方针?解决方法:对于初学者来说,这是项目的风格指南:DojoStyleGuide
我有’05/17/2010’的价值我想通过使用dojo.date.locale将其作为“2010年5月17日”.我尝试过使用dojo.date.locale.parse,如下所示:x='05/17/2010'varx=dojo.date.locale.parse(x,{datePattern:"MM/dd/yyyy",selector:"date"});alert(x)这并没有给我所需的日期
我正在尝试创建一个包含函数的dojo类,这些函数又调用此类中的其他函数,如下所示:dojo.provide("my.drawing");dojo.declare("my.drawing",null,{constructor:function(/*Object*/args){dojo.safeMixin(this,args);this.container=args[0];
我知道你可以使用jQuery.noConflict为jQuery做这件事.有没有办法与Dojo做类似的事情?解决方法:我相信你可以.有关在页面上运行多个版本的Dojo,请参阅thispage.它很繁琐,但似乎是你正在寻找的东西.一般来说,Dojo和jQuery都非常小心,不会破坏彼此或其他任何人的变量名.
我有一个EnhancedGrid,用户经常使用复杂的过滤器.有没有办法允许用户保存或标记过滤器,以便将来可以轻松地重新应用它?我知道我可以通过编程方式设置过滤器,但我无法预测用户想要的过滤器.谢谢!编辑:自己做了一些进展…使用grid.getFilter()返回过滤器的JSON表示,然后使用json.strin
我有这个代码:dojo.declare("City",null,{constructor:function(cityid,cityinfo){}});dojo.declare("TPolyline",GPolyline,{constructor:function(points,color){},initialize:function(map){});应该是什
我遇到的问题是我的所有javascript错误似乎来自dojo.xd.js或子模块.我正在使用chrome调试器和许多dijit功能,如dijit.declaration和dojo.parser.这有点烦人,因为它很难找到简单的错误或滑倒.我希望我可以添加一个选项,允许我的调试器在我的非dojo代码中显示选项会发生的位置.我是
我正在使用DojoToolkit数字/解析函数来处理格式化和使用ICU模式语法解析字符串.有没有人知道有可能采取任意ICU模式字符串并以某种方式使用Dojo(或其他)库将其分解为它的部分(例如,对于数字模式,它可以被分解为小数位数,数千个分组等…).我希望这样做,而不需要让我的代码密切了
我有两个看似相关的问题,访问在不同的地方定义的javascript函数.我遇到的第一个问题是调用我在firgbug或safari控制台中定义的函数.我定义了一个名为getRed的函数,如下所示:functiongetRed(row,col){//dosomethingstuffandreturntheredvalueasa
我想添加一个在Ajax调用中指定的外部样式表.我已经找到了一种方法来使用jQuery(参见下面的示例),但是我需要使该方法适应dojoJavaScript框架.JQuery示例$('head').append('<linkrel="stylesheet"type="text/css"href="lightbox_stylesheet.css">');谢谢.解决方法:一旦你
我正在尝试使用dojo.connect将onMouseDown事件连接到图像,如:dojo.connect(dojo.byId("workpic"),"onMouseDown",workpicDown);functionworkpicDown(){alert("mousedown");}类似的代码几行后,我将onMouse*事件连接到dojo.body确实完全正常工作.但是当我点击图像时