首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Node.JS中设计服务器脚本

问在Node.JS中设计服务器脚本
EN

Stack Overflow用户
提问于 2011-02-19 22:23:57
回答 2查看 2.3K关注 0票数 1

当涉及到构造nodeJS服务器对象时,我试图找出一些简单的最佳实践。请注意,我是从一个灯的背景,所以整个事情有点像一个范式的转变对我。

静态内容

静态内容已经记录了示例,并且工作起来很有魅力:

代码语言:javascript
复制
var http = require('http'), 
    url = require('url'),
    fs = require('fs'),
    sys = require(process.binding('natives').util ? 'util' : 'sys');

server = http.createServer(function(req, res){
    var parsedURL = url.parse(req.url, true);
    var path = parsedURL.pathname;
    var query = parsedURL.query;

    switch (path){
        case '/':
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.write('<h1>Greetings!</h1>');
            res.end();
            break;

        default:
            fs.readFile(__dirname + path, function(err, data){
            if (err) return send404(res);
                res.writeHead(200, {'Content-Type':'text/html'})
                res.write(data, 'utf8');
                res.end();
            });
    }
}).listen(80);

send404 = function(res){
    res.writeHead(404);
    res.write('404');
    res.end();
};

服务器侦听请求,查找文件,并将这些文件的内容发送回客户端。显然,我给出的示例非常愚蠢,没有考虑到不是text/html的文件,但您知道了。

动态内容

但是,如果我们不想提供静态内容呢?例如,如果我们想要一个hello world文件,它接受来自querystring的值,并且响应不同。

我的第一个猜测是,我应该使用nodeJS模块设置创建第二个文件,给它一些接收信息的模块方法,并将大量的字符串连接在一起。

例如,一个名为hello.js的hello world模块:

代码语言:javascript
复制
exports.helloResponse = function( userName ) {
  var h = "<html>";
  h += "<head><title>Hello</title></head>";
  h += "<body>Hello, " + userName +"</body>";
  h += "</html>";
}

然后将以下情况添加到服务器处理程序中:

代码语言:javascript
复制
case 'hello':
  res.writeHead(200, {'Content-Type':'text/html'})
  res.write(require("./hello.js").helloResponse(query["userName"]), 'utf8');
  res.end();

我不介意这个模块,但我讨厌我必须在javascript中创建一个巨大的级联字符串。S.O.社区有什么想法吗?你对这种情况采取了什么办法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-19 23:50:54

Node.js是一个“基本的”平台(不像Python ),这使得它非常灵活。

您将受益于使用Node.js与web框架(如Express.js )来处理繁重的工作。Express.js使用另一个模块Connect.js来提供路由、配置、模板化、静态文件服务等等。

您还需要模板语言。例如,EJS为您提供了一种PHP/JSP风格的模板语言,而玉石则提供了一种Haml-esque方法。

研究Node.js模块页面上的框架和模板引擎列表,看看您喜欢哪一个。

票数 5
EN

Stack Overflow用户

发布于 2011-10-03 17:36:28

Node.js不再是赤裸的骨头了。使用你选择的框架。至少看看express和socketstream框架。还可以看看socket.io作为AJAX的替代品。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5053925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档