Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在JS中动态地要求模块、实例化对象和调用函数_Javascript_Node.js_Commonjs - Fatal编程技术网

Javascript 如何在JS中动态地要求模块、实例化对象和调用函数

Javascript 如何在JS中动态地要求模块、实例化对象和调用函数,javascript,node.js,commonjs,Javascript,Node.js,Commonjs,构建一个节点应用程序,在该应用程序中,我始终需要使用我构建的多个不同比特币交换模块,并使用这些模块进行操作。有时,我想添加或删除一个交换,而要通过代码添加和删除所有硬编码的对交换的引用是很痛苦的 有没有办法做到这一点?抱歉,如果这是一个明显的问题-我对node和(编程)周末战士一般来说是比较新的。提前感谢您的投入 //config.js var config = {} config.exchanges = ['bitfinex', 'bitstamp', 'btce']; module.

构建一个节点应用程序,在该应用程序中,我始终需要使用我构建的多个不同比特币交换模块,并使用这些模块进行操作。有时,我想添加或删除一个交换,而要通过代码添加和删除所有硬编码的对交换的引用是很痛苦的

有没有办法做到这一点?抱歉,如果这是一个明显的问题-我对node和(编程)周末战士一般来说是比较新的。提前感谢您的投入

//config.js    
var config = {}
config.exchanges = ['bitfinex', 'bitstamp', 'btce'];
module.exports = config;

//app.js
var config = require('./config');
var _= require('underscore');

_.each(config.exchanges, function(exchange){

    //obviously not correct, but how would I accomplish something like this?

    var Exchange = require('./api/exchange');
    var exchange = new Exchange();
    exchange.do_stuff();

});

这是一段在没有引用的情况下加载模型、控制器和api文件的代码:

  # Bootstrap models
  models_path = __dirname + "/models"
  fs.readdirSync(models_path).forEach (file) ->
    require models_path + "/" + file  if ~file.indexOf(".js")

  # Bootstrap controllers
  controllers_path = __dirname + "/controllers"
  fs.readdirSync(controllers_path).forEach (file) ->

    app.controllers[file.slice(0, -3)] = require(controllers_path + "/" + file)  if ~file.indexOf(".js")
    return

  # Bootstrap api
  api_path = __dirname + "/api"
  fs.readdirSync(api_path).forEach (file) ->

    app.api[file.slice(0, -3)] = require(api_path + "/" + file)  if ~file.indexOf(".js")
    return

希望它对您有所帮助

您不需要一次又一次地
要求
模块,将
交换
设为全局变量(如
配置
)。您应该将
exchange
字符串(包含
'bitfinex'
等)传递给
exchange
构造函数,并且可能不会用
exchange
实例覆盖
exchange
字符串(但使用不同的变量名)