WOW*_*WOW 3 javascript node.js uglifyjs2
我在nodejs中有一个应用程序.在其中,我定义了一些跨多个文件共享的全局变量.例如:
//common.js
async = requires("async");
isAuthenticated = function() {
//...
return false;
};
//run.js
require("common.js");
async.series([function () {
isAuthenicated();
}], function () {
console.log("done");
});
Run Code Online (Sandbox Code Playgroud)
我希望将变量async和isAuthenticated变量缩小,但在所有文件中缩小为相同的东西.它看起来如下:
//common.min.js
a = requires("async");
b = function() {
//...
return false;
};
//run.min.js
require("common.js");
a.series([function () {
b();
}], function () {
console.log("done");
});
Run Code Online (Sandbox Code Playgroud)
如何在uglifyjs中做到这一点?
我正在循环遍历文件并uglifyjs $file -m "sort,toplevel" -c > $file.min在每个文件上使用命令.
var async = reuqire('async')在需要的地方使用module.exports在您需要的特定模块中使用.例如,最简单的形式(不使用uglifyify)
$ browserify run.js | uglifyjs -c > run.min.js
Run Code Online (Sandbox Code Playgroud)
请注意,如果您使用自己的代码,common.js则应使用相对路径来使用它var common = require("./common").
我建议你使用exports语法:
// common.js code
exports.isAuthenticated = function() {
//...
return false;
};
Run Code Online (Sandbox Code Playgroud)
当然,就像使用async.js一样使用它:
//run.js
var common = require("./common");
var async = require("async")
async.series([function () {
common.isAuthenicated();
}], function () {
console.log("done");
});
Run Code Online (Sandbox Code Playgroud)
假设两个common.js与run.js驻留在同一目录中.
你async.series在问题中使用的方式没有真正的优势.你可能只有:
//run.js
var common = require("./common");
common.isAuthenicated();
console.log("done");
Run Code Online (Sandbox Code Playgroud)
在Async系列中,您通常调用异步函数:
async.series([
function(callback){
// do some stuff ...
callback(null, 'one');
},
function(callback){
// do some more stuff ...
callback(null, 'two');
}
],
// optional callback
function(err, results){
// results is now equal to ['one', 'two']
});
Run Code Online (Sandbox Code Playgroud)
所以,我希望看到类似的东西:
// common.js code
exports.isAuthenticated = function(callback) {
//...
callback(null, false);
};
Run Code Online (Sandbox Code Playgroud)
然后
//run.js
var common = require("./common");
var async = require("async")
async.series([common.isAuthenicated], function (err, results) {
console.log("done with", results[0]);
});
Run Code Online (Sandbox Code Playgroud)
我通常喜欢不同的"语法"
// an example using an object instead of an array
async.series({
one: function(callback){
setTimeout(function(){
callback(null, 1);
}, 200);
},
two: function(callback){
setTimeout(function(){
callback(null, 2);
}, 100);
}
},
function(err, results) {
// results is now equal to: {one: 1, two: 2}
});
Run Code Online (Sandbox Code Playgroud)
但这是你的电话.异步示例来自https://github.com/caolan/async#seriestasks-callback
| 归档时间: |
|
| 查看次数: |
2036 次 |
| 最近记录: |