Подтвердить что ты не робот

Как создать модули для 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()?

4b9b3361

Ответ 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;