內容來源:2018 年 1 月5 日,網易NEI產品負責人包勇明在“2018移動技術創新大會”進行《網易高效多端應用協作開發實踐》演講分享。IT 大咖說(微信id:itdakashuo)作為獨家視頻合作方,經主辦方和講者審閱授權發布。
閱讀字數:1958 | 5分鐘閱讀
摘要
在實際項目開發過程中,前后端分離開發是比較受關注的問題,本次分享會講述開發所面臨的問題背景以及 NEI 如何提供的完整解決方案。
產品開發步驟
現在的產品開發一般是按照交互稿、視覺稿、開發、測試、發布這樣的流程進行。本次我們重點探討開發領域,涉及到客戶端以及服務端。
在沒有交互稿的時候,開發也可以做一些前期準備,比如前后端的技術選型、環境搭建,另外后端還有建模的過程。
前后端并行開發
開發過程中的理想狀態應該是前后端并行開發,這在業界也是比較熱門的概念,但是對一些沒有技術積累的傳統企業來說實現起來還是有一定難度。
整個過程中前端使用Mock Server后端進行接口測試,中間約定API契約,然后進行前后端并行開發,最后進行聯調。理論上聯調成本會很小,因為Mock Server是依照API契約進行開發的,而后端也同樣是按照約定定義接口。
接口管理平臺
交互稿設計完成后就輪到接口的設計,傳統的接口文檔有IM、txt、word、wiki、Swagger這幾類。它們普遍存在表述不清晰或者格式混亂的問題,使用接口管理平臺能有效解決這類問題。
徹底實現前后端分離的過程中有著一個阻礙,即如何處理模板。模板是在后端環境中運行的,有ftl、php、ejs等各種類型。前端開發中如果還要涉及到后端環境,那么這就不是徹底的前后端分離。為此我們實現了能夠解析模板的Mock Server,它可以獲取模板中的真實數據,比如登錄的用戶數據,而只使用Mock模擬數據有些業務邏輯是無法實現的。
前后端分離中需要有模板化,所以除了接口規范外還要有頁面規范。另外手動實現Mock Server是有一定成本的,我們為此提供了配套的構建工具,用來解析模板、Mock接口。
實踐方案
NEI協作體系
從交互階段開始就可以根據交互稿設計接口,接著通過構建工具生成初始化代碼,前后端開發完成后進行自測。自測的過程中,由于前端的Mock數據都是生成在本地或者是平臺提供的接口,所以可以通過修改數據進行更充分的自測。后端則主要是對接口是否符合定義的測試,我們也提供了這方面的工具。最終這樣就能有效降低聯調的成本。
接口
接口的設計人員首先要對系統功能非常了解,其次對前后端開發都有所涉獵,了解前端的功能實現以及后端的接口實現。因此我個人是傾向于前端架構師這一角色,但是很多公司其實是沒有這一職位定義的。
接口的設計必須遵循業界規范,比如Restful接口規范。然后要描述清晰,不能遺漏重要信息。
數據模型
實際開發過程,后端在創建接口的時候會事先建立數據模型,并進行一些增刪改查。前端也有一套對應的數據模型抽象,這樣做的優點在于能夠實現復用、規范以及自動化。
NEI支持的數據模型
NEI構建工具原理
通過接口定義NEI平臺上的數據規范,再使用NEI Toolkit導出規范,最后使用Express啟動服務。
NEI中的接口規范定義請求與數據的關系;頁面規范定義頁面與模板、接口的關系;模板規范定義模板與數據的關系。
NEI的模擬容器
圖中是NEI的模擬容器,接口、頁面都被直觀的展現出來。它的主要功能有頁面Mock、接口Mock、監聽靜態文件以及其他前端頻繁用到的功能。
前端自測
上圖是構建工具生成的Mock數據文件,其中data.json就是Mock值,data.js主要是做一些攔截。前端的自測可以修改data.json數據以及data.js過濾器。
后端自測
NEI集成了接口測試功能,比如驗證字段類型是否匹配、字段值是否符合定義、字段是否缺失或多余以及自動生成測試報告和批量運行用例等功能。
前后端聯調
前后端聯調理論上只是服務器環境的地址不一樣,本地開發使用Localhost服務器,要使用其他環境只需將Localhost替換成相應地址。一般定義時不用設置Localhost這塊的地址,只關注后面的地址。
地址變更只需要修改配置文件Server.Config.js。
其他方面的探索和實踐
我們還做了其他方面的探索和實踐,包括遷移老項目、團隊協作、支持業界標準、對測試工程師的支持、支持典型產品。