express

1.get started

mkdir xxxxxx
cd xxxxxx
npm init -y
npm i express
node index.js

1 express --git ./express-demo && cd ./express-demo 2 npm i 3 npm start

  • bin, 存放启动项目的脚本文件

    • node_modules, 存放所有的项目依赖库

    • public 静态文件(css,js,img)

    • routes,路由文件(controller)

    • views,页面模板

    • package.json,项目依赖配置及开发者信息

    • app.js,应用核心配置文件

4 debug DEBUG=express:* node index.js

3.middleware(core concept)

简单说,中间件(middleware)就是处理HTTP请求的函数。它最大的特点就是,一个中间件处理完,再传递给下一个中间件。从本质上来说,一个 Express 应用就是在调用各种中间件

每个中间件可以从App实例,接收三个参数,依次为request对象、response对象,和 web 应用中处于请求-响应循环流程中的中间件 ,一般被命名为 next 的变量 。每个中间件都可以对HTTP请求(request对象)进行加工,并且决定是否调用next方法,将request对象再传给下一个中间件。

  • 执行任何代码

  • 修改请求和响应对象

  • 终结请求-响应循环

  • 调用堆栈中的下一个中间件

1 应用级中间件(绑定到 app 对象 使用 app.use() 和 app.METHOD(),METHOD 是需要处理的 HTTP 请求的方法,例如 GET, PUT, POST 等等,全部小写)

2 路由级中间件(绑定的对象为 express.Router(), 路由级使用 router.use() 或 router.METHOD() 加载)

3 错误处理中间件

4 内置中间件

  • body-parser

  • compression

  • serve-static

  • session

  • cookie-parser

  • morgan

  • express-session

  • connect-mongo

4.Router(core concept)

  1. 路由路径

  2. 响应方法

    method

    description

    res.download()

    提示下载文件

    res.jsonp()

    发送一个支持 JSONP 的 JSON 格式的响应

    res.sendFile()

    以八位字节流的形式发送文件 response.sendFile("/path/to/anime.mp4")

    res.sendStatus()

    设置响应状态代码,并将其以字符串形式作为响应体的一部分发送

    res.json()

    发送一个 JSON 格式的响应

    res.redirect()

    重定向请求 response.redirect("/hello/anime") response.redirect("http://www.example.com") response.redirect(301, "http://www.example.com")

    res.render()

    渲染视图模板

    res.send()

    发送各种类型的响应

    res.end()

    终结响应处理流程

  3. express.Router() 路由拆分

  4. app.route()

5.views(core concept)

1 选择template engine策略

  • 支持模版继承(extend)

  • 支持模版扩展(block)

  • 支持模版组合(include)

  • 支持预编译

2 npm install --save xxxxx

3 use

4 static views

5 dync views

8.Express some API

  1. app.use([path], middleware) //use是express注册中间件的方法

  2. 中间件顺序很重要 处理错误需要在最后

  3. 请求必须返回,通过end、send、render等结束

  4. all方法和HTTP动词方法(get post put delete...)

  5. 模式匹配

  6. set

  7. response

Last updated