2015-05-20 2 views
1

У меня есть модуль, который выглядит примерно так:Должен ли я создать экземпляр модуля или нет?

module.exports = { 
    property1: {}, 
    property2: {}, 
    fucnct1: function(one, two){ 
     this.property1 = one; 
     this.property2 = two; 
    } 
} 

я сделать следующий

var myModule = require("./myModule.js"); 

var api = { 
    handleRequest: function(req, res){ 
     // someValue1 and someValue2 are different for each request 
     myModule.funct1(someValue1, someValue2) 
    } 
}; 

// Handle the http request. 
handleRequest = function(req, res){ 
    var apiInst = Object.create(api); 
    apiInst.handleRequest(req, res); 
}; 

// Start the server 
var server = http.createServer(handleRequest); 
server.listen(port, function(){ 
    console.log("Listening on port " + port || "Could not start server"); 
}); 

Когда 2 или больше людей ударили сервер в то же время, они разделяют те свойства (myModule.property1 и myModule.property2) в модуле или они уникальны для каждого пользователя?

Должен ли я создавать экземпляр этого модуля для каждого пользователя или нет?

+0

Из моего понимания 'require (module_name)', модуль выполняет только первый раз, когда вы вызываете запрос. Это заставляет 'require' почти действовать как глобальная переменная, которую вы можете импортировать. Например, если вы устанавливаете 'property1' в' Math.random() ', то каждый раз, когда вы вызываете' require' и получаете доступ к 'property1', во время этого запуска программы это будет одинаково. Существует метод, который вы можете использовать для «удаления» кэшированных модулей, но мне нужно будет его найти. – Randy

+0

Перечитав свой вопрос, я думаю, это не касается вашего вопроса, поскольку вы не вызываете 'require' несколько раз. – Randy

ответ

0

Да, оба свойства являются общими. Вы действительно не можете создавать экземпляры модуля, но вместо этого вы можете экспортировать объект и создать экземпляр этого.

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