如何为Node.js创建模块

How to create modules for Node.js?

本文关键字:创建 模块 js Node      更新时间:2023-09-26

我有一个简单的代码:

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中。这段代码必须是一个具有许多内部函数的MODULE。我想在里面创建server模块和listen()函数

我应该将createServer()放入一个名为listen()的函数中。

如果我有index.js,我怎么能调用这个模块,然后做server.listen()之类的事情?

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);

旧帖子,但如果有人仍然感兴趣,我建议以下解决方案:

//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);
// 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;