Express-笔记01-起步

255 阅读2分钟

前言

Node.js:是一个开源的、跨平台的运行时环境,使用JavaScript语言,开发前/后端代码,创建各种服务器端工具和应用程序。

Express 是一个基于Node.js平台的 Web 应用程序开发框架

官方文档地址:www.expressjs.com.cn/

Express机制:

  • 为不同 URL 路径中使用不同 HTTP 动词的请求(路由)编写处理程序。
  • 集成了“视图”渲染引擎,以便通过将数据插入模板来生成响应。
  • 设置常见 web 应用设置,比如用于连接的端口,以及渲染响应模板的位置。
  • 在请求处理管道的任何位置添加额外的请求处理“中间件”。

起步

mkdir express-demo  //创建项目

cd express-demo   	//进入

npm init  					//初始化

npm install express	//安装express

touch app.js				//新建一个app.js文件

hello world

app.js文件

const express = require("express");	//导入express模块
const app = express();  		//创建app应用
const port = 3001 			//端口号:默认3000

app.get("/", (req, res) => {		//监听GET请求
  res.send("get say 'Hello World'");    //向客户端响应内容
});

app.listen(port, () => {		//启动web服务器
  console.log(`启动地址:http://localhost:${port}/`);
});
node app.js      //启动app.js文件

网页打开地址:http://localhost:3001/

用Postman工具,测试下接口

image.png

nodemon

开发Node.js 项目时,为了方便开发和调试,可使用nodemon启动项目,nodemon可检测文件变化,自动重启项目。node app.js命令,在代码被修改之后,需要手动重启项目。

npm i -g nodemon   	//安装nodemon
nodemon app.js 			//启动app.js文件

路由

路由定义:请求的类型、请求的URL地址、处理函数

app.METHOD(path, handle)

//  `METHOD`  HTTP请求方法(get/post/delete/head/options/put/trace
//  `path`  	服务器上的路由路径
//  `handle(request, response)`  当路由匹配时执行的处理函数
//	参数request和response对象来处理请求和响应的数据

Express,内部使用的还是http模块,只是拓展了HTTP模块中的请求和响应对象。

路由方法:

支持与所有HTTP请求方法相对应的方法

image.png

路由路径:

可以是“字符串”,“字符串模式”或“正则表达式”

“字符串”路径:

app.get('/', (req, res) => {}) 				// 根路由
app.get('/about', (req, res) => {})  	// /about

“字符串模式路径”:子符?+*() 是他们的正则表达式的对应的子集

app.get('/ab?cd', (req, res) => {})		//匹配到/acd和/abcd
app.get('/ab+cd', (req, res) => {})		//匹配到/abcd、/abbcd、/abbbcd等
app.get('/ab*cd', (req, res) => {})		///abcd、/abxcd、/ab123cd、/abRANDOMcd

// ? 用来匹配前面的子表达式零次或一次
// + 用来匹配前面的子表达式一次或多次(大于等于1次)
// * 用来匹配前面的子表达式任意次

“正则表达式路径”:

app.get(/a/, (req, res) => {})   		//匹配到其中带有'a'的任何内容

app.get(/.*fly$/, (req, res) => {}) //匹配到 fly结尾的内容

路由参数

通过req.query对象,获取url中携带的参数

通过req.params对象,获取url中通过匹配到的动态参数

//url地址:http://localhost:3001/home/123/张婷?age=20
​
app.get('/home/:id/:name', (req, res) => { 
  console.log(req.params);  //{ id: '123', name: '张婷' }
  console.log(req.query);   //{ age: '20' }
  res.send(req.params) 
});

路由处理程序

请求对象继承自 http.IncomingMessage

响应对象继承自 http.ServerResponse

request和response对象,相关API参考文档:HTTP | Node.js v14.19.3 Documentation (nodejs.org)

响应方法:(具体见官方文档)

方法描述
res.download()提示要下载的文件
res.end()结束响应过程
res.json()发送JSON响应
res.jsonp()发送带有JSONP支持的JSON响应
res.redirect()重定向请求
res.render()渲染视图模板
res.send()发送各种类型的响应
res.sendFile()将文件作为八位字节流发送
res.sendStatus()设置响应状态码,并将其字符串表示形式发送为响应正文

路由设计

为了代码整洁性,将所有的路由放到 router 文件夹中,在 app.js 引入。

待更新。