node——路由控制
路由控制
前面我接触了如何使用express建立一个工程,虽然这个工程包含了一些基本的框架,但是没有实际内容,我们会不断给他增加的。
工作原理
我们在浏览器中访问app.js建立的服务器时,会出现一个简单的页面,实际上他已经完成了许多透明的工作。- 当我们在访问http://localhost:3000时,浏览器会向服务器发送请求。app文件会解析请求的路径,调用相应的逻辑。文件中的app.get('/', routes.index),的作用是规定路径为“/”的GET请求由routes.index函数处理。routes.index通过res.render('index', {title: 'Express'})调用视图模板index,传递title变量,最终视图模板生成html页面,返回给浏览器。
- 浏览器在接到内容后,经过分析发现需要获取css,于是再次发送请求,然后app通过app.use(express.static(__dirname + '/public'))配置了静态文件服务器,所以他会定向到app中相应的css返回给客户端。
- 然后就形成了一个MVC架构,浏览器发送请求、由路由控制接受,根据不同的路径然后定向到不同的控制器。控制器处理用户的请求,可能会访问数据库,即模型部分。控制器还要访问模板引擎,生成视图的html,最后由控制器返回给客户端,完成一次请求。
创建路由规则
在app里面增加get函数,然后再在routes里面添加一个你想实现的模块(一个js文件),在app里面获取到她的函数对象。再次重启服务器即可访问http://localhost:3000,看到相应的效果。路径匹配
如果你要展示一个页面,路径为/user/[username],就可以像下面这样配置路由:app.get('/user/:username' ,function(req, res){
res.send('user:' + req.params.username);
});
控制权转移
Express支持同一个路径绑定多个路由响应函数。
Express是通过函数next()实现路由控制转让的,这样提高了代码的重用程度,通过调用第三个参数next函数,将路由的控制权转让给后面的规则。
node——路由控制的更多相关文章
- 初步掌握node的路由控制
1.1.2:node.js的路由控制 1.运行原理 在1.1.1节中,提到过app.js中app.get("/",routes.index)可以用以下代码取代: app.get(& ...
- 【nodejs笔记3】Express基本用法,和路由控制,和模板渲染ejs
1. 路由控制的工作原理 //routes/index.js中的代码//访问主页时,调用ejs模板引擎,渲染index.ejs模板文件,生成静态页面,并显示在浏览器中.router.get('/', ...
- angularJs模块ui-router之路由控制
在你的应用中大多数状态都有与其相关联的 url,路由控制不是设计完成 state 之后的事后想法,而是开始开发时就应该考虑的问题. 这里是如何设置一个基本url. $stateProvider .st ...
- Router和History (路由控制)-backbone
Router和History (路由控制) Backbone.Router担任了一部分Controller(控制器)的工作,它一般运行在单页应用中,能将特定的URL或锚点规则绑定到一个指定的方法(后文 ...
- golang自定义路由控制实现(二)-流式注册接口以及支持RESTFUL
先简单回顾一下在上一篇的文章中,上一篇我主要是结合了数组和Map完成路由映射,数组的大小为8,下标为0的代表Get方法,以此类推,而数组的值则是Map,键为URL,值则是我们编写对应的接口.但 ...
- rest_framework之解析器、路由控制、分页
解析器 我们都知道,网络传输数据只能传输字符串格式的,如果是列表.字典等数据类型,需要转换之后才能使用 但是我们之前的rest_framework例子都没有转换就直接可以使用了,这是因为rest_fr ...
- Django-restframework之路由控制、解析器及响应器
django-restframework之路由控制.解析器及响应器 一 前言 本篇博客介绍 restframework 框架的剩下几个组件,路由控制有三种:传统路由.半自动路由及全自动路由:解析器是用 ...
- web应用/路由控制/视图函数/单表多表操作
一. 1.wen应用:BS架构的应用程序,B是浏览器,S:server(实现了wsgi协议)+ application https://www.cnblogs.com/liuqingzheng/art ...
- $Django patch与put,视图组件,路由控制,响应器
1 patch与put(幂等?回顾) PATCH 与 PUT 属性上的一个重要区别还在于:PUT 是幂等的,而 PATCH 不是幂等的.幂等是一个数学和计算机学概念,在计算机范畴内表示一个操作执行任意 ...
随机推荐
- java 对象与二进制互转
来自 : http://blog.csdn.net/luckyzhoustar/article/details/50402427 /** * @FileName: ByteToObject.java ...
- MySQL中Cardinality值的介绍
1) 什么是Cardinality 不是所有的查询条件出现的列都需要添加索引.对于什么时候添加B+树索引.一般的经验是,在访问表中很少一部分时使用B+树索引才有意义.对于性别字段.地区 ...
- python并发编程&协程
0x01 前导 如何基于单线程来实现并发? 即只用一个主线程(可利用的cpu只有一个)情况下实现并发: 并发的本质:切换+保存状态 cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操 ...
- Python3.6全栈开发实例[014]
14.好声音选秀大赛评委在打分的时,可以进行输入. 假设,有10个评委.让10个评委进行打分, 要求, 分数必须大于5分, 小于10分. count = 1 while count <= 10: ...
- jquerymobile模板
<!DOCTYPE html> <html> <head> <title>Page Title</title> <meta name= ...
- c# 执行批处理文件
ProcessStartInfo proc = new ProcessStartInfo(); proc.UseShellExecute = false; proc.CreateNoWindow = ...
- 0608pm单例模式and面向对象的六大原则
//把类控制住,不让外界造她的对象class DA{ public $name; static private $dx;//存放对象的变量 //将构造变为私有,外界没法造对象 private func ...
- php异常处理类
<?php header('content-type:text/html;charset=UTF-8'); // 创建email异常处理类 class emailException extend ...
- redis 数据导入导出,实例内db迁移
源实例db0迁移至目标实例db1 [root@172.20.0.1 ~]# cat redis_mv.sh #!/bin/bash redis-cli -h -a password -n keys & ...
- iOS_AFNetWorking框架分析
网络 — 你的程序离开了它就不能生存下去!苹果的Foundation framework中的NSURLConnection又非常难以理解, 不过这里有一个可以使用的替代品:AFNetworking.A ...