为了账号安全,请及时绑定邮箱和手机立即绑定

【金秋打卡】第9天 《Node.js+Koa2+MySQL 打造前后端分离精品项目》

课程名称:Node.js+Koa2+MySQL打造前后端分离精品项目《旧岛》

课程章节:第2章 【深入理解KOA】Koa2的那点事儿与异步编程模型

视频:3-2 服务端编程必备思维:主体与模型划分

            3-3 多Router拆分路由

课程讲师: 七月


课程内容:


3-2 服务端编程必备思维:主体与模型划分

把所有的路由按照一定的主题拆分,把路由分别写到不同的文件中。

可以根据数据的类型,划分主题(划分的依据之一)。

在旧岛中,主题与主题之间,不是绝对孤立的。

主题划分的过程,是渐进式的;

先找到核心主题,再找到附属在核心主题上的其他主题;

主题是抽象的概念,抽象的概念有助于我们思考;

在代码的层面, 主题 = Model 


3-3 多Router拆分路由

业务变更时,要考虑到客户端兼容性,有些用户不升级客户端,要考虑到不能让老版本的客户端出现异常。

服务端支持的版本越多,成本就越高(只支持三个版本就可以了)。

客户端发送api请求时,要携带版本号,可以加在url路径中,或者加在查询参数中,或者加在http的header中。


开闭原则:在变成时,对代码的修改是关闭的,对代码的扩展是开放的。(简单说,就是尽量不要修改代码,而是去扩展代码)

编写javascript代码时主要要避免“循环引用”

//app.js
const Koa = require('koa')  //导入Koa

const book = require('./api/v1/book')
const classic = require('./api/v1/classic')

const app = new Koa()

app.use(book.routes())
app.use(classic.routes())
app.listen(3000)
//classic.js
const Router = require('koa-router')
const router = new Router()

router.get('/v1/classic/latest', (ctx, next) => {
    ctx.body = {
        key : 'classic'
    }
})


module.exports = router
//book.js
const Router = require('koa-router')
const router = new Router()
router.get('/v1/book/latest', (ctx, next) => {
    ctx.body = {
        key : 'book'
    }
})
module.exports = router

课程收获:

软件工程中,想实现一个功能其实是很简单的,尤其对于web开发来说。写代码的目的不止是为了完成功能,要写出优质的代码。优质代码的特点是别人阅读自己的代码时很省力;好的代码利于维护;好的代码可以提高编程效率。

如果只是堆叠很多router.get(),当业务复杂时,既不利于阅读,也不利于维护,同时编程效率非常低下

好的主题划分,可以让数据库设计变的非常简单。不合理的主题划分,会让数据库设计变得非常复杂。


七月老师非常注重在讲编程知识的同时,讲编程思维,讲知识和知识之间的关系。编程是实践性非常强的工作,学习知识最好的方法是放到项目中。做项目的目的不是做项目,最终要做出来自己的项目,业务承载的是编程知识。明天继续刷后边的课程。

https://img1.sycdn.imooc.com//63612c9f0001d33411370637.jpg

https://img1.sycdn.imooc.com//63612c2700017c7c11350641.jpg

https://img1.sycdn.imooc.com//636132ca00012e3c11330644.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消