这是一篇课程博客javascript
项目 | 内容 |
---|---|
课程:北航-2020-春-软件工程 | 博客园班级博客 |
做业要求 | 技术规格说明书 |
咱们在这个课程的目标是 | 提高团队管理及合做能力,实践软件工程开发 |
这个做业在哪一个具体方面帮助咱们实现目标 | 介绍团队项目【知识路书】,定义项目技术规格和相关特性 |
关于本组:【敏杰开发团队介绍】html
关于选题:【知识路书项目介绍】前端
先后端分离。vue
对先后端分离的介绍能够参考:这篇博客java
考虑到项目体量和开发难度,咱们选用的实际是上文中介绍的半分离模式node
之因此不引入nodejs中间层将控制器前移,是由于可预见地,应用的业务逻辑并不复杂,后端提供一套restful api,加上少许定制的功能接口足以知足大部分的开发需求。同时队里的同窗前端经验并不丰富,所以没有必要额外引入nodejs的学习成本。所以综合考虑,咱们做出了这个选择。python
在具体的技术方案上,前端咱们选用vue.js为基础框架搭建spa,后端选用django并基于其插件扩展快速开发api。选用vue主要看中其易上手的特色,方便咱们快速进入开发状态;选用django主要看中其大而全的设计,其自带的ORM、路由管理、用户系统等组件免去了咱们学习多种第三方库的烦恼,而且django-rest-framework、django-jwt等插件也方便咱们快速开发须要的接口。mysql
因为咱们使用View UI,其已经提供了一套模态框,所以咱们能够在此基础上封装错误处理,根据错误种类在模块框中显示不一样的错误信息nginx
/** * 让VUE组件根据异常推出错误模态框 * @param vc vue component * @param err */ export const pushErrModal = (vc, err) => { const options = getErrModalOptions(err) // 根据异常种类给出错误提示信息 const errData = err.response ? err.response.data || err : err if (...) { // do anything you want ... } else { ... } vc.$Modal.error(options) // push modal }
使用时只须要用try-catch捕获不一样的异常并使用这个方法处理便可git
咱们考虑到不一样的可能错误制定了内部错误码。目前暂时有以下类型:
Name | Code | Description |
---|---|---|
Uncaught | - | 未能正确处理的错误 |
Debug | 0001 | 调试用错误 |
NotImplemented | 0010 | 未实现的方法或接口 |
RuntimeErr | 1000 | js运行时错误 |
Undefined | 1010 | 访问未定义对象 |
NetworkErr | 4000 | 没法分类的网络错误 |
NotFound | 4040 | 访问或查询不存在的资源 |
Unauthorized | 4010 | 未登录或没有访问权限 |
后续咱们会根据开发时遇到的需求补充
总体是符合开闭原则的。
考虑到咱们预期的用户规模并不大(千级),后端逻辑简单且支持自行定制部署,所以项目的高并发需求并不强烈。对于正常的访问场景,mysql + nginx + uwsgi的部署策略对于通常的生产服务器已经够用。
假如出现更强烈的高并发需求,能够借助CDN分发静态资源(前端SPA),后端增长响应实例数量,并添加redis等中间件消峰。