0

目前有以下Node.js架构:index.js + server.js + router.js + requestHandlers.js

HTML 当前嵌入在 requestHandlers.js 中,有效地使 Node.js 成为视图和控制器。

将 HTML 外部化的简单方法是什么?

requestHandlers.js:

var querystring = require("querystring"),
    fs = require("fs");

function start(response, postData) {
    console.log("Request handler 'start' was called.");

    var body = '<html>'+
        '<head>'+
        '<meta http-equiv="Content-Type" '+
        'content="text/html; charset=UTF-8" />'+
        '</head>'+
        '<body>'+
        '<form action="/upload" method="post">'+
        '<textarea name="text" rows="20" cols="60"></textarea>'+
        '<input type="submit" value="Submit text" />'+
        '</form>'+
        '</body>'+
        '</html>';

        response.writeHead(200, {"Content-Type": "text/html"});
        response.write(body);
        response.end();
}

function upload(response, postData) {
    console.log("Request handler 'upload' was called.");
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("You've sent the text: "+
    querystring.parse(postData).text);
    response.end();
}

exports.start = start;
exports.upload = upload;
exports.show = show;
4

1 回答 1

0

我建议你不要重新发明轮子并使用一些框架,比如 express。

但是如果你想按照自己的方式去做,那么你应该使用一些模板引擎,比如灰尘/胡子/玉,并将所有的 html 放入单独的模板文件中。

然后,当您处理您的请求时,您使用文件输入/输出来读取这些文件,将它们传递给模板引擎,并将结果发送给客户端。

你可以做这样的事情

fs = require('fs')
fs.readFile('./views/index.html', 'utf8', function (err,data) {
  if (err) {
    return console.log(err);
  }
  //data now contains the content of index.html, do what you want with it
});
于 2013-11-06T19:29:37.190 回答