Node.js 路由映射和简单例子实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Cyan1614/article/details/73433951

路由就是根据提供的数据来执行相应的代码。

这也设计到了MVC设计模式,其主要思想是将业务逻辑按职责分离,主要分为以下几种。

(1)控制器(Controller),一组行为的集合。

(2)模型(Model),数据相关的操作和封装。

(3)视图(View),视图的渲染。

这是目前最经典的分层模式(如下图),大致而言,它的工作模式如下说明。

(1)路由分析,根据URL寻找到对应的控制器和行为。

(2)行为调用相关的模型,进行数据操作。

(3)数据操作结束后,调用视图和相关数据进行页面渲染,输出到客户端。

根据URL做到路由映射,这里有两个分支实现,一种方式是通过手工关联映射,一种是自然关联映射。前者会有一个对应的路由文件来将URL映射到对应的控制器,后者没有这样的文件。

手工映射除了需要手工配置路由外较为原始外,它对URL的要求十分灵活,几乎没有格式上的限制。

自然映射是用一种约定俗成的方式自然而然地实现了路由,而无须维护路由映射,并且这种方式没有指明参数名称,但是可以直接通过参数获取。

简单例子实现:

创建了一个Index.js文件,内容如下:

var server = require('./server');
server.start();

创建了一个server.js文件,内容如下:

var http = require('http');
var url = require('url');
var routerStart = require('./routerstart');
var routerUpdate = require('./routerupdate')

function start() {
    function onRequest(request, response) {
        response.writeHead(200, {
            'Content-Type': 'text/plain'
        });
        var pathName = url.parse(request.url);
        if (pathName.pathname !== '/favicon.ico') {
            if (pathName.pathname === '/') {
                routerStart.router();
            } else {
                routerUpdate.router();
            }
        }
        var str = JSON.stringify(pathName);
        response.write(str);
        response.end();
    }
    http.createServer(onRequest).listen(8080);
    console.log('Server has started');
}

exports.start = start;

favicon.ico为浏览器在收藏夹中的默认图标,在判断中将其过滤。

创建了一个routerstart.js文件,内容如下:

function router(){
    console.log('start');
}
exports.router = router;

创建了一个routerupdate.js文件,内容如下:

function router(){
    console.log('update');
}
exports.router = router;

运行index.js文件,结果如下:

$ node index.js
Server has started  

进入127.0.0.1:8080后,默认的第一次请求,内容如下:


$ node index.js
Server has started
start 

当输入一个测试URL后,内容如下:


$ node index.js
Server has started
start
update




猜你喜欢

转载自blog.csdn.net/Cyan1614/article/details/73433951