Dojo學習筆記 1.模組與包

來源:互聯網
上載者:User

Dojo是一個非常強大的物件導向的JavaScript的工具箱, 建議讀者能夠去補充一下JavaScript下如何使用OO進行編程的, 這對於你以後閱讀Dojo Source有很大的用處。

Getting Started

1: 把Dojo加入到我們的Web程式中

1. 標誌<script type="text/javascript">
djConfig = { isDebug: false };
</script>

djConfig是Dojo裡的一個全域對象, 其作用就是為Dojo提供各種選項, isDebug是最常用的屬性之一, 設定為True以便能夠在頁面上直接看到調試輸出, 當然其中還有些屬性與調試有關, 這裡就不羅索了

2. 引用 dojo 的啟動代碼

<script type="text/javascript" src="/yourpath/dojo.js" />

這樣你就引用了dojo的代碼, 並可以直接使用其中部分常用的對象, 下載下來的dojo.js是壓縮(remove comments and space)後的代碼, 要閱讀的話,建議閱讀dojo.js.uncompressed.js, dojo.js大概有127K, 而未壓縮前有211K, ok, 為什麼會這麼大呢, 原來其已經把部分常用的模組整合進dojo.js裡, 因此顯得大了一點, build.txt裡就說明了預設的dojo.js包含了哪些模組

3. 聲明你所要用到的包

<script type="text/javascript">
 dojo.require("dojo.math");
 dojo.require("dojo.io.*");
 dojo.require("dojo.widget.*");
</script>

你就把這些代碼當成是java的import語句或C#中的using語句一樣, 如果你不require的話, 而模組本身又沒有整合在dojo.js中, 是會出現指令碼錯誤的喔

2. 針對不同需求提供的預整合包

Dojo本身是由許多模組所組合而成的, 但是由於使用者需求的多樣性, dojo針對不同的需求而提供了不同的版本, 使用者在下載dojo的時候就看見可以選擇很多的版本, 比如Ajax版和Widget版, 每個版本最重要的區別就在於dojo.js檔案, 但是除此之外, 每一個版本都是全功能的, dojo.js根據版本的不同而整合進了不同的模組

3. 直接擷取Dojo的最新原始碼

首先你必須安裝 Subversion, 當Subversion在你的電腦上能夠正常工作後,你就可以通過如下命令下載dojo的原始碼:

svn co http://svn.dojotoolkit.org/dojo/trunk/

這會在你的目前的目錄下建立一個 trunk 的目錄; 如果你希望直接Get到目前的目錄, 用這個命令:

svn co http://svn.dojotoolkit.org/dojo/trunk/ .

或者你希望Get到目前的目錄下的 MyDir 目錄, 用這個命令:

svn co http://svn.dojotoolkit.org/dojo/trunk/ MyDir

模組與包

模組

Dojo的代碼被劃分為邏輯單元稱之為模組, 這有點類似於Java中的package,除了dojo的模組能夠包含類 (類似於java中的classes)和簡單函數

比如: 模組"dojo.html"包含了一系列的函數, 比如dojo.html.getContentBox(), 模組"dojo.dnd"包含了一系列的HtmlDragObject的類

注意名稱約定, 函數的首字母為小寫字母,類的首字母為大寫

模組也可以稱之為"命名空間"

在多數情況下, dojo的模組只需要定義在一個檔案就可以了, 但有時, 一個模組可能劃分到多個檔案, 比如: 模組dojo.html, 本來是定義在一個檔案中, 可是由於功能的增強, 檔案逐漸層大, 我們不得不將其拆分為多個檔案, 這主要是為效能考慮, 以便瀏覽器可以只下載其需要用到的代碼, 不幸的是其實現細節對於dojo的使用者看起來不那麼透明, 你必須知道你想要用到的功能到底是包含在哪個檔案, 然後才能require並使用它

這樣的每一個檔案都稱之為一個包

dojo.require("dojo.html.extras")

將引用檔案 src/html/extras.js, 這將定義模組 dojo.html 的若干(並非所有)函數

據我所知, 儘管單個檔案可以定義包裡的多個類, 單個指令檔不能定義多個模組 (在Java可以等效於在一個檔案中定義2個類), 並且, 包的名稱和模組的名稱可以不同, 比如: 包dojo.widget.Button定義了dojo.widget.html.Button

基本上你應該這樣認為, 包和模組儘管密切相關, 但是是兩個完全不同的實體

為什麼會有模組和包這樣的概念?

為什麼會有模組和包這樣的概念? 為了滿足你的應用程式只需要載入其所用到的東西的需求, 充分利用模組化設計的優點, dojo維護了最小的足印以便仍能提供你所需要的功能, 為什麼要你的使用者浪費時間去下載用不到的JavaScript, 當一個包就是一個js檔案時, 一個模組本質上就是一個命名空間, 比如: dojo.style 或 dojo.html.extras

多數簡單情況下, 一個包包含了一個模組, 但更常見的是, 一個模組可能被拆分為幾個包檔案

利用包和模組, 將能確保你能夠交付最相關的功能代碼, 最小程度的減少代碼的膨脹和消除由此帶來的不好的使用者體驗,這就是模組設計的主要目標, 通過模組化, 你能夠引入自訂模組(你自己擁有的 JavaScript 工具), 並且維護模組對於核心程式碼程式庫基本不會產生什麼影響

另外, Dojo的模組系統也提供了內建的機制來使用代碼提供命名空間, 比如, 通過模組dojo.event定義的Dojo的事件系統

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.