-1
私は、次のコードを持っている:このjavascriptモジュールを明らかにするモジュールパターンに変更するにはどうすればよいですか?
server.js:
var http = require("http");
function start() {
function onRequest(request, response) {
console.log("Request received.");
response.writeHead(200, { "Content-Type": "text/plain" });
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
exports.start = start;
index.js:私は暴露のモジュールパターンにserver.jsをオンにしてみてください
var server = require('./server');
server.start();
:
をvar http = require("http");
var server = function() {
function start() {
function onRequest(request, response) {
console.log("Request received.");
response.writeHead(200, { "Content-Type": "text/plain" });
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}
return {
start: start
};
}();
ですが、エラーが発生します:TypeError: server.start is not a function
私は間違いをしていますか?
ありがとうございました。
をエクスポートするのを忘れましたか?これは、実際のモジュールのような素敵なものが出る前に、時を経て後退しています。 – ndugger
あなたは 'server'をエクスポートしていませんか? 'var server = require( './ server');'は、あなたのモジュールが何も 'export 'しないので、空のオブジェクトをインポートします。あなたは、モジュール内の変数はモジュールに対して*ローカルであることを知っていますか?エクスポートされたものだけが他のモジュールからアクセスできます。したがって、ここでIIFEを追加してスコープ 'start'を減らしても、値は追加されません。コードを不必要に複雑にするだけです。 –
「実際のモジュール」の意味を説明していただけますか?私はそれを不必要に複雑にしようとはしていませんが、Revealing Module Patternがそれを手伝ってくれると思いましたか? – Sako73