如何为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;