node生态实战微博

项目概述

我们在这个项目中要做什么? - koa2从零模仿新浪微博

哪些部分? - 技术选型,知识点串讲,开发微博,总结最佳实践

技术? - koa2ejsmysqlsequelizeredissessionjestjwt

这样的实战有什么意义,对于初级工程师,其实最缺乏的就是架构上的东西,而架构上的东西并没有办法通过文章或者教科书来系统的学习,只有在复杂的项目当中演练和学习,学习怎么给系统做设计,分层,抽离等等

下面这个是我们项目的架构,希望你在整个项目完成之后返回来看看这个图,看看从中学到了什么:

微博的架构

项目开发安排:
① 技术选型

  • 框架
  • 存储和缓存
  • 用户认证

② 知识点串讲

  • koa2和ejs
  • mysql和sequelize
  • redis
  • session和jwt
  • jwt单元测试
  • eslint和inspect debug

③ 技术方案设计

  • 架构设计
  • 接口和路由
  • 数据表和存储模型

④ 功能开发

  • 用户: 登录,注册,用户设置,粉丝和关注
  • 微博: 发布。列表(首页,个人主页,广场页)
  • @功能: @某人,回复,接收 @到我的消息

⑤ 线上环境

  • pm2和多进程
  • nginx和反向代理
  • 日志

⑥ 总结最佳实践

  • 项目结构
  • 错误处理
  • 代码风格
  • 质量保证
  • 安全
  • 线上环境

你的收获:

  • node.js真正的实战项目,koa2和周边工具的使用
  • 系统设计,分层思路,接口设计思路,数据建模思路
  • node最佳实践,对标实际开发工作

技术选型概述

① 框架选型

  • koa:原生支持async await,对于异步编程提供了非常好的技术方法和良好的异步代码的写法风格
  • express:这个框架非常有名,但是是基于JS回调的,回调对于异步来说是非常繁琐的
  • egg:企业级的开发框架,在Koa2的基础上封装了很多业务上的东西

比较上述三种框架,其实我们会发现,koa是一个比较先进且干净,我们可以在这种以http为内核的简易框架上更多发挥出我们自己想法和实现的框架。我们可以根据我们自己的想法和逻辑在此之上拼接模块。而egg当然比Koa2更强大,但是如果使用egg其实大部分你学习的是它的套路,或者开发规范,对于学习不是一个很好的选择。

② 数据库

  • mysql:基本上Mysql是现有企业开发最基本或者最广泛,成本最低的一个数据库系统了
  • mongodb:它当然是Nosql的典范了,不过这种比较适合中小型企业,因为大型企业有专门的数据库运维人员,对于数据库的管理和技术更高

③ 登录技术

  • session:最广泛的登陆技术,最适合的就是这种集中式的,或者单体式的WebServer开发
  • jwt基本上jwt最适合的场景是前后端分离和以RESTful风格的接口开发

④ 前端页面

  • ejs后端模板引擎:单体式的开发,服务端渲染技术的最佳选择,且是服务端开发的必学知识点。
  • 前端框架react/vue:本身就很复杂,而且最适合在前后端分离,且前端业务和需求较多且复杂的项目中

⑤ 缓存数据库和单元测试

  • redis:缓存数据库的最佳选择,没有别的
  • jest:单元测试最广泛和最佳的选择

提交规范

  • 重构提交标识:
    git commit -m 'refactor: 调整目录结构'
    
  • 新功能增加:
    git commit -m 'feat: 路由的演示'
    
Last Updated: 10/17/2019, 5:23:06 PM