「这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战」。
今天的主角是express,主要介绍express的简单运用
Express :基于Node.js平台,快速、开发极简的web开发框架
1、创建服务器
-
创建基本的web服务器
//导入express const express = require('express') //创建web服务器 const app = express() //启动web服务器 app.listen(8080, ()=>{ console.log('express server running at http://127.0.0.1') }) -
监听GET请求
通过app.get()方法,监听客户端的GET请求
app.get('url', function(req, res){ // 设置响应头 res.setHeader('Access-Control-Allow-Origin','*'); //设置响应体 res.send('Hello Ajax'); }) -
获取URL中携带的查询参数,通过req.query对象,可以获取参数。
-
获取URL中的动态参数,通过req.params对象可以访问到URL中通过:匹配的动态参数
-
监听POST请求
app.post('url', function(req, res){/* 处理函数 */}) -
监听所有
app.all('url',(request, response)=>{ // 设置响应头 response.setHeader('Access-Control-Allow-Origin','*'); //设置响应头 response.setHeader('Access-Control-Allow-Headers','*'); //JSON数据 let data = { name: "LHJ" }; //将数据转化为字符串 let str = JSON.stringify(data); //设置响应体 response.send(str); });
2、托管静态资源
-
express.static(),可以创建一个静态资源服务器。例如通过如下将public目录下的图片、CSS文件、Javascript文件对外开放了:app.use(express.static('public'))现在,你可以访问public下所有文件了,如:http://localhost:30000/images/bg.jpg
-
挂载路径前缀如果想在托管的静态资源访问路径之前,挂载路径前缀,使用的方法是:
app.use('/public', express.static('public'))现在,聂可以通过:http://localhost:30000/public/images/bg.jpg 来访问public目录下的文件
3、模块化路由
//导入express
const express = require('express')
//创建路由对象
const router = express.Router()
router.get('/user/:id', (req, res)=>{
console.log(req.params);
res.send(req.params);
})
router.post('/user', (req, res)=> {
console.log(req.query);
res.send(req.query);
})
//暴露路由对象
module.exports = router
引用方式:
const express = require('express')
const app = express()
//导入路由模块
const useRouter = require('./server.js')
//使用app.use()注册路由模块
app.use(useRouter)
4、Express中间件
Express中间件本质上就是一个function处理函数,例如:
app.get('/', function(req, res, next){
next();
})
中间件函数的形参列表中,必须包含next参数。而路由处理函数中只包含req和res。
全局中间件:
//常量mw所指向的就是一个中间件函数
const mw = function(req, res, next){
console.log("1111")
//把流转关系转交给下一个中间件或路由,有请求时,先执行中间件,再到下一个中间件或路由
next()
}
//全局生效的中间件
app.use(mw)
//简化
app.use(function(req, res, next){
console.log("1111")
next()
})
多个中间件之间共享一份req和res。可以在前面中间件为req或res添加自定义属性或方法,供后面中间件或路由使用。
局部中间件:
app.get('/', mw1,mw2,..., function(req, res){
res.send("balabala")
})
The end....继续加油!