這是一篇課程博客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等中間件消峯。