有時我遇到了某些JavaScript庫中存在的特定模式。也許這是一個巧合,但我已經在依賴關係庫中看到它。語法如下(樣品從骨幹這對下劃線hard依賴拍攝)具有依賴關係的庫的Javascript模式
(function(root, factory) {
if (typeof define === 'function' && define.amd) {
define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
root.Backbone = factory(root, exports, _, $);
});
} else if (typeof exports !== 'undefined') {
var _ = require('underscore');
factory(root, exports, _);
} else {
root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));
}
}(this, function(root, Backbone, _, $)
有人能解釋爲什麼使用這種模式。我不太瞭解的部分是使用變量factory
,爲什麼要測試屬性define.amd
以及爲什麼導出在define(['underscore', 'jquery', 'exports']
中作爲依賴加載。
我對AMD模塊很熟悉,但是看到這讓我想知道如果我正在寫一個帶有依賴關係的庫,是否應該使用相同的模式,或者即使我根本沒有依賴關係,也應該每次使用這種模式。