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