Requirejs -将多个文件合并为一个不依赖于Requirejs的js文件
requirejs - combine several files to single js file that not dependent on requirejs
我正在编写包含大量代码的jQuery插件。因此,我决定将代码分开,使其对我(开发人员)来说更加模块化。为此,我使用require.js。
现在我有6个js文件:
- utils.js
- base-row.jas
- a-row.js
- b-row.js
- my-table.js
- main.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;
};
});
现在我想从这些文件创建一个大的js文件,其中包含所有的6个文件没有任何依赖(除了jQuery,用户应该把它引用)。为此,我使用了r.js (http://requirejs.org/docs/optimization.html),结果我得到了一个依赖于require.js的大js文件(并包含对定义和要求的调用)。我遵循这个:http://requirejs.org/docs/faq-optimization.html#wrap和使用杏仁.js为了结合我的所有文件的使用,不依赖于require.js。这很好。
问题是为什么我需要所有的定义和需要的方法调用和almond.js?为什么优化器不能只连接函数结果(正如这个问题所描述的:为什么连接的RequireJS AMD模块需要加载器?)像这样:
(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文件是唯一的消费者。你觉得呢?
优化器中findNestedDependencies选项的默认值为"false",这意味着即使在脚本优化之后,仍然可能有一个嵌套的require
或define
调用需要模块加载器。外部依赖也需要加载器。
我同意,然而,如果findNestedDependencies被设置为"true",并且没有外部依赖是项目的一部分,优化器应该能够删除它对加载器的需求。
您可以只在文件中包含所需的文件。你可以通过调用getScript来实现。
$.getScript("my_lovely_script.js", function(){
//whatever you want here.
});
- 如何使用“RequireJS”中的“杏仁”生成一个文件
- 使用 requireJS 加载标准 JavaScript 文件
- 如何从 Webjar 解析多个 RequireJS 配置文件
- RequireJS:防止复制文本!内联后的文件
- RequireJS-使用CDN加载非脚本文件
- 使用requirejs加载一个包含多个类的文件(grunt-concat)
- Twitter Bootstrap js文件已加载,但无法与requirejs一起使用
- RequireJS路径中具有一个标识符的多个文件
- 为什么requirejs试图将“.js”附加到加载了!text插件的.jst模板文件中
- 使用 broccoli-requirejs 从同一棵树构建两个不同的文件时出错
- Adblock 和 Chrome 扩展程序使用 requireJS,但在扩展文件夹中找不到库
- 为什么我需要为 karma config 指定所有文件,即使它们加载了 requirejs
- 将现有的 JavaScript 文件转换为 requireJS
- 文件上传不适用于 RequireJS
- grunt-contrib-requirejs 是否旨在替换标准的 RequireJS 配置文件
- grunt requirejs 忽略了我的主配置文件中的路径
- 使用 RequireJS 加载不需要的文件
- Requirejs 优化器 - 包括某些文件和文件夹的嵌套依赖项
- 如何在其他文件中调用 RequireJS 函数?如何分离 RequireJS 文件
- 什么时候定义一个模块,什么时候只需要使用requireJS文件