我们正在尝试最小化/模糊化js库,以便我们可以在其他项目中重用它。背景信息:我已经做了一些js,但是我是AMD或requireJS的新手。
这是该库的简化版本,仅保留格式:
(function (global, factory) {
if ( typeof exports === 'object' && typeof module !== 'undefined'){
factory(exports);
}
else if (typeof define === 'function' && define.amd){
define(['exports'], factory);
}
else{
global['SimpleMath'] = factory({});
}}(typeof global !== "undefined" ? global : self.window || self.global,
(function (exports) {
'use strict';
exports.square = function square(value){
return value * value;
}
exports['square'] = exports.square;
return exports;})));
在main.html里面
requirejs(['./libs/SimpleMath'], function (smath){
console.log(smath);
console.log(require.s.contexts._.defined);
});
这有效,我们可以看到加载的对象已打印出来。
由于我们希望对代码进行优化/模糊处理,因此我们正在尝试requirejs的优化器(单个js文件):
node ../../r.js -o name=SimpleMath out=SimpleMath.min.js baseUrl=.
我们得到的东西看起来像是缩小的文件。 但是,如果现在我尝试使用相同的方法加载缩小版本:
requirejs(['./libs/SimpleMath.min'], function (smath){
console.log(smath);
console.log(require.s.contexts._.defined);
});
我们得到“未定义”的打印输出。
我无法确定原始代码是否错误,或者我们没有正确使用优化器,或者我们完全弄错了概念。非常感谢任何帮助或指示。预先感谢。
答案 0 :(得分:0)
回答自己,以防有人发现它有用:缩小的文件正在导出这样的命名模块
define('SimpleMath',['exports'],t)..
我们不得不
使用require.config或
将其设为匿名,这似乎是我们案例中的推荐选项。