2013-02-24 3 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

+0

Разработчик должен добавить требование для каждого файла. Представьте, что их 50. Я хочу, чтобы разработчик просто создавал файлы и не нуждался в изменении файла загрузчика ресурсов. – Kenoyer130

ответ

2

Новые и более простой:

Установить

npm install eloader 

Usage

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

Смежные вопросы