都知道ajax的框架已经为数众多, 真正了解点的大框架也只有ms的asp.net ajax (atlas)以及Jquery吧,其余的都是拿来就用。最近有想作个小应用,因此想换一个其余新框架来用。dojo去年就有下过0.3.1版本,但当时用的不太舒服(多是还不了解),就 放一边。这几天无心看到了dojo1.0这个月发布了,因而带着好奇去关注了下。真的很吃惊,这个框架发展真的太快了,变得出奇的强大,已经把许多框架远远抛在了后面,使人赞叹!!因而我就想深刻下dojo。但究竟Dojo是怎么一个东西,我翻译了《the book of dojo》的introduce章节,也许能够回答一些这问题吧。另外,也但愿你们能够关注mootool,我发现它也挺好,对我目前用不Dojo,因此我会选用它。但至于你选择哪种框架,也许下文会对你的选择有所帮助,或许你也所以想有投身Dojo的冲动,至少我有点了。css
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。这不须要去单独获取许可证或承担其余的责任。
因为用户要面临一些
由
FSF
所形成的问题。这些问题有关于
AFL
和
(L)GPL
的兼容性,模糊不清且由人为。所以,
Toolkit
也许会交替使用
BSD
许可证。可是,
AFL
和
BSD
许可证都符合
Dojo
基金许可受权目标。
Dojo
的双重许可受权和许多开源项目的不一样。两个条款都是开放源码和很是自由,没有特权和麻烦的商业用途条款。在任什么时候候,你都不须要选择
AFL
外其余东西。通常状况下,你也不须要另外作什么来代表你选择了一个许可证。若是你还有什么有关
Dojo
许可受权的问题,请不要犹豫,当即同目前
Dojo
基金会的主席
Alex Russell
联系吧。
Dojo
基金会的角色
Dojo
是一个开元源软件,由非赢利性基金会发布。这个基金会是做为中立的知识产权全部者而设立。为了向基金会的项目用户明确,关于基金会的代码不存在任何模棱两可或者隐藏的责任,全部的贡献者都被要求在贡献者许可赞成书上的签名。
基金会的事务都要由
Dojo
基金会的全部委员投票决定。基金会由贡献者以透明的方式运做,而且只是依靠捐赠筹集资金。
第三方许可证
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规模的应用程序的须要而设计的。工具包中的可用控件日渐变多,都使用了好用的标准化布局样式表CSS。YUI没有使用包系统,可是分发了” 向上滚动(roll up)”经常使用功能文件,并用文档清楚告诉用什么顺序装载。不能用CSS查询、标记驱动组件(markup-driven widget)。YUI有活跃的社区和大方的许可受权,可是外部的贡献者并不被容许进入这个项目,Yohoo也没有澄清代码的血统和其余工具包的知识产权(IP)。YUI没从源头控制任何的数据访问。在Yahoo CDN上使用的YUI都被边缘缓存(edge-cached)。
- JQuery:一个最初关注于操纵如今DOM结构的小型系统。它以混合Xpath/CSS查询语言(Dojo使用的是标准的CSS3.0查询)为特点,为查询结果提供了一套丰富的选择和操做。Jquery将Ajax、效果和其余一些运用装入一个核心(除了Mootools,赛过其余全部的)然而Jquery中没有足见和包系统,可使用在Jquery上创建的第三方组件库。Jquery社区高度活跃,经常也颇有帮助,外部的贡献和补丁也被接受。Jqurey由MIT与GPL双重许可,John Resig具备全部版权。可是并不清楚在什么条款下,其余贡献者如何把知识产权(IP)分给了John。有几个框架(特别是Drupal)已将Jquery整合了进去。
- EXT:有点相似Dojo的Dijit系统,EXT是一个组件库。它以数量庞大的一致且好看的小组件(widget)为特点,这些组件实现了跨浏览器的纯像素布局和仿桌面UI。最初EXT是为在YUI和后来的Jquery上运行而设计。现在,它有本身的低层库,不须要依赖第三方。EXT社区很是活跃,具备良好的库文档。依据LGPL许可受权,有多种形式的商业许可证。可是,外部的贡献者是否被承认(在哪些条款下),以及在某些方面,无名子版本的访问受不受那些项目资金提供者的限制,都还不清楚。
- GWT:GWT注意到JavaScript应是个要被解决的bug,应运用高级编译器技术让开发者在Java中编写,并生成以JavaScript为基础的动态Google风格的UI。所以,GWT直接整合了服务器端开发和客户端开发。默认的小组件(widget)系列彻底是Dijit所提供的子系列,可是要充分地运用全部的代码生成却至关辛苦。不断增大的第三方扩展库很宝贵,可为默认组件作了很多提高。不像YUI和EXT,GWT是以一个开源项目进行的,容许来自外部的贡献者(committer)。在开源环境下进行开发,然而这也使得在管理知识产权(IP)的问题上用了很复杂方式(CLA、代码检查,许多地方很像Apache和Dojo)。GWT应用程序只能用Java来写,而且不少是要依赖于Java的容器。良好的文档和不断成长的社区提供了颇有帮助。
为了比较
, Dojo
有
:
- 接受外部贡献者,并使用CLA许可协议(如同GWT和Apache)来保证没有知识产权的争论。
- 许可受权很是自由,为每一个人都提供了匿名SVN访问。权利也获得了保证。
- 提供一个比较丰富的客户端组件套,但不要求和任何服务器端语言(“是协议,而不是API”)紧密绑定。
- 尽可能在网线中传输大小和经常使用功能之间提供一种平衡。Dojo的基础库(Dojo Base)大小和Prototype接近。
- 很是注意使你的页面不会侵犯到其余代码,而且都保留了它们的全局命名空间。
- AOLs CDN上的全部使用都会能够被边际缓存(edge-cached)。
- 提供包系统,使你知道在假设的问题上以什顺序进行加载的。
容许经过标记进一步增进。提供了易用的小组件(
widget
)系统构建你本身的可重用组件(
component
),这些都能很是容易经过标记实例化。