Node.js 路由映射和简单例子实现
来源:互联网 发布:大麦网源码 编辑:程序博客网 时间:2024/06/18 15:05
路由就是根据提供的数据来执行相应的代码。
这也设计到了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.jsServer has started
进入127.0.0.1:8080后,默认的第一次请求,内容如下:
$ node index.jsServer has startedstart
当输入一个测试URL后,内容如下:
$ node index.jsServer has startedstartupdate
阅读全文
0 0
- Node.js 路由映射和简单例子实现
- node.js 简单登录 路由
- Node.js自定义实现文件路由功能
- NODE.JS的简单的例子
- Node.js GET/POST请求简单例子
- Node.js实现简单代理服务器
- node js简单爬虫实现
- Node.js express路由
- Node.Js路由
- Node.js 路由
- Node.js 路由
- Node.js 路由
- Node.Js - 路由Router
- Node.js 路由
- 08node.js路由
- Node.js 路由
- node.js 路由控制
- Node.js 路由
- Lua表达式
- 数据库数值函数的解析及使用
- 如何映射本地虚拟机或远程服务器磁盘到本地
- java的日期类
- 《Spring实践——不一样的'HelloWorld'》
- Node.js 路由映射和简单例子实现
- SDUT-3103 小鑫爱运动
- angular 1 与 angular 2 有哪些区别
- React +ES6 +Webpack入门
- css创建一个链接框
- SDUT-2736 小鑫の日常系列故事(五)——卡片游戏
- [Symfony\Component\Process\Exception\RuntimeException] The Proc
- ElasticSearch按日生成index的两种方法
- FetchType.EAGER 懒加载失败