Как создать модули для Node.js?
У меня есть простой код:
var http = require("http");
var server = http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type" : "text/html"});
response.write("Hello World");
response.end();
});
server.listen(8000);
console.log("Server has started.");
Я хотел бы поместить этот код в server.js. Этот код должен быть МОДУЛЕЙ, который имеет много внутренних функций. Я хотел бы создать внутри него модуль server
и listen()
.
Я должен положить createServer()
внутри функции с именем listen()
.
Если у меня есть index.js, как я могу назвать этот модуль, а затем сделать что-то вроде server.listen()
?
Ответы
Ответ 1
Общим шаблоном для модулей nodejs является создание файла (например, mymodule.js
), поэтому:
var myFunc = function() {
...
};
exports.myFunc = myFunc;
Если вы храните его в каталоге node_modules
, его можно импортировать таким образом:
var mymodule = require('mymodule');
mymodule.myFunc(args...);
Итак, в вашем случае ваш модуль server.js
может выглядеть так:
// server.js
var http = require("http");
var listen = function(port) {
var server = http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type" : "text/html"});
response.write("Hello World");
response.end();
});
server.listen(port);
};
exports.listen = listen;
который будет вызываться:
// client.js
var server = require('server');
server.listen(8000);
Ответ 2
Старый пост, но если кого-то интересует, я бы предложил следующее решение:
//server.js
var http = require("http");
// As soon as method will be used outside the module, use "this":
this.listen = function(port) {
var server = http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/html"});
response.write("Hello World");
response.end();
});
server.listen(port);
};
//index.js
var module = require('./server');
module.listen(8000);
Ответ 3
// main.js
var server = require("server");
server.listen(8000);
console.log("Server has started.");
// server.js
var http = require("http");
var server = http.createServer(function(request, response) {
response.writeHead(200, {
"Content-Type": "text/html"
});
response.write("Hello World");
response.end();
});
module.exports = server;