javascript 如何为 Node.js 创建模块?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/6269901/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-25 20:06:04  来源:igfitidea点击:

How to create modules for Node.js?

javascriptnode.js

提问by dail

I have a simple code:

我有一个简单的代码:

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

I would like to put this code into server.js. This code has to be a MODULE that has many internal functions. I would like to create servermodule and listen()function inside it.

我想将此代码放入 server.js。此代码必须是具有许多内部功能的 MODULE。我想在其中创建server模块和listen()函数。

I should put createServer()inside a function called listen().

我应该createServer()在一个名为listen().

If I have index.js how can I call this module and then do something like server.listen()?

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

回答by Alnitak

The common pattern for nodejs modules is to create a file (e.g. mymodule.js) so:

nodejs 模块的常见模式是创建一个文件(例如mymodule.js),以便:

var myFunc = function() {
   ...
};

exports.myFunc = myFunc;

If you store this in the directory node_modulesit can be imported thus:

如果将其存储在目录中,node_modules则可以这样导入:

var mymodule = require('mymodule');

mymodule.myFunc(args...);

So, in your case, your module server.jscould look like this:

因此,在您的情况下,您的模块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;

which would be invoked:

这将被调用:

// client.js
var server = require('server');
server.listen(8000);

回答by zergius

Old post, but if someone is still interested in I would suggest following solution:

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

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

回答by Raynos

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