dojo-amd-converter工具包簡介

來源:互聯網
上載者:User
目前dojo-amd-coverter項目處於alpha版本階段,它是一個協助使用者實現dojo代碼版本升級的工具軟體。AMD模式比傳統的dojo模組文法具有更多的優勢,但是為了能夠充分發揮dojo的AMD特性優勢,開發人員經常面臨升級和重構大量舊版本的dojo原代碼來支援AMD新特性,例如從dojo.provide/dojo.require文法遷移到AMD模式下的define和require方法。我們在項目中講傳統的dojo方式升級到AMD模式,來利用這些最新版本的API特性,那麼能夠提供一套專門的轉化工具包(dojo-amd-converter),這些工作在Dojo 2.0版本的早期的背景下,具有非常重要的作用。值得注意的是,這個工具只能夠覆蓋人工轉化過程的70%-80%,並且一般情況優於標準的dojo使用方法。通常我們需要等待更多的時間才宣布我們的項目,但是在早期的aplph狀態這應該是有用的。我們知道這個工具有相當多的開放性問題需要進行修改,我們也邀請您一起來協助改進該項目。我們希望這種目前看來能夠協助將pre-AMD的代碼轉換為AMD代買的工具可以在整個社區的功能努力的下,成為一個代碼遷移的基礎工具,更加方便的從Dojo 1.x版本遷移到Dojo2.x。這項工作尚未開始,因為Dojo 2.0現在還沒有付諸實施。它是如何做到這一點的?基於一個規則的集合,利用Node.js, libxml.js和esprima,解析器將使得現有的Dojo的源碼樹轉化為以下內容1.non-AMD模組到AMD模組2.名字空間引用到模組引用3.傳統的HTML自訂屬性到HTML5相容的data-dojo-*4.傳統的i18n bundles到AMD bundles5.舊版本的dojo API到改進後相應的替代版本例如,在轉化之前你的dojo原始碼如下:
dojo.provide("my.namespace.i18n.Bundle");dojo.requireLocalization("dijit", "common");dojo.requireLocalization("foo.package", "Bundle");dojo.requireLocalization("bar.package", "Bundle2"); var foo = dojo.i18n.getLocalization("foo.package", "Bundle"),    bar = dojo.i18n.getLocalization("bar.package", "Bundle2", foo.bar),    baz = {        locale: "en-lol",        i18n: dojo.i18n.getLocalization("bar.package", "Bundle2", this.locale)    };
轉化之後,如下
define([    "dojo",    "dojo/i18n",    "dojo/i18n!bar/package/nls/Bundle2",    "dojo/i18n!dijit/nls/common",    "dojo/i18n!foo/package/nls/Bundle"], function (dojo, i18n, i18nBundle2, i18ncommon, i18nBundle) {     var foo = i18nBundle,        bar = i18n.getLocalization("bar.package", "Bundle2", foo.bar),        baz = {            locale: "en-lol",            i18n: i18n.getLocalization("bar.package", "Bundle2", this.locale)        };});
使用方法使用dojo-amd-converter工具,在Mac和Linux平台,可以參考一下步驟:1. 通過Git下載原始碼git clone --recursive https://github.com/SitePen/dojo-amd-converter.git2. 更改提供的config.js檔案,指明你的項目的一些基本的設定內容,如項目的源路徑和目標路徑3. 在項目倉庫的目錄下,運行提供的shell指令碼,指定剛才設定的設定檔./parse.sh config.js如果收到一個拒絕許可權的錯誤,你需要利用chmod更改這個shell指令碼:chmod +x parse.shconfig.js的配置選項1. exludePaths - 一個路徑數組參數,包含所有排除在處理之外的路徑列表。每個路徑應該是一個Regex2. srcDir - 待處理的檔案的根目錄3. distDir - 處理後檔案的輸出目錄4. printOutput - 列印輸出內容而不是把他發送到輸出目錄中5. makeDeclareAnonymous - 使得declare函數調用匿名而不是留下的第一個參數是匿名。這將避免declare函數建立任何的全域變數6. removeUnusedDependencies - 刪除轉換後未引用到的任何依賴關係7. onlyProcessTemplates - 僅處理template目錄下的HTML檔案AMD convert工具軟體目前無法運行在windows平台上,是因為他依賴於libxmljs包。參與方式這個項目仍處於早期階段,我們希望它能夠被用在向Dojo 2.0的轉換工作中。儘管我們目前有許多開放性的問題,但是我們已經明確在我們的項目中使用該工具。dojo-amd-converter這個工具與其他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.