node.js没有硬编码的URL调度

时间:2013-12-25 09:07:01

标签: node.js url mapping dispatcher

我需要一个有多个页面的公司网站

我已经能够使用以下代码生成那些页面(使用ECT模板引擎):

var http = require('http');
var url = require('url');
var ECT = require('ect');

var renderer = ECT({ root : __dirname + '/views' });
var data = { title : 'blabla' };

var front = renderer.render('front.ect', data);
var aboutus = renderer.render('aboutus.ect', data);
var ourtechnology = renderer.render('ourtechnology.ect', data);
var anypath = renderer.render('anypath.ect', data);

var server=http.createServer(function(req,res){
    var pathname=url.parse(req.url).pathname;
    switch(pathname){
        case '/':
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.end(front);
        break;
        case '/aboutus':
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.end(aboutus);
        break;
        case '/ourtechnology':
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.end(ourtechnology);
        break;
        default:
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.end(anypath);
        break;
    }

}).listen(80);
console.log('Server running');

但上面的代码是硬编码的。

如何在没有硬编码的情况下进行URL调度?

(我需要能够像发布博客文章一样创建页面)

我更喜欢MySQL用于数据库,需要指导从哪里开始

2 个答案:

答案 0 :(得分:1)

根据您的需要,您应该使用快递,然后问题变为:

var express = require('express');
var app = express();

app.get('/', callback_for_root_dir);
app.get('/aboutus', callback_for_aboutus);
app.get('/ourtechnology', callback_for_ourtechnology);
app.get('*', default_callback);

app.listen(80);

使用MySQL进行路由会很尴尬,因为如何用新路径定义相应的回调?您仍然需要在Node.js中编写回调代码并重新启动应用程序,因此使用MySQL数据进行路由没有多大意义。此外,您可以使用功能强大的正则表达式来表达Express。

答案 1 :(得分:1)

您还可以使用库来扩展快速正常路由,甚至可以对路由进行软编码 更多。

https://github.com/hrajchert/express-shared-routes