如何为Node.js创build模块?

我有一个简单的代码:

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

我应该把一个名为listen()的函数放在createServer() listen()

如果我有index.js我怎么能调用这个模块,然后做一些像server.listen()

nodejs模块的常见模式是创build一个文件(例如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); 

旧post,但如果有人仍然感兴趣,我会build议以下解决scheme:

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