如何在同一个变量下进行多次导入

时间:2016-03-23 01:14:46

标签: javascript browserify

我想用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;

这实际上工作得很好,但我不知道它是否已经被库解决了。

我觉得有更有效的方法可以做到这一点,浏览器化的推荐方法是什么?

1 个答案:

答案 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());