我正在编写包含大量代码的jQuery插件。因此,我决定将代码分开并使其更加模块化(开发人员)。为此我使用require.js。
现在我有6个js文件:
文件1到5定义了JavaScript“类”,它们之间具有相关性。操作所有音乐会的“主要”类是my-table.js。 main.js只依赖于my-table.js并从中创建一个插件:
require([
'my-table'
], function(MyTable) {
jQuery.fn.myTable = function(options) {
var table = new MyTable(this, options);
this.data('myTable', table);
return this;
};
});
现在我想从这些文件中创建一个包含所有6个文件但没有任何依赖性的大js文件(除了用户应该引用它的jQuery)。为此,我使用了r.js(http://requirejs.org/docs/optimization.html),结果我得到了一个依赖require.js的大js文件(包含对define和require的调用)。我遵循这个:http://requirejs.org/docs/faq-optimization.html#wrap并使用almond.js将我的所有文件组合起来用于不依赖于require.js的用法。这很好。
问题是为什么我需要所有的define和require方法调用以及almond.js?为什么优化器不能仅连接函数结果(如本问题所述:Why do concatenated RequireJS AMD modules need a loader?),如下所示:
(function() {
var utils = «function() {
....
return Utils;
}»();
var baseRow = «function(A) {
....
return BaseRow;
}»(utils);
....
....
var myTable = .....
//<--This is require call and therefore doesn't return a thing
(function(MyTable) {
jQuery.fn.myTable = function(options) {
var table = new MyTable(this, options);
this.data('myTable', table);
return this;
};
})(myTable);
})();
作为这个过程的结果,我决定检查并手动将所有文件合并到一个缩小的文件中。我最终得到一个小于3k的文件,然后是杏仁版! 我没有找到r.js优化器背后创建require.js相关结果的逻辑。在我的情况下,没有人需要使用任何文件,我的主要js文件是唯一的消费者。你觉得怎么样?
答案 0 :(得分:-1)
您可以只包含文件中所需的文件。您可以使用getScript调用来执行此操作。
$.getScript("my_lovely_script.js", function(){
//whatever you want here.
});