2013-02-10 2 views
0

У меня есть каталог с несколькими исходными файлами js, которые импортируются на веб-странице на стороне клиента. Мне также нужно импортировать все эти исходные файлы в приложение js-сервера на стороне сервера.Nodejs импортирует несколько классов с modules.export из нескольких исходных файлов

Я использовал следующий подход до сих пор

if('undefined' != typeof global) { 
    module.exports = global.Class= Class; 
} 

код прилагается к концу исходного файла

Однако мне нужно, чтобы избежать редактирования исходных файлов. Есть ли хороший подход к тому, как импортировать все классы, содержащие исходные папки? Вместо того, чтобы просто запускать исходные файлы и иметь modules.exports для каждого класса? Также есть способ предоставить каталог вызову require() и импортировать ли он все содержащиеся исходные файлы?

ответ

2

Экспортируя объекты в глобальное пространство имен, вы как бы идете против лучших стандартов в Javascript. Точка в module.exports такова, что вы можете использовать requireJS для импорта нужного вам объекта, вместо того, чтобы иметь каждый объект, доступный для вас. Поэтому я боюсь, что ответ отрицательный, запрос на вызов принимает только ссылки на один модуль (из-за возвращаемого значения функции, назначающей объект переменной).

«Хорошим» подходом было бы включение одного файла на клиенте, который содержит ваш основной код, который ссылается на модули/объекты, необходимые для продолжения работы. Исходные файлы затем будут включены как и когда они понадобятся.

1

файл: tool.js

(function(exports) { 

    exports.Hello = function(name) { 
     console.log('Hello %s', name); 
    } 

})(exports || window); 

файл index.js

require('./tool').Hello('username'); 
Смежные вопросы