express基本使用
Express框架介绍
1.Express是NodeJS开发中一个非常重量级的第三方框架,它对于NodeJS服务端就相当于Jquery对于HTML客户端。
2.Express官网:
[www.expressjs.com.cn/](https://link.juejin.cn?target=http%3A%2F%2Fwww.expressjs.com.cn%2F "http://www.expressjs.com.cn/")
[expressjs.com/](https://link.juejin.cn?target=http%3A%2F%2Fexpressjs.com%2F "http://expressjs.com/")
一般我们学习一个新的技术,都是去官网文档查看它的API,然后多多尝试,熟能生巧
3.Express的github地址:github.com/expressjs/e…
Express的原作者TJ在node社区非常的有名,他写过200多个框架,目前他已经将Express交给了朋友维护,宣布不再维护NodeJS框架,转向Go语言[github.com/tj](https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Ftj "https://github.com/tj")
4.Express官网是这样介绍自己的:基于 Node.js 平台,快速、开放、极简的 web 开发框架。
*Express一个非常重要的亮点就是它没有改变nodejs已有的特性,而是在它的基础上进行了拓展*
**也就是说,使用Express你既可以使用nodejs原生的任何API,也能使用Express的API**
5.Express三大核心功能
1.托管静态资源
- 第二天讲的nodejs实现静态服务器功能在express中只需要一行代码
2.路由
express自带路由功能,让Node服务端开发变得极其简单
express支持链式语法,可以让代码看起来更加简洁
==3.中间件==
Express最为核心的技术和思想,万物皆中间件
中间件虽然理解起来有点困难,但是使用起来非常方便,类似于`bootstrap插件`.
下载express命令: npm i express
如果你的网速很慢,可以在你的任意终端执行命令来提速:`npm config set registry https://registry.npm.taobao.org/`
## 第三方中间件使用
1.在Express官网,有非常多得第三方中间件,它们可以让我们的Nodejs开发变得极其简单
`中间件前端的插件,使用后就会给express中的req或者res添加成员`
2.所有的第三方框架学习套路都是一样的
1.进官网,查文档
2.CTRL+C 与 CTRL+V
3.第三方中间件使用步骤一般都是固定两步
: 安装 `npm i xxxx`(官网复制粘贴)
**第三方中间件都需要使用npm安装,可以理解为是一种特殊的第三方模块**
二: 使用 `app.use(xxx)`(官网复制粘贴)
body-parse第三方中间件:解析post请求参数
安装body-parser : `npm install body-parser`
[www.npmjs.com/package/bod…](https://link.juejin.cn?target=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fbody-parser "https://www.npmjs.com/package/body-parser")
1.html中所有外部资源路径都会变成网络请求
```
服务器需要根据请求路径响应返回对应的文件
复制代码
```
2.静态资源(图片、文件、音视频)一般使用路径拼接的方式来处理
```
服务端可以直接拼接url来响应对应资源,简化代码
复制代码
```
//1.导入模块
const express = require('express')
//2.创建服务器
const app = express()
//3.路由
/* 后台的路由 其实就是 前端的接口文档
路由 : 一个请求,对应一个处理函数
接口文档 : 后台人员会根据路由整理出一份使用说明文档,也就是前端的接口文档
*/
app.get('/',(req,res)=>{
res.end('index')
})
app.get('/login',(req,res)=>{
})
//4.开启服务器
app.listen(3000,()=>{
console.log('开启服务器成功')
})
复制代码
express响应客户端数据
//1.导入模块
const express = require('express')
//2.创建服务器
const app = express()
//3.路由
/* express响应数据
res.send( 字符串 | js对象 )
res.sendFile( 文件路径 )
*/
//(1)响应中文
app.get('/',(req,res)=>{
//nodejs原生的响应方法: res.end() 只能响应二进制和字符串, 中文还会乱码
// res.end('index')
//express的响应方法: res.send() 会自动设置响应头识别中文
res.send('我是首页')
})
//(2)响应json
app.get('/abc',(req,res)=>{
//当res.send()方法里面是对象的时候, express会自动帮你将对象转成JSON字符串
res.send({name:'张三',age:20})
//上面代码等价于
// res.setHeader('Content-type','text/plain;charset=utf8')
// res.end( JSON.stringify({name:'张三',age:20}) )
})
//(3)响应文件
app.get('/login',(req,res)=>{
//express : 只需要写文件路径, 底层会自动用fs模块帮你读取返回
res.sendFile(`${__dirname}/login.html`)
//原生nodejs : fs模块读取文件数据,响应返回
})
//4.开启服务器
app.listen(3000,()=>{
console.log('开启服务器成功')
})
复制代码
express托管静态资源
//1.导入express
const express = require('express')
//2.创建服务器
const app = express()
//3.托管静态资源
/*
(1)如果请求路径是/ : express会自动读取www里面的index.html响应返回
(2) 如果请求路径是www里面的文件夹路径 : express会自动从www开始拼接文件路径响应返回
*/
app.use(express.static('www'))
//4.写路由(接口文档)
//5.开启服务器
app.listen(3000,()=>{
console.log('服务器开启成功')
})
复制代码
express中间件使用
//1.导入模块
const express = require('express')
//2.创建服务器
const app = express()
//3.托管静态资源
app.use(express.static('www'))
//4.写路由 : 前端接口文档
/* 导入中间件 */
//(1)导入模块
const bodyParser = require('body-parser')
//(2)使用模块
// parse application/x-www-form-urlencoded
//解析querystring格式参数: 'key=value&key=value'
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
//解析json格式参数 : '{"key":"value"}'
app.use(bodyParser.json())
//4.1 get请求
app.get('/abc',(req,res)=>{
//(1)请求:req
console.log(req.url)
console.log(req.query)//get参数
/*
a.get请求参数会在url后面拼接,服务器一般通过切割字符串方式来获取get参数
b.express框架自动帮我们切割url中的get参数, 放入 req.query中
*/
//(2)处理
//(3)响应
res.send({
status:200,
msg:'请求成功',
data:[]
})
})
app.post('/add',(req,res)=>{
//(1)请求:req
console.log(req.url)
console.log(req.body)//请求体 post参数
//(2)处理
//(3)响应
res.send({
status:200,
msg:'post请求成功',
data:[]
})
})
//5.开启服务器
app.listen(3000,()=>{
console.log('服务器启动成功')
})
作者:瓜皮小郑
链接:juejin.cn/post/710005…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。