【问题标题】:node js and mustache节点 js 和小胡子
【发布时间】:2012-09-19 20:27:30
【问题描述】:

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

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

我知道我做错了什么,但不知道错误在哪里。我试图合并我正在阅读的关于 nodejs 的 2 个不同的教程。

P.S:我知道我可以使用 express 或其他框架,但我想从头开始使用 nodejs 以了解它的实际工作原理。

【问题讨论】:

  • 告诉我们它真正失败的地方。您是否在浏览器中加载了任何类型的页面但模板失败?什么都没有显示?
  • 它根本不加载页面。我知道我应该调用函数renderIndex,但即使我调用它看起来服务器也无法加载页面。整个想法只是为了学习,这就是我不想使用express或其他框架的原因。

标签: javascript node.js mustache


【解决方案1】:

首先,您的代码需要在某个时候调用renderIndex()。其次,除非自从我上次查看 mustache 后,它被认真重写,mu.compileAndRender 会给你一个字符串,你通常需要使用 httpResponses writeend 方法发送。 util.pimp 是一个错字(尽管可以肯定的是,这很有趣,令人钦佩); util.pump 现在已弃用,如果您有 readStream,首选方法是调用其 pipe 方法,并使用与您要发送到的 writeStream 对应的参数(例如 httpResponse) .

我认为你试图一次学习太多;你最好先学习如何使用express 来处理路由和类似的东西(暂时忽略 express 的模板/渲染能力),然后,一旦你掌握了它的窍门,就开始渲染和模板( mustache 是如此普遍和流行,以至于您认为 express 的开发人员应该已经集成了它,但由于某种原因他们没有)。

【讨论】:

  • 你认为使用express会帮助我学习nodejs吗?我的想法是直接开始使用node,没有框架,恐怕会像jquery和javascript。
  • 这是一次需要学习多少细节的问题。有时最好先从原始水平开始,然后再学习一些基于它的东西;其他时候则相反。对于大多数人来说,最好在它们之间交替使用;看一些“高级”的东西(例如 express 或 jquery),理解它,然后思考它的作用如何转化为“低级”的东西(例如节点的 http 模块或 DOM API)。关键是要避免不同的概念层面相互疏远。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
相关资源
最近更新 更多