web2.0時代,ajax技術成為整個前端開發領域的基石。大部分的書籍、博客由此切入來介紹前端類庫與框架,所以dojo往往只被當做一個ajax類庫來介紹,然而僅僅以此來定位dojo,無異於管中窺豹。對於dojo來講,關於ajax的封裝只是dojo框架中的一小部分,dojo的定位是一個從前往后一手包辦的企業級開發框架。
目前在模塊化開發盛行的前端開發中,requireJs無疑是最受推崇的一位。只是很少有人知道requireJs出自dojo框架,dojo加載器的開發者就是requireJs的作者。曾經有一位使用dojo多年的哥們出去面試,面試官問他,是否熟悉模塊化開發。哥們很詫異的問道:難道你們以前不用模塊化嗎?在dojo中模塊化開發的理念是與生俱來的,我們的教程的第一部分,讓大家最先接觸的就是模塊化開發理念與AMD規范,內容安排如下:
- 前端模塊化開發理念與AMD規范介紹
- 自己動手實現一個AMD加載器
- dojo中對AMD的支持(dojoConfig)
在模塊化的基礎上,dojo整體分為三個部分:dojo、dijit、dojox。對應的源碼分為三個文件夾,dojo文件夾下的是整個dojo框架的核心模塊,而且這部分也可以單獨拿出去作為一個獨立的類庫,性能可是不亞於jquery。dojo核心作為本系列的教程的第二部分,內容安排如下:
- 介紹幾個重要又常用的工具類(lang、array、sniff與has)
- 介紹將JavaScript模擬成支持類聲明的declare模塊
- 介紹DOM操作模塊,涉及dojo/dom、dojo/dom-*、dojo/domReady、dojo/ready、dojo/form、dojo/io-query
- DOM查詢與NodeList介紹,涉及dojo/query、dojo/NodeList-*
- dojo中的切面編程與事件編程機制,涉及dojo/aspect、dojo/on、dojo/topic、dojo/Evented、dojo/touch
- Promise編程模型介紹與dojo對其的支持,涉及dojo/when、dojo/promise/*、dojo/Deferred
- dojo中Ajax部分的封裝與架構設計,涉及dojo/request/*
- 動畫的原理與dojo對動畫部分的設計與封裝,涉及dojo/fx、Animation、動畫原理
- 國際化問題(i18n、date與number在不同地區的格式顯示問題、rtl、bidi)
dijit部分是dojo框架提供的一系列UI組件,包含了布局控件、表單控件、tree、grid等。在本系列教程中dijit作為第三部分,但我們只介紹兩個方面:
- 自定義dijit(涉及dijit/registry、dijit/_WidgetBase、dijit/_TemplatedMixin、dijit/_WidgetsInTemplateMixin、dojo/Stateful、dijit/Destroyable)
- dojo中的css framework以及自定義theme
dojox中是一些作為dojo和dijit部分的候選模塊,里面有一些新功能與新控件,但是並沒有像dojo與dijit那樣得到dojo團隊的全力支持。這一部分在2.0中將被選擇性的添加到dojo或dijit,剩下的便廢棄掉,所以對於這里面的內容我只提一下我在工作中遇到的幾個模塊即可。
如果你下載過dojo源碼,一定會發現與dojo、dijit、dojox同級別目錄下還有一個util目錄。這個目錄里面是dojo提供的打包、壓縮工具,對這一部分的介紹放在第三部分——打包與測試中。
沒有經過測試的產品是不能上線的,我們會介紹一個新的前端測試框架——intern。結合打包壓縮,第三部分安排如下:
- 使用dojo打包應用程序
- intern的介紹與環境搭建
- 使用intern來編寫單元測試
- 使用intern來編寫自動化測試