什麼是Dojo?與Jquery宏觀對比,結果如何?

Dojo 是一個 JavaScript 實現的開源 DHTML(動態html 工具包。

Dojo能做什麼??

1、讓開發者更容易地爲 Web 頁面添加動態能力,也可以在其它支持 JavaScript 的環境中使用 Dojo;

2、利用 Dojo 提供的組件,開發者可以提升 Web 應用程序的可用性和交互能力;

3、Dojo 很大程度上屏蔽了瀏覽器之間的差異性,因此,開發者可以不用擔心 Web 頁面是否在某些瀏覽器中可用;

4、通過 Dojo 提供的工具,您還可以爲代碼編寫命令行式的單元測試代碼。

5、Dojo 的打包工具可以幫助您優化 JavaScript 代碼,並且只生成部署應用程序所需的最小 Dojo 包集合。

6、……等等

Dojo架構(只包含部分包,網上找的)

第一層是 Dojo 的 Widget 系統,Widget 指的是用戶界面中的一個元素,比如按鈕、進度條和樹等。通過Widget ,可以對按鈕,菜單等進行操作,包括樣式,事件處理。只需在頁面中加入簡單標籤。

第二層是應用程序支持庫,dojo大部分代碼都放在這一層,我們大部分時候是在調用這個層中的API

第三層是環境相關包,這個包的功能是處理跨瀏覽器的問題。

第四層是語言庫,這個語言庫裏包含一些語言工具 API,類似於 Java 的 util 包。

最下面一層是包系統,Dojo API 的結構與 Java 很類似,它把所有的 API 分成不同的包(package),當您要使用某個 API 時,只需導入這個 API 所在的包。

上圖中只是Dojo 提供的上百個包的一部分,這些包分別放入三個一級命名空間:Dojo,Dijit 和 DojoX 。其中 Dojo 是核心功能包 , Dijit 中存放的是 Dojo 所有的 Widget 組件,而 DojoX 則是一些擴展或試驗功能,DojoX 中的試驗功能在成熟之後有可能在後續版本中移入到 Dojo 或 Dijit 命名空間中。

JqueryDojo宏觀對比:

首先聲明,並不絕對,一家之言。

1、框架規模

Dojo屬於重量級開發框架,由框架核心(dojo)、基本控件庫(dijit)、擴展包(dojox)組成的,三部分都是由dojo官方提供;

jQuery屬於輕量級框架,本身僅包含框架核心,另外有一個與jQuery名下的獨立開源項目jQuery UI,它提供了最常用的8個控件。

也不是絕對,如果你像用jquery那樣用dojo,dojo它就是輕量級js庫了。

如果你用jqueryui+jquery,那jquery就是重量級js庫了。

2、編程方式

Dojo使用面向對象編程方式,爲大型應用開發提供了保證;

jQuery使用函數式編程方式,開發小型應用時更加靈活快捷。

Dojo在Javascript的基礎進行了面向對象能力的加強和規範化,提供了原生Javascript不具備的面向對象編程能力,比如父類方法重載(注意,不是重寫)、多繼承、構造函數調用鏈等等,並提供一系列面向對象編程規範的函數和屬性declare、inherit、declaredClass、extend等作爲dojo自身的編程基礎。在dojo中,所有的UI控件都被定義爲類,許多Dojo的核心功能庫也被定義爲類,這都是出於更好的代碼重用性的考慮。

Javascript從本質上來說屬於函數式編程語言,jQuery沒有改變Javascript的編程方式,使其學習成本大大降低。也並不是說jquery完全不能進行面向對象的編程,只是不見得如Dojo那麼直觀,用Jquery一樣可以用繼承,一樣在寫this。各家有各家的見地。

3、代碼風格

除去jQuery標誌性的「$」符號外,其實dojo與jQuery在一些常用API上的命名和參數列表基本相似。

4、學習成本

從上文分析,我們摘掉Javascript從本質上來說屬於函數式編程語言,jQuery沒有改變Javascript的編程方式,使其學習成本大大降低,有Javascript編程基礎很容易入門。但如果想做出有更高用戶體驗的界面,光靠技術是不行的。因爲DojoJquery兩者代碼風格相似,所以有Jquery基礎,學習Dojo並不是非常困難。反之有Dojo基礎,再來學習Jquery也不難。

5、適用範圍

Dojo在面向對象支持,代碼架構,多極模塊加載機制,控件完整性等方面有着較爲突出的特點,適用於企業級或是複雜的大型Web應用開發;

jQuery架構和機制相對簡單,易於開發,應用廣泛,適用於相對簡單的Web 2.0開發。

Dojo和jQuery分別爲複雜應用開發和簡單應用開發設計,但不絕對,要看開發者怎麼用。如果是UI 交互過多的應用,就選 dojo ,但如果選擇Jquery+Jquery UI也不失爲一種好辦法。

在實際項目中,需要根據具體需求來衡量,進行工具的選擇。

呵呵,貌似所有的對比,最好都是具體問題具體分析,本文也是。我可不想誤導大家。