我想用browserify组织我的项目导入,以便我有一个全局的utils变量,我可以从中调用和执行函数,就像jquery的$
一样。
所以最后我想要的是:
window.utils = ...
所以我可以使用utils.aFunction();
我还想将我的依赖项分成几个文件,例如,这将是我的项目:
libs
|_ math.js //Implements randomInt and RandomFloat methods
|_ connection.js //Implements isConnected method
utils.js //Calls all the required dependencies
到目前为止,我的想法是拥有这样的东西:
在libs/math.js
:
module.exports = {
randInt: function() {
return 4;
},
randFloat: function() {
return 4.1;
}
};
然后我会在utils.js
:
var math = require('./libs/math');
var connection = require('./libs/connection');
var libs = [math, connection];
var utils = {};
for (var i = 0; i < libs.length; i++) {
for (var key in libs[i]) {
utils[key] = libs[i][key];
}
}
window.utils = utils;
这实际上工作得很好,但我不知道它是否已经被库解决了。
我觉得有更有效的方法可以做到这一点,浏览器化的推荐方法是什么?
答案 0 :(得分:0)
将东西扔进util对象的代码看起来很奇怪,我不建议在所有必需的util子模块上循环。
var libs = [math, connection];
var utils = {};
for (var i = 0; i < libs.length; i++) {
for (var key in libs[i]) {
utils[key] = libs[i][key];
}
}
如果您使用webpack / browserify的常见js方法,您只需在配置文件中声明您的util是全局的,只需在util.js中添加所需的module.exports
//connect.js
module.exports = {
isConnected: function(){
return true;
}
};
//math.js
module.exports = {
randInt: function() {
return 4;
},
randFloat: function() {
return 4.1;
}
};
//utils.js
exports.math = require('./math');
exports.connect = require('./connect');
//test.js
var utils = require('./utils');
console.log(utils.math.randInt());
console.log(utils.connect.isConnected());