2014-04-22 75 views
0

我想用JSON文件動態加載和調用Javascript函數。這個想法是構建一個插件框架,讓其他人通過編寫一個函數和更新JSON文件來添加功能。動態加載Javascript函數

例如,下面的JSON:

{ 
"plugins" : { 
    "random" : { 
     "name" : "Random number generator", 
     "hook" : "random" 
    } 
} 
} 

...及以下插件:random.js

module.exports.run = function() { 
    return Math.round(Math.random() * 100); 
} 

我希望能夠解析JSON文件和調用任何插件的運行功能。如何隨機加載和調用運行功能?

回答

2

根據您上面所述,只需require該模塊。

var plugins = require('./plugins.json'); 
var pluginKeys = Object.keys(plugins); 
for (var i = 0; i< pluginKeys; i++) 
    plugins[pluginKeys[i]].func = require('./'+[pluginKeys[i].hook+'.js').run; 

// could add extra path to above as well. You could also leave off the '.js' 

那麼你就只是:

var randomTheHardWay = plugins.random.func();