1、工作原理

  当通过app.js建立的服务器时,会看到一个简单的页面。返回页面时,浏览器会向服务器发送请求。app会解析请求的路径,调用相应的逻辑,调用对应的视图模板,传递对象数值,最终生成HTML页面,返回给浏览器。

  当浏览器接收到内容后,通过分析获取 /stylesheets/style.css,因此会再向服务器发起请求。

  此时,app并没有一个路由规则指派到/stylesheets/style.css,旦app会通过

    var path = require('path'),

  app.use(express.static(path.join(__dirname, 'public')))配置了静态文件服务器,定向到app.js所在的目录下去拿这个文件.

  如下图所示
                       浏览器
                        |
                        |
                      路由控制器
                        |
                        |
       ————————————————————————————————————————————————————————————
        |               |                  |
        |               |                  |
      模板引擎             静态文件              对象模板  浏览器发送请求后,由路由控制接受,根据不同的路径定向到不同的服务器,控制器处理用户具体的请求,可能会访问数据库中的对象,
 即模型部分,生成视图HTML,再由控制器返回给浏览器,完成一次请求。  
 
2.路由的规则创建     
  服务器在开始监听之前,设置好所有的路由规则,当请求到达时,直接分配到相应的函数。 
  早先版本在app.js直接使用 app.get('/user',function(req,res,next)){},  
   如今版本已改成  
var users = require('./routes/users');
app.use('/users', users); var express = require('express');
var router = express.Router(); /* GET users listing. */
router.get('/:username', function (req, res, next) {
}); module.exports = router;
 app.get是路由规则创建函数,有两个参数
 参数一:请求的路径
 参数二:是一个回调函数,传递请求信息和相应信息,以及next。
路径匹配的问题
 路径规则会被自动编译成正则表达式,路径参数可以相应的函数中通过req.params的属性访问。 REST风格路由规则
  Express支持REST风格的请求方法,REST意思是表征状态转移,是一种基于HTTP协议的网络应用的接口
风格。定义了8个标准方法。
  GET、POST、DELETE、PUT、HEAD、TRACE、CONNECT、OPTIONS。
  其中CONNECT是HTTP 1.1协议中预留给能够将连接改为管道方式的代理服务器。
  所谓安全指的是连续访问多次所获得的结果不收访问者的影响。
  而幂等 指的是重复请求多次与一次请求的效果是一样的,比如获取、更新、删除操作是 幂等,与新增不同。
 其中app.all 支持把所有的请求方法都绑定到同一个相应函数。 控制转移
  Express支持同一路径绑定多个相应函数。
  使用next()函数,通过调用则将控制权交给后面的规则。
  
            
												

node.js 基础学习笔记3 -express的更多相关文章

  1. node.js 基础学习笔记3 -http

    http模块,其中封装了一个高效的HTTP服务器和一个建议的HTTP客户端 http.server是一个基于事件的HTTP服务器 http.request则是一个HTTP客户端工具,用户向服务器发送请 ...

  2. node.js 基础学习笔记2

    Module和Package是Node.js最重要的支柱. Node.j 提供require函数来调用其他模块,而且模块都是基于文件.模块和包区别是透明的,因此常常不作区分. 1.模块和文件一一对应. ...

  3. node.js 基础学习笔记1

    1. node -v 查看版本 node -e --js代码 node --进入编辑模式 Ctrl+C 退出编译模式 var http=require('http') http.createServe ...

  4. handlebars.js基础学习笔记

    最近在帮学校做个课程网站,就有人推荐用jquery+ajax+handlebars做网站前端,刚接触发现挺高大上的,于是就把一些基础学习笔记记录下来啦. 1.引用文件: jquery.js文件下载:h ...

  5. node.js 基础学习 express安装使用

    安装好nodeJs,我们需要使用命令行中安装express. 我这里默认将Node.js安装在C:\Program Files\nodCejs\盘中. 在保持联网的状态下,依次输入如下命令. npm ...

  6. Node.js基础学习四之注册功能

    前言:在Node.js学习(二)和(三)中介绍了如何在Node.js 中获取登录的用户名和密码与数据库进行验证并返回数据给客户端 需求:实现注册功能 为了区分登录和注册是两个不同的请求,在端口后面加上 ...

  7. 两万字Vue.js基础学习笔记

    Vue.js学习笔记 目录 Vue.js学习笔记 ES6语法 1.不一样的变量声明:const和let 2.模板字符串 3.箭头函数(Arrow Functions) 4. 函数的参数默认值 5.Sp ...

  8. 两万字Vue.js基础学习笔记(二)

    Vue.js学习笔记(二) 4.模块化开发 ES6模块化的导入和导出 我们使用export指令导出了模块对外提供的接口,下面我们就可以通过import命令来加载对应的这个模块了 首先,我们需要在HTM ...

  9. Node.js入门学习笔记(一)

    先来个最常见的"Hello World!". 打开你最喜欢的编辑器(我用的是Sublime Text),创建一个helloWorld.js的文件.我们要做的就是向stdout输出& ...

随机推荐

  1. CSS + DIV 让页脚始终底部

    一 前言 经常设计页面时用到三层DIV,头DIV与脚DIV一般固定高度,而中间层DIV根据内容的多少,高度不定,我们经常希望但内容很少时,脚DIV保持在底部,当内容很多时,脚DIV被中间内容挤到下面, ...

  2. AX7: Get started developing

    This blog will show how you can start making a customization in AX 7 by showing you the steps needed ...

  3. MVC中的Html.Partial和Html.RenderPartial

    Partial辅助方法用于将部分视图渲染成字符串.注意没必要为视图指定路径和文件扩展名,因为运行时定位部分视图与定位正常视图使用的逻辑相同.例如,下面代码就渲染一个名为AlbumDisplay的部分视 ...

  4. C# LINQ详解(转)

    C# LINQ详解(一)   原文标题:How does it work in C#?-Part 3 (C# LINQ in detail),作者:Mohammand A Rahman. 目录 LIN ...

  5. 提权GrantPrivilege

    大概一个多月前学习了提权的知识,当时一直不知道提权到底具体是为了干什么.只是模糊的知道提高权限,获得别的进程的一些东西.后来慢慢的学习的多了,知道了一个叫做ReadProcessMemory的函数,第 ...

  6. C++学习基础十二——纯虚函数与抽象类

    一.C++中纯虚函数与抽象类: 1.含有一个或多个纯虚函数的类成为抽象类,注意此处是纯虚函数,而不是虚函数. 2.如果一个子类继承抽象类,则必须实现父类中的纯虚函数,否则该类也为抽象类. 3.如果一个 ...

  7. rabbitMQ学习(七)反馈模式

    反馈模式 在消费端接收到消息后,会反馈给服务器信息. 连接代码: import java.io.IOException; import com.rabbitmq.client.Channel; imp ...

  8. python---常见的数据队列

    一.FIFO队列(先进先出) #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'zhoufeng' #FIFO队列 import q ...

  9. php的数据循环 之li的3个类判断

    这种判断必须得保证后台数据的键值为数字 ,反正要能跟数字计算的数据才行 ts2.php <?php$array = array('0'=>'a1','1'=>'b1','2'=> ...

  10. SpringMVC学习笔记(六)

    一.SpringMVC文件的上传 1.1.需要导入两个jar包 1.2在SpringMVC配置文件中加入 <!-- upload settings --> <bean id=&quo ...