Dojo中AMD模組化和本地變數的命名規範

來源:互聯網
上載者:User

        用戶端Web應用開發的健壯性已經變得越來越強,有很多工具可以用來增強終端客戶的沉浸感和互動性的使用者體驗。隨著使用者數量的激增,高效編寫代碼的重要性尤為突出。採用dojo以及其他AMD相容的工具,使編寫良好模組化的前端代碼變得簡單容易。當採用AMD的開發模式,開發人員可以容易的編寫出模組化的前端代碼,但是需要面臨兩方面的問題,如:一、合理命名模組;二、對引用某模組的本地變數確定相應的命名規範。

        首先,複習一下AMD技術的一些專業術語:

        簡單地說,包的概念就是模組的集合,例如:dojo, dijit和gridx。然而,不同於模組目錄中的各個簡單集合,包本質上還包括一些額外的特性,能夠顯著增強模組的可移植性和易用性。

        包主要有三個配置選項,包括:name,包的名稱;location,包的位置,可以是對baseUrl的相對路徑,也可以是絕對路徑;main,它是一個選擇性參數預設值為”main”,用於發現和正確的載入模組使用者嘗試引用的包。例如:代碼中寫到require “dojo”, 實際上會載入的檔案是”dojo/main.js”。

         管理模組是至關重要的,因為每個包的依賴數量必須限制在一定範圍內。如果有一個包依賴於其他所有的包,那麼這個包將很難被拿出來單獨使用。模組也需要通過一種有意義的方式進行打包,例如:對於同一個包,不要即包含數學符號PI的運算模組,也包含表單控制項的顯示模組。

模組

        一個模組可以使一個類、一個函數、一個包含屬性和方法的對象,也可以僅僅是一段可啟動並執行代碼。模組的功能是強大的,可以使程式的低耦合度降低,並且易於重用。

模組的名稱是自動從它的檔案路徑名中提取出來的,例如:一個模組的檔案路徑為art/shapes.js,那麼它將通過名稱”art/shapes”被模組引用。更多關於模組命名、定義和引用的詳細資料請參見AMD API specification一文。

        Dojo的載入器使得模組的重新導向過程變得簡單,模組的重用工作只需要複製模組的檔案到目標路徑即可。例如:將模組檔案art/shapes.js移動到模組geometry中變成geometry/shapes.js,引用該模組只需要調用新的模組標示”geometry/shapes”。如上所示,將模組在不同的包之間移動變得容易,也使得解耦合和代碼重用變得簡單易行。

        Dojo載入器允許模組與本地變數名之間建立映射關係,選擇變數名稱和打包代碼對於開發人員來說是極其重要的決定。以下將通過兩三分鐘的介紹,探索這個領域的更多細節,使dojo開發人員從中受益。

應該如何命名模組?

        進行模組開發時,採用合適的命名規範會提高開發的效率,能夠保證模組的API直觀清晰,同時也能減少模組名稱的額外記憶負擔。此外,它還能夠使開發人員的時間花在更有意義的工作上,例如:項目最佳化和缺陷修複。當決定如何命名模組的時候,開發人員需要考慮諸如“是否為類建構函式類型”,“是否為一個混入類型(mixin)”,這些東西可以改變模組推薦的命名規範。

        如果一個模組為類的建構函式類型,如:widget,它應該按照大寫開頭駝峰式命名格式(UpperCamelCase)來命名;如果是一個混入類型(mixin),應該依照底線(_UnderscoreMixin)格式;如果都不是,應依照小寫開頭的駝峰(lowerCamelCase)命名格式,典型的例子為單體。

        除了模組的合理命名外,利用require的回呼函數引用模組時,對該模組映射的變數進行標準的命名方式也是一個好的習慣。在dojo開發中,這項工作被稱為”首選參數別名(Preferred Arg Alias)”,其中一部分被推薦在dojo.XX AMD modules spreadsheet文中。這篇文章強調絕大部分模組的命名必須準確和有意義,模組的首選參數別名與模組名稱相似,即使無法準確描述,也必須將模組用一個有意義的方式打包。我們正努力改善這一點,關於這一點的工作可以在”1.x to 2.0 migration document”一文中找到。選擇一致的本地變數名稱的好處如下:

  •  對建構函式(constructions)、混入(mixin)和單體(Singletone)維持推薦的命名規範
  •  為源模組提供一個很容易相關的名稱
  •  選擇一致的本地變數名可以更容易地複用dojo的例子和教程

        模組的本地變數名可以很直接地引用到包含的模組。有時候一個模組標示無法通過一個理想的本地變數來命名。例如,如果這個名稱是一個javascript中的保留字array,推薦做法是增加一個尾碼名變成arrayUtil。或者,如果模組名包含連字號,例如”dojo/domo-construct”,推薦的做法是命名為正確的javascript變數domConstruct。這些本地變數僅在局部引用這些返回的模組依賴項,因此可以被任意命名,但是按照一致性格式可以有效地簡化AMD方法。
結論

        採用適當方式命名模組並將其映射到調用函數的傳入參數上,以及採用有意義的方式進行打包,能夠使代碼更有可移植性並且易於維護和理解。想更深入瞭解AMD技術,可在SitePen組織的Dojo workshop中找到協助。對於已有的一些舊代碼,需要遷移到新版本的dojo中,或重新編寫,或調試,都可以在SitePen的網站中找到支援和協助。

        附上原文連結: [http://www.sitepen.com/blog/2012/12/07/amd-module-and-local-variable-naming-conventions/]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.