2012-09-06 27 views
6

我有一個JavaScript項目中大多數模塊使用一些第三方的庫爲「全球性」的依賴(尤其是jQuery和jQuery插件)提示爲JavaScript應用程序遷移到使用AMD(如requirejs)

我想「清理」項目(將所有庫表示爲requirejs依賴關係),但是在我的情況下,這是一個大任務(大量文件,大量第三方庫)。

我怎樣才能使遷移更容易/更快?

  • 我可以「假」採用AMD的依賴性在剛剛加載它們的模塊包裹第三方庫(與訂單!插件?)
  • 它是安全的混合是加載第三方庫模塊作爲直接使用全局的模塊和模塊?
  • 如果我想讓事情自動化,是否有任何工具可以用來'解析'requirejs模塊來告訴我是否使用了特定的符號?

編輯:我最後一個問題的意思是「是否有可能自動重寫我的js文件,以便明確地導入依賴項而不是依賴於瀏覽器全局變量?

+0

你能解釋一下你的最後一個問題。你想分析模塊的原因是什麼? –

+0

@AndreasKöberle我編輯了我的問題,希望能夠澄清一些事情。 – phtrivier

回答

0

我有一個similar question關於需要在AMD模塊中封裝第三方代碼。我的結論是,在我的情況下(大型骨幹應用)沒有任何好處。所以你應該問問自己,你是否真的需要按照AMD的方式導入jquery。這將以您每次導入jquery的模塊結束,這是很多容易出錯的樣板代碼。

因此總之,使用AMD代碼將無論如何都是毫無意義的。

+0

不正確。將jQuery包含到模塊的每個定義中*都是有用的,特別是在涉及到單元測試時。另外,如果你使用Backbone,你應該使用jQuery的唯一文件就是視圖。 – lededje

1

我可以「假」使用AMD依賴通過包裝模塊第三方庫,只是加載它們

當然可以,RequireJS有墊片配置,這只是設計用於。

看看這篇文章它會幫助你組織你的JavaScript代碼RequireJS http://www.stefanprodan.eu/2012/09/intro-requirejs-for-asp-net-mvc/

+0

根據我的理解,'shim'選項用於設置*第三方庫(規範示例是Backbone,需要加載jquery)之間的依賴關係*,而不使用'order!'插件。我希望在最後使用shim *,但目前我不能,因爲我不能表達我的組件依賴於lib(我沒有'define([「backbone」],function(Backbone) ',例如)。我仍然使用'order!'插件使用1.0,但我想解決這個問題。 – phtrivier

相關問題