簡體   English   中英

Nodejs模塊加載器與客戶端AMD加載器(如Requirejs)

[英]Nodejs module loader vs client-side AMD loader like Requirejs

這個問題是關於在客戶端加載Javascript模塊。 實現此目的的兩種流行方法是:

  1. 需求JS
  2. NPM(節點程序包管理器)導出並需要文件

第一種選擇對我一直很有效。 但是,最近我注意到越來越多的人使用第二種方法。

當我使用構建工具( browserify )嘗試第二個選項時,我注意到所構建的文件包含許多冗余代碼,例如圍繞我自己的代碼的包裝器。 現在,我不確定這是否是最佳選擇,因為如果以這種方式修改我的所有javascript文件,項目的整體大小都會增加,加載時間也會增加。 這是我應該擔心的事情嗎? 兩種選擇之間還有其他區別嗎?

我認為,使用CommonJS(Node.js模塊系統)的主要原因是:

  1. 您喜歡Node.js生態系統-尤其是NPM(輕松的依賴管理,出色的模塊化設計),還喜歡僅適用於CommonJS / Node.js代碼(mocha等)的框架之類的東西。
  2. 它使您可以輕松地在客戶端和服務器之間共享代碼(完全相同的代碼)。 使用requirejs並非如此(至少不是直接如此)。 通常這並不是真正有用的方法,但是在極少數情況下可以提供幫助。

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

關於大小問題:使用requirejs,還存在相當大的開銷(例如,必須包含require.js腳本,該腳本與Browserify創建的添加內容相似)。 在大多數情況下,兩者都可以忽略不計,但這當然取決於您要構建的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM