2015-06-21 121 views
0

這個問題是關於在客戶端加載Javascript模塊。實現這一目標的兩種流行的方法是採用:Nodejs模塊加載器與客戶端AMD加載器如Requirejs

  1. RequireJS
  2. NPM(節點包管理器)的出口,並要求文件

第一個選項一直對我很好工作。但是,最近我注意到越來越多的人使用第二種選擇。

當我嘗試使用構建工具(browserify)的第二個選項時,我注意到構建的文件包含大量冗餘代碼,就像我自己的代碼中的一個包裝。現在我不確定這是否是最好的選擇,因爲如果所有的JavaScript文件都以這種方式修改,我的項目的整體大小將會增加,並且加載時間也會增加。這是我應該擔心的嗎?這兩種選擇之間還有其他的區別嗎?

回答

0

主要理由使用CommonJS的(Node.js的模塊系統)是,在我看來:

  1. 您享受Node.js的生態系統 - 特別是NPM(易扶養管理,極大的模塊化設計)而且還包括僅適用於CommonJS/Node.js代碼(摩卡等)的框架。
  2. 它允許您輕鬆地在客戶端和服務器之間共享代碼(代碼完全相同)。有了requirejs,情況並非如此(至少不是直接)。這通常不是很有用,但它在一些極少數情況下可以提供幫助。

CommonJS + Browserify和requirejs之間有一個很大的區別,就是前者將所有代碼捆綁到一個大文件中。您不能像使用requirejs那樣異步加載模塊。這並不總是一件壞事(有人可能會爭辯說,對JS的單個請求比多個請求更好,即使單個請求導致某些實際未使用的代碼)。

關於大小的問題:使用requirejs,你也有一些開銷(例如,你必須包含require.js腳本,它類似於你已經看到的由Browserify創建的添加)。在大多數情況下,這兩者都是微不足道的,但這取決於你正在建造的東西。