对于express框架的基本理解
Posted lbzz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于express框架的基本理解相关的知识,希望对你有一定的参考价值。
引言
*因为nodejs是之前很久学的,现在已经忘记了语法规则,现在直接从框架下手,反其道而行之去理解nodejs。
在nodejs里面创建web服务器是很麻烦的事情,要用到http模块,express框架就是来优化这么一个过程的工具。
在学习express框架的时候发现了它于vue的异曲同工之妙,在路由上的用法及其相似。可能这也是为什么vue和express都叫做框架的原因吧,不过express是服务端的框架。*
安装
在终端使用
`cnpm/npm install express`
即可
使用
//需要绑定到一个对象身上才能去使用它,所以
const express = require(\'express\');
//绑定之后需要用这个对象去创建一个web服务器
const app = express();
//添加路由,get只能添加特定路由,如果为\'/\'则404,但use都可以用,祥见下一篇文章
app.get(\'/home\', (req, res) => {
res.send("第一个页面")
})
//在创建完成之后需要映射到一个端口上去发挥作用
app.listen(3000)
//表明一下程序已经运行了
console.log(\'运行结束\');
基础功能
如果只用基本的创建服务器那真的太浪费express了,它还包括很多复杂的功能
中间件
//在回调函数里面加入next,在最后一行指定目标
app.get(\'/home\', (req, res, next) => {
console.log(\'跳转到下一路由\');
next();
})
//下一路由地址保持相同
app.get(\'/home\',(req,res)=>{
res.send(\'跳转路由完成\')
})
//或者使用use来接受所有信息,路由为空表示接收全部
app.use((req,res)=>{
res.send(\'跳转路由完成\')
})
中间件之拦截
//如果网站正在维护,则可以拦截所有请求
app.use((req,res)=>{
res.send(\'网站正在维护\')
})
//如果是发生错误则进行拦截
app.get(\'/index\', (req, res) => {
throw new Error(\'程序发生错误\');
})
//用use接收所有错误信息,这里必须要填next
app.use((err, req, res, next) => {
//因为用的框架,所以状态码就算遇到错误也会是200,这里设置成500
res.status(500).send(err.message);
})
拦截异步错误
//引入异步模块
const promisify = require(\'util\').promisify
//引入读写模块
const fs = require(\'fs\')
//让读写模块异步
const readFile = promisify(fs.readFile)
app.get(\'/index\', async(req, res,next) => {
try {
//随便设置路径让程序抛出错误
await readFile(\'不存在.txt\')
} catch (err) {
next(err)
}
})
app.use((err, req, res, next) => {
res.send(err)
})
路由模块化
在express中可以通过内置构造函数router生成二级路由
//创建路由对象
const home=express.Router();
//用use指向子路由
app.use(\'/home\',home)
//子路由地址为/index
home.get(\'/index\',(req,res)=>{
res.send(\'子路由模块\')
})
在实际开发过程中一般会把两个路由写在不同的文件里面
在主路由里面引入并进行路径匹配
index.js:
const home=require(\'./home.js\')
app.use(\'/home\',home)
home.js:
const express = require(\'express\');
const home = express.Router();
home.get(\'/index\', (req, res) => {
res.send("欢迎来到主页")
});
module.exports = home
以上是关于对于express框架的基本理解的主要内容,如果未能解决你的问题,请参考以下文章
精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!(转载)
SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端Eureka 服务信息Eureka 发现管理Eureka 安全配置Eureka-HA(高可用) 机制Eur(代码片段