路由控制

前面我接触了如何使用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——路由控制的更多相关文章

  1. 初步掌握node的路由控制

    1.1.2:node.js的路由控制 1.运行原理 在1.1.1节中,提到过app.js中app.get("/",routes.index)可以用以下代码取代: app.get(& ...

  2. 【nodejs笔记3】Express基本用法,和路由控制,和模板渲染ejs

    1. 路由控制的工作原理 //routes/index.js中的代码//访问主页时,调用ejs模板引擎,渲染index.ejs模板文件,生成静态页面,并显示在浏览器中.router.get('/', ...

  3. angularJs模块ui-router之路由控制

    在你的应用中大多数状态都有与其相关联的 url,路由控制不是设计完成 state 之后的事后想法,而是开始开发时就应该考虑的问题. 这里是如何设置一个基本url. $stateProvider .st ...

  4. Router和History (路由控制)-backbone

    Router和History (路由控制) Backbone.Router担任了一部分Controller(控制器)的工作,它一般运行在单页应用中,能将特定的URL或锚点规则绑定到一个指定的方法(后文 ...

  5. golang自定义路由控制实现(二)-流式注册接口以及支持RESTFUL

        先简单回顾一下在上一篇的文章中,上一篇我主要是结合了数组和Map完成路由映射,数组的大小为8,下标为0的代表Get方法,以此类推,而数组的值则是Map,键为URL,值则是我们编写对应的接口.但 ...

  6. rest_framework之解析器、路由控制、分页

    解析器 我们都知道,网络传输数据只能传输字符串格式的,如果是列表.字典等数据类型,需要转换之后才能使用 但是我们之前的rest_framework例子都没有转换就直接可以使用了,这是因为rest_fr ...

  7. Django-restframework之路由控制、解析器及响应器

    django-restframework之路由控制.解析器及响应器 一 前言 本篇博客介绍 restframework 框架的剩下几个组件,路由控制有三种:传统路由.半自动路由及全自动路由:解析器是用 ...

  8. web应用/路由控制/视图函数/单表多表操作

    一. 1.wen应用:BS架构的应用程序,B是浏览器,S:server(实现了wsgi协议)+ application https://www.cnblogs.com/liuqingzheng/art ...

  9. $Django patch与put,视图组件,路由控制,响应器

    1 patch与put(幂等?回顾) PATCH 与 PUT 属性上的一个重要区别还在于:PUT 是幂等的,而 PATCH 不是幂等的.幂等是一个数学和计算机学概念,在计算机范畴内表示一个操作执行任意 ...

随机推荐

  1. 【转】IBM PowerVM虚拟化技术笔记

    1. 从CPU虚拟化的角度, 分区(partition)可以分成两大类:Micro-partition和Dedicated-procesor.前者可以将物理处理器以0.01的 粒度分配给微分区,分区创 ...

  2. (4.11)sql server内存使用

    一些内存使用错误理解   开篇小感悟 在实际的场景中会遇到各种奇怪的问题,为什么会感觉到奇怪,因为没有理论支撑的东西才感觉到奇怪,SQL Server自己管理内存,我们可以干预的方式也很少,所以日常很 ...

  3. C# W3 调试

    如果在调试附加进程中 没W3进程的话, 在运行里输入 uac  设置为从不通知 即可:

  4. English Phrases

    @1:Phrases requst sth from/of sb 向某人要求某物 a new lease on life   重获新生.焕发生机 state of the art 最先进的 at th ...

  5. Oracle查询结果列的加减、求和、连接、列值相乘

    select prod.amount,prod.plansum,(prod.plansum-prod.amount) as borrow,d.enum_value from ----结果集相减(sel ...

  6. DEC VT100 terminal

  7. Sourse Insight使用过程中的常使用功能简介

    1.查找定义: 在编辑区内,选中任意一个变量.函数.宏等,点击右键->Jump Definition,或者直接Ctrl+左击 2.编辑区切换

  8. Python编程-面向对象和类

    一.面向对象的程序设计 1.面向过程 VS 面向对象 (1)编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程,一个程序是程序员为了得到一个任务结果而编写的一组 ...

  9. 基于SSM的单点登陆02

    pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http: ...

  10. AngularJs 的一则错误 [$INJECTOR:MODULERR]

    Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to: Error: [$injector:modu ...