首页 > 技术文章 > 学伴3.0项目介绍

bbman 2019-12-19 16:06 原文

学伴3.0

学伴是实验室每年都要进行维护优化的一项产品。
从真真姐,冉学长,狐神的三天开发出的1.0版本;
到真真姐,冉学长,小马哥和男神的全新2.0,安卓,IOS平台全覆盖;
再到3.0的技术迁移与升级,学伴也是越做越好,特别是3.0版本,日活和注册用户数都过万,大连理工大学总共也只有三万多在校生,这说明我们的产品在学生群体里是非常受欢迎的。
学伴3.0项目参与的人比较多,我们Web组2人,安卓组2人,IOS组1人,UI2人,产品经理和提建议的学长学姐有4人。

从python到NodeJS

学伴2.0的后台没有使用JS进行开发,而是选择了python的flask这样一个轻量型的框架,2.0的后台存在着模块与模块之间逻辑划分不明确的缺点,因此我在改变后台编程语言为JS后,特别思考了这个问题,在重组整个架构时,确保了模块之间分工明确,组织合理。

技术选择

我负责的是学伴3.0的后端开发工作和少量的前端开发工作,应用端由安卓开发人员和IOS开发人员来完成。

  • 占比很少的前端使用webpack+scss。
  • 后端使用Koa2和ES6进行开发,部署时使用babel进行转义。
  • 组织架构采用功能分离的方法。
  • 采用nginx进行负载均衡,保证服务器的CPU利用率不过低。
  • 利用linux系统的expect软件编写脚本实现了全自动化部署。

工程架构

xueban3/
├── instances/  用于存放全局、单例的文件
├── lib/ 能够复用的文件,不仅限于该项目
├── log 日志目录 (不被包含在git中)
├── models/
│   ├── index.js 入口文件,自动加载其他文件,除 migrate.js
│   │   > 其他文件需要遵从以下规则
│   │
    module.exports = (sequelize, DataType) => { return yourModel;};
│
├── public/ 资源文件, 事先需要的公共资源和用户上传的经过压缩处理后的头像
│   ├── dists/  资源文件
│   ├── uploads/    用户头像等上传目录
│
├── routes/
│   ├── index.js 入口文件,自动加载其他文件
│   │   > 其他文件需要遵从以下规则
│   │
    module.exports = (sequelize, DataType) => { return yourModel;};
│   │
│   ├── restraints.js  访问限制路由
│   ├── upload.js 文件上传路由
│   └── api/ 所有客户端请求相关
│
├── modelAdaptor/   数据接口层,提供接口供路由层调用
├── Spider/   爬虫层
├── Task/      任务层,调用爬虫层,结果供路    由层调用

上面最重要的关系就是路由层—任务层—爬虫层的关系,路由层只能调用任务层提供的接口,不能越权调用爬虫层,通过这样的按功能分层,保证了代码耦合度的下降,同时通过数据库接口层,保证了各层特别是路由层的语义话,让代码的维护变得轻松简单。

一些收获

  • 利用这次工程,锻炼了设置nginx负载均衡的能力,从而保证cpu的利用率不低于50%。
  • 使用expect软件编写脚本,实现部署的全自动化,节省了大量时间人力,在后面的工程中都做了自动化部署脚本。
  • 同安卓,IOS客户端开发的接口设定,要有错误码等信息,交流时应该注意综合二人的困难选一个折中的方面。
  • 即使是JS,单步调试必不可少。

项目部分页面截图

这是应用部分页面的截图

登录页面
课表页面
动态页面
发现页面
个人页面
卧谈会页面

推荐阅读