2013-02-24 282 views
0

我有一個資源加載器JS文件在nodejs服務器上運行。我想放入一堆資源加載器將在初始化時加載到數組中的資源js文件。nodejs如何動態加載資源JavaScript文件

// resource loader js file 
    var Resources = (function() { 

    var resources = {}; 

    function Resources(){ 
    ... loading code here 

    // example of use after loading 
    resources[key].doStuff(); 
    } 
})(); 
module.exports.Resources = Resources; 

在同一個目錄中,開發人員可以根據需要放入新的resource.js文件。

// resource file 
var ResourceA = (function() { 

function ResourceA(){ 
... loading code here 

// example of use after loading 
    ResourceA.prototype.doStuff= function() { 
     // do stuff 
    }; 

})(); 
+0

要求(」 ./ resource.js')? – mpm 2013-02-24 16:39:29

+0

開發人員必須爲每個文件添加一個需求。想象一下它們有50個。我希望開發人員創建文件,而不必修改資源加載器文件。 – Kenoyer130 2013-02-24 16:48:40

回答

2

新的和更簡單:

安裝

npm install eloader 

使用

const eloader = require('eloader'); 
const db = require('db'); 

eloader.add('db', db) 
     .add('list', [2,8] 
     .run(__dirname + '\\routes\\'); 

的Git https://github.com/augustoeliezer/eloader

5

我不知道你的意思,但如果你想要的是加載了一堆模塊在服務器端的一個文件夾,我建這個小功能能夠做到這一點。

var path = require('path'), 
    walk = require('walk'); 

function findModules(opts,done){ 
    var walker = walk.walk(opts.folder, { followLinks: false }), 
     modules = []; 

    walker.on('file', function(root, stat, next) { 
     var current = path.join(root, stat.name), 
      extname = path.extname(current); 

     if(extname === '.js' && (opts.filter === undefined || opts.filter(current))){ 
      var module = require(current); 
      modules.push(module); 
     } 

     next(); 
    }); 

    walker.on('end', function() { 
     done(modules); 
    }); 
} 

,然後,你這樣稱呼它:

findModules({ 
    folder: 'path/to/folder', 
    filter: undefined // either undefined or a filter function for module names 
}, function(modules){ 
    // continue 
}); 

安裝walk

npm install walk --save 
+0

小代碼。 var module = require(「./"+ current);沒有這個,我得到一個錯誤說模塊沒有找到。 – 7383 2016-09-09 07:28:39