天天看點

nodejs做中間層_NodeJs作為中間層的一些想法:接口方面

背景

三月離職,緊接着就入職了一個新團隊,前端方面是大前端方向,NodeJs作為中間層,負責頁面的渲染,已經整合接口給多端(目前就Android),在浏覽器端比較傳統,jQuery的方式。

在上家公司,快兩年的時間,一直在浏覽器端玩耍,并且開發模式比較傳統,幾乎可以用套模闆來形容。不過,在實作互動效果、浏覽器端的基礎,積累蠻多的。當然,空餘時間也玩過NodeJs方面的東西,雖然不曾在公司業務上有多實踐,私下有過基礎經驗。

現有項目情況

當我入職的時候,項目基礎已經搭建好了,Express 作為伺服器端支援,Nunjucks 作為模闆引擎,swagger 來充當接口文檔,另外結合上 fis 做元件化支援。内部實作了幾個中間件為業務做支援,對 Express 的 request 、 response 簡單的擴充了幾個接口,很簡單、很輕便的開發。

開發業務的時候基本上就是請求接口、完善資料、輸出到頁面,ajax請求的接口單獨寫在api路由裡面,以後也會供給多端使用。開發到了這個時間,要為多端提供資料接口,于是通過修改原來擴充的渲染界面的接口(response.renderSuccess),判斷請求資訊,輸入json資料。

簡單的想法

以前在上家公司,有問過Java開發他們是怎麼寫接口的,當時也在學習NodeJs,想知道其他伺服器端語言開發怎麼做開發。大概他們會先對業務上的東西先抽象出來,維護成為一個對象,在這個對象裡進行各種資料校驗,以及管理對資料庫的操作。然後在把公共操作放在一個服務子產品中,需要的時候隻要調用服務,最終業務上各有變動,維護對象就好了。在對外的接口上,就是調用各種服務,找到資料傳回回去。

在項目上,有一個簡單的想法,Express 裡弄一個業務資料路由,裡面把各種業務需要的資料整合在一起,無論是Android、iOS、移動端、伺服器端,都統一了資料格式,并且是完整的資料。

在做業務的時候,會發生這樣的事,渲染一個清單,一個接口并不能提供全資料,然後,還要找其他接口查詢。例如,一個人員清單,接口可能隻提供目前業務相關的資料,人員詳細資料要再通過 userId 一個一個查詢個人資訊。導緻渲染頁面的路由裡面寫了很多很多代碼。

以前在做移動端web開發,一個接口可以把需要的資料都提供了,請求都很簡單,寫起來業務棒棒哒。另外,接口都是和Android、iOS共用的,是以初步認為,大家都是渲染頁面。

現在用 Express 渲染頁面,大概了解為簡單的做了一個代理,請求後端資料。有時候還是蠻想讓接口那邊提供全資料,但是,他們業務會耦合。沒法,髒累差的活還是交給NodeJs處理。

那麼,我就想,要不專門弄一個子產品(路由)綜合處理這些資料,然後多端的資料格式都一緻了。

例如,在伺服器端渲染頁面,隻要通過代理請求目前伺服器上某個接口,就可以得到一個完整的資料,并且多端都是一樣的。在 Express 上,渲染頁面和業務邏輯就完全分離出來了,好像還不錯的樣子。

不知道對不對

想法挺好的,把業務代碼和渲染頁面分開了,假若按照這樣劃分,統一了進入、出去的所有資料格式,但是,在伺服器上多請求了一次接口。