2014-09-25 2 views
4

Я пытаюсь организовать приложение Node.js, разработанное с помощью Express 4, и я смущен о объеме модулей, которые импортируются с require().Node.js - Какова область применения модулей require() d?

Представьте себе, что я использую require('./services/user') импортировать службу в модуле, такие как маршруты/user.js:

var userService = require('./services/user'); 

Тогда я делать то же require('./services/user') в другом модуле маршруты/department.js.

Мой вопрос: является ли пользовательским сервисом тот же экземпляр в user.js и department.js, или у каждого из них есть собственный объект userService? То есть, как только вы экспортируете какой-либо элемент через module.exports = XXX, если вам нужен тот же файл, вы получите всегда один и тот же экземпляр? Не могли бы вы показать мне, где указано в документах Node.js?

+0

ли маршруты/user.js и маршрут/department.js требует того же кода? – DrakaSAN

+0

Да, в экспресс-модуле app.js: app.use ('/ users', userRoutes); app.use ('/ department', departmentRoutes); – codependent

ответ

3

Если я правильно понимаю ваш вопрос, у вас есть тезисы файлы:

. 
|_. app.js 
|_. routes/ 
    |_. user.js 
    |_. department.js 
    |_. services/ 
    |_. user 

И ваш код сделать это:

app.js call user.js 
    user.js call user 
app.js call department.js 
    department.js 

В этом случае, в первый раз требуется пользователю, это положить на кеш в require.cache.

Затем, во второй раз, вызывающий абонент получает require.cache['./service/user'], где хранится ваш объект.

Таким образом, у вас есть один и тот же объект в отделах.js и user.js.

Источник:

EDIT:

Другие полезные ссылки:

node.js require() cache - possible to invalidate?

+0

Спасибо! Отличный ответ. Итак, если я хорошо понял, если есть общий модуль предков, все импортированные модули выхватываются и распределяются между всеми из них? – codependent

+0

Правильно, если он является тем же самым экземпляром узла, который запущен, необходимый модуль совместно используется всем модулем. – DrakaSAN

+0

Как это работает в браузере? –

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