Linkaibin 2019-12-19
这是大学接触web开发以后做的第一个大型项目。我刚开始是帮着学长做一些简单的页面开发,后来为了满足同学对网站内容的需求,需要将整个系统的架构由单商户改为多商户,所以我添加了前端页面,并对后端代码进行了大量编写与修改。
先简单说一下技术选择。
我大致地用webpack和koa搭了一个脚手架,文件结构如下所示:
FruitMaker/ ├── instances/ 用于存放全局、单例的文件 ├── lib/ 能够复用的文件,不仅限于该项目 ├── log 日志目录 (不被包含在git中) ├── models/ │ ├── index.js 入口文件,自动加载其他文件,除 migrate.js │ │ > 其他文件需要遵从以下规则 │ │ module.exports = (sequelize, DataType) => { return yourModel;}; │ └── user.js 微信用户 ├── public/ 资源文件, 压缩好的文件都放这里 │ ├── fonts/ 字体目录 │ ├── js/ │ └── css/ ├── routes/ │ ├── index.js 入口文件,自动加载其他文件 │ │ > 其他文件需要遵从以下规则 │ │ module.exports = (sequelize, DataType) => { return yourModel;}; │ └── user.js 微信用户 ├── scripts/ 脚本目录(一些要运行的小脚本) ├── src/ 源码目录 │ ├── bower_components/ bower目录 │ ├── template_content/ 后台模版源码 │ ├── js/ │ └── css/ ├── test/ 单元测试目录 ├── views/ 视图目录 ├── helpers/ 辅助模块目录 │ ├── auth.js 登录验证相关 │ ├── verifyCode 短信验证码
本工程在src内存储前端源码,在routes和models里面存储后端源码,其中models是数据库访问层,routes是路由层。
在项目刚开始的时候,工程复杂度并不是很高,把前端和后端代码放到一个工程里面,影响不大,merge时git的conflicts也比较少。但是随着功能点的增多,项目变得越来越大,经常在排查一个bug时,需要挨个确定错误是出在前端还是出在后端,在查找对应相关文件的过程中,往往需要花大量精力用在前后端文件的判别上,很容易由于分工不明导致效率低下。
特别是客户要求由单商户改为多商户,我一个人去更改对应的功能,新代码很容易写,除bug却非常耗时间,往往是看了前端代码再看后端代码,看了后端再看前端,大脑在不同的域内来回切换,精神稍微不集中就忘记了排查到哪儿了,就得推倒重来。
这是我开发的页面的截图