我如何在JS中动态需要模块,实例化对象和调用函数

时间:2014-08-31 16:02:11

标签: javascript node.js commonjs

构建一个我一直需要的节点应用程序,并使用我构建的几个不同的比特币交换模块来做事。有时我想添加或删除交换,并且通过代码添加和删除交换的所有硬编码引用是很痛苦的。

有没有办法做这样的事情?很抱歉,如果这是一个显而易见的问题 - 我对节点和(编程)周末战士一般都比较新。提前感谢您的意见。

//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();

});

1 个答案:

答案 0 :(得分:0)

这是加载模型,控制器和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

希望有所帮助