最近幾天我一直在玩requirejs。我想了解定義和要求之間的區別。什麼時候應該使用require()以及何時使用define()?
Define似乎允許模塊分離並允許依賴性排序被遵守。但它會下載所需的所有文件。雖然只需要在需要時加載所需的東西。
這兩個可以一起使用,併爲他們每個人使用的目的?
最近幾天我一直在玩requirejs。我想了解定義和要求之間的區別。什麼時候應該使用require()以及何時使用define()?
Define似乎允許模塊分離並允許依賴性排序被遵守。但它會下載所需的所有文件。雖然只需要在需要時加載所需的東西。
這兩個可以一起使用,併爲他們每個人使用的目的?
With define
您在require.js中註冊了一個模塊,然後您可以依賴其他模塊定義或需要語句。 使用require
您只需加載/使用可由require.js加載的模塊或JavaScript文件。 對於例子看看在documentation
我的經驗法則:
定義:如果你要聲明一個模塊應用程序的其它部分將取決於。
要求:如果你只是想加載和使用的東西。
從require.js source code(線1902):
/**
* The function that handles definitions of modules. Differs from
* require() in that a string for the module should be the first argument,
* and the function to execute after dependencies are loaded should
* return a value to define the module corresponding to the first argument's
* name.
*/
的define()
函數接受兩個可選參數(即表示模塊ID和所需的模塊的陣列的串)和一個必需的參數(工廠方法)。
工廠方法的返回必須返回您的模塊的實現(以與Module Pattern相同的方式)。
require()
函數不必返回新模塊的實現。
使用define()
你問像「跑,我作爲參數傳遞的功能,並指定任何返回給我傳球,但是,之前的ID,檢查這些依賴加載」。
使用require()
你說像「我通過具有以下依存關係的功能,檢查這些依賴運行前加載」。
require()
函數是您使用您定義的模塊的地方,以確保模塊已定義,但您並未在其中定義新模塊。
「定義」方法用於促進模塊定義 和 「規定」,用於處理依賴裝載
定義用於基於使用以下簽名的提議以限定指定或未指定的模塊方法:
define(
module_id /*optional*/,
[dependencies] /*optional*/,
definition function /*function for instantiating the module or object*/
);
另一方面要求通常用於在頂級JavaScript文件或模塊內加載代碼,如果您希望動態獲取相關性
有關更多信息,請參閱https://addyosmani.com/writing-modular-js/。
require()和define()都用來加載依賴關係。這兩種方法之間有一個主要區別。
它非常簡單,大家好
要求()方法用於立即運行功能。 define():方法用於定義在多個位置使用的模塊(重用)。
對於在define'd模塊內使用require還是在外部使用require有任何區別?如果在模塊內部使用它,爲什麼不直接在模塊定義中設置需求而不是使用require? – Petri 2014-01-28 06:48:33
爲什麼這個答案如此不同於我在這裏閱讀的http://requirejs.org/docs/api.html#deffunc ?? – 2014-02-13 18:44:02
@Petri,聽起來像你看到RequireJS的異步加載模塊的版本2行爲。 「RequireJS 2.0不會執行模塊的工廠函數(該函數傳遞給'define()'),直到有一個要求([])'調用請求它或者依賴於它的東西。」 https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#delayed – alxndr 2014-08-18 16:55:17