1.協(xié)作流程
WEB 系統(tǒng):部署在 WEB 服務器上阱缓,用于為若干 WEB 客戶端提供服務的系統(tǒng)
不同的 WEB 客戶端根據(jù)用戶的不同需求發(fā)送請求到 WEB 服務器上,WEB 系統(tǒng)根據(jù)需求返回相應的結(jié)果秸应,最后通過 WEB 客戶端展示給用戶
典型的? MVC 架構的 WEB 系統(tǒng)
結(jié)構:控制層(Controller) ? ? 數(shù)據(jù)層(Model) ? ? 視圖層(View)
數(shù)據(jù)層(Model)主要封裝了對數(shù)據(jù)的管理(如對數(shù)據(jù)的操作)
視圖層(View)主要展示了數(shù)據(jù)模型虑凛,提供人機交互功能
控制層(Controller)主要用來處理用戶的請求,委托數(shù)據(jù)層進行數(shù)據(jù)相關操作软啼,選擇合適的視圖返回給用戶
一個典型的 WEB 系統(tǒng)各層之間的協(xié)作流程
在 WEB 客戶端(瀏覽器)輸入地址桑谍,按下回車時,WEB客戶端就會發(fā)一個請求到服務器上祸挪,控制層(Controller)首先接收到 WEB 客戶端請求并進行解析锣披。通常這時候會請求數(shù)據(jù)層進行數(shù)據(jù)相關的操作,數(shù)據(jù)層(Model)根據(jù)需求篩選出相關數(shù)據(jù)模型贿条,返回給控制層雹仿。
控制層將收集到各種數(shù)據(jù)模型轉(zhuǎn)交給合適的視圖層進行模板整合,然后視圖層(View)將數(shù)據(jù)模型與模板整合之后生成頁面代碼整以,返回給控制層胧辽。
最后控制層(Controller)將結(jié)果返回給 WEB 客戶端進行展示。
角色定義:完成 WEB 系統(tǒng)需要的角色
視覺工程師:交互原型轉(zhuǎn)換為視覺稿
前端工程師:系統(tǒng)前端交互邏輯
后端工程師:后端開發(fā)技術公黑,為前端提供數(shù)據(jù)票顾、接口服務支持
前端工程師可切分為頁面工程師和前端工程師
頁面工程師更偏重與頁面架構的實現(xiàn),前端工程師更偏重與前端業(yè)務邏輯的實現(xiàn)
協(xié)作流程
拿到交互原型和視覺稿后帆调,前端與后端溝通輸出入口及同步數(shù)據(jù)規(guī)范與異步接口規(guī)范。
后端根據(jù)入口及同步數(shù)據(jù)規(guī)范配置豆同、實現(xiàn)控制層番刊,再根據(jù)異步接口規(guī)范實現(xiàn)接口。
前端根據(jù)入口及同步數(shù)據(jù)規(guī)范進行系統(tǒng)架構及模板實現(xiàn)影锈,再根據(jù)異步接口規(guī)范進行邏輯實現(xiàn)芹务。
最后前后端進行聯(lián)調(diào)與測試。
核心輸出
頁面入口規(guī)范:定義系統(tǒng)對外可訪問的入口鸭廷,入口配置信息
同步數(shù)據(jù)規(guī)范:定義系統(tǒng)需要預先給每個入口的模板文件的數(shù)據(jù)信息
異步接口規(guī)范:定義前后端異步數(shù)據(jù)交互的接口相關的信息
職責說明
頁面工程師
切圖枣抱,優(yōu)化圖片
頁面制作,優(yōu)化頁面效果與結(jié)構
完成簡單的前端業(yè)務邏輯開發(fā)
前端工程師
主導制定前后端分離規(guī)范
主導前后端聯(lián)調(diào)對接測試
系統(tǒng)前端設計架構辆床,滿足一定的功能性需求(性能佳晶,可擴展性)
完成系統(tǒng)前端的業(yè)務邏輯實現(xiàn),優(yōu)化實現(xiàn)邏輯
后端工程師
協(xié)助制定前后端分離規(guī)范
協(xié)助前后端聯(lián)調(diào)對接測試
完成后端系統(tǒng)架構及業(yè)務邏輯實現(xiàn)
2.接口設計
頁面入口規(guī)范:URL 地址跟模板與接口之間的約定
包含頁面基本信息(訪問地址讼载,頁面描述)轿秧,輸入?yún)?shù)(訪問地址上支持攜帶的參數(shù)說明),模板列表咨堤,接口列表
同步數(shù)據(jù)規(guī)范:模板和數(shù)據(jù)模型之間的約定
包含模板基本信息(模板文件菇篡,模板描述),預填數(shù)據(jù)(全局+頁面)一喘,注入接口說明
異步接口規(guī)范:接口與數(shù)據(jù)模型的約定
包含基本信息(請求方式驱还,接口地址),輸入數(shù)據(jù),輸出結(jié)果
規(guī)范應用:構建項目結(jié)構议蟆;模擬同步數(shù)據(jù)闷沥;模擬異步數(shù)據(jù)
本地開發(fā)
前端開發(fā)環(huán)境包含兩部分,一部分是本地模擬服務器(Local Server)咪鲜,另一部分是本地代理(Local Proxy)
所有 WEB 客戶端跟服務器端的交互都會被本地環(huán)境所攔截狐赡,WEB 客戶端請求到真實的 WEB 服務器上的請求不會發(fā)生。
通過這種方式將前后端開發(fā)做徹底的分離
Local Server
WEB 客戶端請求某個頁面時疟丙,客戶端發(fā)出的所有請求首先都會被 Local Server 攔截颖侄,通過配置信息,Local Server 可以識別出這些請求所對應的模板文件和模擬數(shù)據(jù)所在的位置享郊,可將模板文件和模擬數(shù)據(jù)整合览祖,直接生成 HTML 頁面結(jié)構代碼,返回給 WEB 客戶端
Local Proxy
當客戶端發(fā)了異步請求之后炊琉,請求會被 Local Proxy 攔截展蒂,根據(jù)配置信息,匹配信息找出請求所對應的模擬數(shù)據(jù)苔咪,如果存在模擬數(shù)據(jù)锰悼,直接把模擬數(shù)據(jù)轉(zhuǎn)換成 JSON 數(shù)據(jù)對象或其他定義好的數(shù)據(jù)結(jié)構直接返回給 WEB 客戶端
3.版本管理
版本控制系統(tǒng) VCS (Version Control System)是一種記錄若干文件的修訂記錄的系統(tǒng),他幫助我們查閱或回到某個歷史版本
四種 VCS:人肉VCS ? LVCS本地 ? CVCS集中式 ? DVCS分布式
人肉 VCS
無法找到需要的版本团赏,也沒法查看差異
污染工作空間箕般,導致無法集中精力維護當前編輯版本
LVCS 本地式(RCS)
利用一個本地的版本數(shù)據(jù)庫來存儲版本
好處:需要哪個版本,只要從具體版里把它 checkout 即可舔清,可以維持當前工作目錄只是感興趣的版本丝里。
CVCS 集中式(CVS,SVN体谒,Perforce)
利用一個中央的服務器進行日常版本控制操作杯聚,所有操作都必須經(jīng)過中央服務器
在集中式版本管理下,可控性更高
但每一次操作都要經(jīng)過網(wǎng)絡請求抒痒,影響操作流暢性
單點故障:一旦發(fā)生故障幌绍,輕則無法進行相關操作,重則丟失歷史信息
DVCS 分布式(Git故响,Mercurial)
每一份本地倉庫都是一份完整的歷史拷貝纷捞,即使用于同步的中央服務器發(fā)生故障,可以從本地倉庫中將歷史還原
好處:相關操作大部分可在本地被去,更流暢
分支模型
分支:從目標倉庫獲得一份項目拷貝主儡,每條拷貝都有和原倉庫功能一樣的開發(fā)線,可在開發(fā)線提交代碼惨缆,也可以退回到某個版本
分支模型(branching model)/ 工作流(workflow)
一個圍繞項目[ 開發(fā) / 部署 / 測試?] 等工作流程的分支操作(創(chuàng)建糜值,合并等)規(guī)范集合
產(chǎn)品級的分支模型
常駐分支:development(從 master 創(chuàng)建)丰捷;production(master)默認分支
常駐分支一旦被創(chuàng)建,就不會更改
活動分支:feature(特性分支寂汇,從development創(chuàng)建)病往;hotfix(bug修復分支,從master創(chuàng)建)骄瓣;release(標識產(chǎn)品正式發(fā)布停巷,從 development創(chuàng)建)
活動分支會跟著產(chǎn)品的發(fā)布而被動態(tài)的創(chuàng)建,有時在完成開發(fā)時刪除榕栏,只留下對應的版本號
分支模型——特性開發(fā)畔勤,發(fā)布線
從 D 創(chuàng)建 feature1,feature2扒磁,兩分支并行開發(fā)庆揪,feature1開發(fā)完成后合并到 D 分支,假如 feature2 后續(xù)開發(fā)依賴 feature1 提交妨托,將 feature1 提交合并到 feature2 缸榛。
feature2 開發(fā)完畢,將其合并到 D 分支
所有特性開發(fā)完畢兰伤,準備合并回 release 分支
假設同時在開發(fā)另一個特性内颗,但不在下一個版本發(fā)布,完全不受發(fā)布線影響敦腔,并行開發(fā)即可起暮。
首先所有屬性都已經(jīng)合并到開發(fā)分支,準備發(fā)布会烙。創(chuàng)建 release 分支,擁有當前 development 分支所有信息筒捺,在其中進行少量的 Bug 修復與數(shù)據(jù)更新柏腻。
所有在 release 提交的代碼,都需要合并到 development 分支系吭,將來更好進行版本回溯五嫂。
最后一次 release 分支提交,推送到 master 分支肯尺,打上相應版本號沃缘,可直接上線。
若存在線上 Bug则吟,在小版本進行處理槐臀,代碼修復的提交也需要合并到開發(fā)分支。
涉及的四個環(huán)境:
開發(fā)環(huán)境(feature分支)氓仲;測試環(huán)境(release/development分支)水慨;預發(fā)布環(huán)境(release分支)得糜;生產(chǎn)環(huán)境(master分支)