阅读更多系列文章请访问我的 GitHub 博客 https://github.com/chencl1986/Blog , 示例代码请访问这里.
创建路由
在之前的例子中, 我们总是要通过 if else 语句来判断请求的接口路径, 并进行相应操作.
这样会极大地降低开发效率, 也不利于后期代码维护.
因此, 通常的开发中, 都会使用路由对不同的接口进行操作.
现在我们就来自己实现一个简单的路由:
代码示例:/lesson27/lib/router.JS
1. 先创建一个 router 对象, 用于存储路由表. 其中有 2 个属性, 分别为 get,post, 分别用于存储相应 get,post 请求地址的回调方法.
- // 创建路由表
- let router = {
- // 存储 get 请求的路由
- get: {
- },
- // 存储 post 请求的路由
- post: {
- }
- }
2. 创建一个 addRouter 方法, 用于添加路由配置, 参数 method 为请求方法, url 为请求地址, callback 为处理该请求的回调函数.
- // 添加路由的方法, method 为请求方法, url 为请求地址, callback 为处理该请求的回调函数
- function addRouter(method, url, callback) {
- // 为便于处理, 将 method 和 url 统一转换成小写
- method = method.toLowerCase()
- url = url.toLowerCase()
- // 将处理请求的回调函数, 按方法名和地址储存到路由表中
- router[method][url] = callback
- }
3. 创建一个 findRouter 方法, 用于查找相应路由的回调函数. 参数 method 为请求方法, url 为请求地址, 返回处理路由的回调函数.
- // 查找处理请求的回调函数的方法, method 为请求方法, url 为请求地址, 返回处理路由的回调函数
- function findRouter(method, url) {
- // 为便于处理, 将 method 和 url 统一转换成小写
- method = method.toLowerCase()
- url = url.toLowerCase()
- // 找到路由对应的回调函数, 不存在则默认返回 null
- const callback = router[method][url] || null
- // 将回调函数返回
- return callback
- }
4. 将路由配置作为模块导出
- // 将添加路由和查找路由方法导出
- module.exports = {
- addRouter,
- findRouter
- }
来源: https://juejin.im/post/5c9b410ef265da60f6731b98