RequireJS 优化文件 returns undefined
RequireJS optimized file returns undefined
我们正在尝试 minify/obfuscate 一个 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);
});
这有效,我们可以看到加载的对象被打印出来。
由于我们希望 optimize/obfuscate 代码,我们正在尝试 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);
});
我们得到 'undefined' 用于打印。
我不知道是不是原来的代码错了,还是我们没有正确使用优化器,还是我们完全搞错了概念。非常感谢任何帮助或指示。提前致谢。
回答我自己以防有人发现它有用:缩小文件正在导出这样的命名模块
define('SimpleMath',['exports'],t)..
我们必须
使用 require.config 或
将其作为命名模块加载
让它匿名,这似乎是我们案例的推荐选项。
我们正在尝试 minify/obfuscate 一个 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);
});
这有效,我们可以看到加载的对象被打印出来。
由于我们希望 optimize/obfuscate 代码,我们正在尝试 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);
});
我们得到 'undefined' 用于打印。
我不知道是不是原来的代码错了,还是我们没有正确使用优化器,还是我们完全搞错了概念。非常感谢任何帮助或指示。提前致谢。
回答我自己以防有人发现它有用:缩小文件正在导出这样的命名模块
define('SimpleMath',['exports'],t)..
我们必须
使用 require.config 或
将其作为命名模块加载
让它匿名,这似乎是我们案例的推荐选项。