节点js和小胡子

我正在尝试学习nodejs。 我想使用mustache和nodejs服务一个静态html文件。 我用这个代码创build一个启动服务器的模块:

var http = require("http"); function startServer(){ function onRequest(request,response){ console.log("Request received"); response.writeHead(200, {"Content-type" : "text/html" }); response.write("hello"); response.end(); } console.log("The server is running at http://localhost:8888"); http.createServer(onRequest).listen(8888); } exports.startServer = startServer; 

然后我在indexjs文件中这样做:

 var server = require("./server"); var util = require("util"); var fs= require("fs"); var mu = require("mu2"); function renderIndex(){ var streamIndex = mu.compileAndRender('index.html',{"name" : "Antonio"}); util.pimp(streamIndex, response); } server.startServer(renderIndex); 

我知道我正在做一些完全错误的事情,但不知道错误在哪里。 我试图合并2个不同的教程,我正在阅读有关nodejs。

PS:我知道我可以使用express或其他框架,但是我想从头开始使用nodejs来理解它是如何工作的。

首先,你的代码需要在某个时候调用renderIndex() 。 其次,除非胡须自上次查看之后被严重重写,否则mu.compileAndRender会给您一个string,您通常需要使用httpResponsewriteend方法发送该string。 util.pimp是一个错字(虽然承认有趣,足以令人钦佩); util.pump现在已经被弃用了,如果你有一个readStream ,首选的方法是用你想要发送给它的writeStream对应的参数来调用它的pipe方法(例如httpResponse )。

我想你一下子学的太多了, 你最好先学习如何使用express来处理路由和类似的东西(暂时忽略express的模板/渲染能力),然后,一旦你掌握了它,处理渲染和模板(小胡子是如此普遍和stream行,以至于你会认为Express的开发者已经整合了它,但由于某种原因,他们还没有)。