網易NEI在面臨前后端分離問題,所提供的完整解決方案


內容來源:2018 年 1 月5 日,網易NEI產品負責人包勇明在“2018移動技術創新大會”進行《網易高效多端應用協作開發實踐》演講分享。IT 大咖說(微信id:itdakashuo)作為獨家視頻合作方,經主辦方和講者審閱授權發布。

閱讀字數:1958 | 5分鐘閱讀

嘉賓演講視頻及PPT回顧:suo.im/5bH62T

摘要

在實際項目開發過程中,前后端分離開發是比較受關注的問題,本次分享會講述開發所面臨的問題背景以及 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。

其他方面的探索和實踐

我們還做了其他方面的探索和實踐,包括遷移老項目、團隊協作、支持業界標準、對測試工程師的支持、支持典型產品。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451406.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451406.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451406.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何使用js動態顯示或隱藏DIV

在web頁面中&#xff0c;經常需要使用select控件來顯示div的顯示與隱藏&#xff0c;實現這個方法主要用到了setAttribute方法&#xff0c;以下為示例代碼 [html] view plaincopy <html> <title>通過選擇項顯示不同的結果</title> <head> <scr…

myeclipse進入Myeclipse configuration center 如何關閉

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 找到這個圖標&#xff0c;放上去顯示return即可關閉&#xff0c;隱藏很深有木有

程序員保持身心健康的八種方式

程序員是一個辛苦的行業&#xff0c;長時間面對的只是需要解決的問題&#xff0c;更不要提開發期限和無理取鬧的客戶了&#xff0c;這樣的工作簡直無以承受。怎么辦呢我們&#xff1f;我們熱愛編程&#xff0c;樂于創建功能……我們喜歡那種將一堆代碼弄成像Facebook或者Digg那…

[No0000166]CPU的組成結構及其原理

中央處理器(Central Processing Unit, CPU)CPU的基本架構和工作原理其實百科上講得已經相當清楚了&#xff0c;不過我覺得有些事情呢還是給個例子出來比較方便學習。本文會先從內存地址&#xff0c;計算機的一般架構之類的基礎知識出發&#xff0c;然后逐步為讀者"拼裝&qu…

Java 時間總結

轉載請標明出處&#xff1a;http://blog.csdn.net/zhaoyanjun6/article/details/80613024 本文出自【趙彥軍的博客】 時區 整個地球分為二十四時區&#xff0c;每個時區都有自己的本地時間。為了統一起見&#xff0c;使用一個統一的時間&#xff0c;稱為通用協調時(UTC, Univer…

js中的var是什么意思

聲明&#xff08;創建&#xff09; JavaScript 變量 在 JavaScript 中創建變量經常被稱為“聲明”變量。您可以通過 var 語句來聲明 JavaScript 變量&#xff1a;var x; var carname; 在以上聲明之后&#xff0c;變量并沒有值&#xff0c;不過您可以在聲明它們時向變量賦值&…

HTTP/2 協議入門

一、2015年&#xff0c; HTTP/2發布。 二、二進制協議 HTTP/2是一個二進制協議&#xff0c;頭信息和數據體都是二進制&#xff0c;并且統稱為“幀”&#xff08;frame&#xff09;,頭信息幀和數據幀。 二進制協議的一個好處是&#xff0c;可以定義額外的幀。HTTP/2定義了近1…

態度決定高度

“一個將什么都不放在眼里的人&#xff0c;他的未來一定是一片黑暗&#xff0c;因為他什么都看不到”。知識的獲得和能力的鍛煉是個一點一滴慢慢積累的過程&#xff0c;這個過程需要我們端正態度&#xff0c;俯身求教。好高騖遠一直都是很多人容易犯的錯誤&#xff0c;這樣導致…

中間件技術是什么?

&#xff08;一&#xff09;舉例說明&#xff1a; 我開了一家炸雞店&#xff08;業務端&#xff09;&#xff0c;然而周邊有太多屠雞場&#xff08;底層&#xff09;&#xff0c;為了成本我肯定想一個個比價&#xff0c;再綜合質量挑選一家屠雞場合作&#xff08;適配不同底層邏…

4.10/4.11/4.12 lvm講解 4.13 磁盤故障小案例

2019獨角獸企業重金招聘Python工程師標準>>> 準備磁盤分區 fdisk /dev/sdb n 創建三個新分區&#xff0c;分別1G t 改變分區類型為8e 準備物理卷 pvcreate /dev/sdb1 pvcreate /dev/sdb2 pvcreate /dev/sdb3 pvdisplay/pvs 列出當前的物理卷 pvremove /dev/sdb3 刪除…

《Effective Java》 第一講:創建和銷毀對象

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、用靜態工廠方法代替構造器 用靜態工廠的優點 &#xff1a; 1. 方法有名字&#xff0c;更好理解。 2.不必每次調用的時候都創建一…

外圍功能電路控制 LET′S TRY“嵌入式編程”: 4 of 6

外圍功能電路控制 LET′S TRY“嵌入式編程”: 4 of 6本連載講解作為嵌入式系統開發技術人員所必需具備的單片機的基礎知識。 在《單片機入門&#xff08;1&#xff09;&#xff5e;&#xff08;3&#xff09;》中&#xff0c;我們一起學習了單片機的硬件和編程語言以及開發環境…

如何防止代碼腐爛

很多團隊都有這個問題&#xff0c;一個項目的代碼本來開始設計得好好的&#xff0c;一段時間以后&#xff0c;代碼就會變得難以理解&#xff0c;難以維護&#xff0c;難以修改。為什么&#xff1f;我一直在思考這個問題。 讓我們先看一個人的情況。 1. 程序員的成長 新手的代碼…

什么是商業智能(BI),以及其與數據分析的區別?

BI&#xff08;Business Intelligence&#xff09;即商務智能&#xff0c;它是一套完整的解決方案&#xff0c;用來將企業中現有的數據進行有效的整合&#xff0c;快速準確地提供報表并提出決策依據&#xff0c;幫助企業做出明智的業務經營決策。它是一種產品/服務&#xff0c;…

php課程 4-15 數組遍歷、超全局數組、表單提交數據(多看學習視頻)

php課程 4-15 數組遍歷、超全局數組、表單提交數據&#xff08;多看學習視頻&#xff09; 一、總結 一句話總結&#xff1a;超全局數組特別有用&#xff0c;比如$_SERVER可以獲取所有的客戶端訪問服務器的情況。 1、數組遍歷三種方式&#xff08;最不熟悉的那一種&#xff09;…

git branch 分支

Git自學之路&#xff08;四&#xff09;- git branch 分支 幾乎所有的版本控制系統都以某種形式支持分支。 使用分支意味著你可以把你的工作從開發主線上分離開來&#xff0c;以免影響開發主線。 在很多版本控制系統中&#xff0c;這是一個略微低效的過程——常常需要完全創建一…

軟件工程師的十個“不職業”行為

職業化是軟件工程師的必然選擇。本文根據我在教學和軟件開發管理方面的實踐&#xff0c;列舉幾個軟件工程師“不職業”的行為或習慣&#xff0c;從另外一個側面進一步探討什么是真正的軟件工程師職業化。職業化之于軟件工程師非常重要。因為&#xff1a;軟件是看不見也摸不著的…

fn:substring()函數

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 fn:substring()函數返回字符串中指定開始和結束索引的子串。 語法 fn:substring()函數的語法如下&#xff1a; ${fn:substring(<s…

大數據分析如何創建最佳的移動應用用戶體驗

2019獨角獸企業重金招聘Python工程師標準>>> 如今&#xff0c;越來越多的人使用移動應用程序。而移動應用將在未來成為一個價值數十億美元的產業。大數據可以幫助企業構建最佳的用戶體驗。 多年來&#xff0c;開發移動應用程序的技術一直在不斷發展&#xff0c;這實…

C語言自學的方法

一、C語言入門的基本學習方法 《C語言》的內容很豐富&#xff0c;有的部分涉及到的細節很多&#xff0c;如硬件知識和數據結構知識等&#xff0c;自學時不可能面面俱到&#xff0c;否則必然會顧此失彼&#xff0c;反而抓不住主要矛盾。筆者認為對初學C語言的考生&#xff0c;開…