天天看點

js工程師變身全棧開發,uni-starter前後端一體快速開發架構介紹

作者:軟核改造祝融叔

現在主流軟體業務系統,都是分前後端系統分離。後端伺服器采用以前用java,或者php,後面用Node.js後來居上,前端就比較多了,有移動App比如Android,iOS,還有網頁版,後面小程式流行起用,又專門開發微信小程式,頭條小程式。

js工程師變身全棧開發,uni-starter前後端一體快速開發架構介紹

這樣一個業務系統團隊往往有後端開發人員,後端管理網頁/pc端網頁 (Java,php),移動App原生開發人員(java,Objective-C),小程式的javascript開發人員。這樣需要多人才能開發,人力成本,溝通和前後端通訊的成本都是巨大的。

js工程師變身全棧開發,uni-starter前後端一體快速開發架構介紹

現在 dcloud推出一體架構,前端是uni-app,采用vue.js的文法可以同時開發出移動App,小程式,H5網頁,甚至可以打包成桌面版可執行檔案。

後端采用基于雲産商的serverless技術的unicloud.

資料庫也采用類似于Mongodb風格的NoSQL 雲資料庫 再加上配套後端管理網頁 uni-admin。

整套架構下來全部用javascript開發,js一下子搶了App開發,後端伺服器和運維人員的飯碗了。 成本也大大節約了。

關于uni-app

前端就是uni-app,這個基于vue.js的架構可以一套代碼開發多端程式,比如

移動App(Android/iOS),H5網頁,桌面應用,及各種小程式,快應用.

js工程師變身全棧開發,uni-starter前後端一體快速開發架構介紹

當然代價是有的,就是性能上的的損失。是以在對性能要求高應用不太适合。但是對花哨和界面大同小異的業務型系統,非常适合。

另外一在微信小程式原生是騰訊用了一套 wxss,wml之類自定語言,但uni-app采用一套vue的javascript文法,也就是兩者的設計是完全不一樣,這樣界面設計完全不重用,而uni-app采用自定義解析,整個資源包非常重。這是提前知道的。

js工程師變身全棧開發,uni-starter前後端一體快速開發架構介紹

unicloud

而後端的 unicloud是基于新推的Serviceless 技術上再封裝一層,所謂的Serviceless就是把伺服器的運維,配置,資源調整,資料庫管理,前後端通訊通通封裝了,開發者隻集中開發服務端的業務邏輯. 優點就是開發的門檻大大降低了,

傳統的java /php 伺服器開發,除了需要開發者會java 外,還要有Linux 基本指令管理,資料庫管理,與前端http通訊協定編寫.以應性能調用,需要技能很多,現在通通交給雲服務産商,

缺點就是資料掌控不高,目前隻能綁定在公有雲産商身上,而且流量資源價格會略貴于一點。

對于資料安全重視的企業可能有疑慮,按産商說法後面會有獨立安裝版本。還有一種做法是不斷同步到自己資料庫當中。

uni-admin

面向背景管理者的使用者界面有約定成約界面規範和成熟架構.比如vue-element-admin

js工程師變身全棧開發,uni-starter前後端一體快速開發架構介紹

但是雖然是成熟的東西,與背景對接和資料綁定處理還是要從頭處理。是以一個完全針對uicloude的uni-admin就是直接與對應unicloud和相應插件配合,雖然做不到通用架構那麼酷炫,但是也能用夠用了.

js工程師變身全棧開發,uni-starter前後端一體快速開發架構介紹

關于uni-starter的輪子

對于業務型前後端系統,很多輪子是重複又是不得不做的

  • * 使用者的注冊,綁定微信,QQ,登入,登出
  • * 支付,及财務管理
  • * 權限管理
  • * app更新
  • * banner以及前端廣告

...

而uni-start 在uni-app/unicloud 增加很多元件來解決這一些輪子

如果說uni-admin是管理端項目的基本項目模版,那麼uni-starter則是使用者端、尤其是移動端的基礎項目模闆。

uni-starter + uni-admin 提供了使用者端和管理端的全套模版,開箱即用

1. 使用者管理: uni-starter的使用者管理本質是內建了[uni-id-pages],它包括衆多功能:

* 登入注冊(使用者名密碼登入、手機号驗證碼登入、APP一鍵登入、微信登入、Apple登入、微信小程式登入、手機微信掃碼登入、微信公衆号内登入)

* 修改密碼、忘記密碼、頭像更換(內建圖檔裁剪)、昵稱修改、積分檢視、登出、賬号登出

2. 系統設定:

* 内置[App更新中心]整包更新、wgt更新、強制更新,背景搭配uni-admin的更新中心插件管理)

* 推送開關(app)、清除緩存(app)

* 指紋解鎖(app)、人臉解鎖(app)

* 多語言切換

這樣大量功能不用開發了!具體可以檢視官網介紹

#好内容我來評#

關于與第三方伺服器對接

serverless畢竟是比較封閉的東西,但現實項目往往有專門的伺服器,比如物聯網伺服器,雲端人工智能遠算,遊戲伺服器這一類不太可能遷移到uicloud上,是以與其它配合也是一種方案。另外資料安全也要考慮,要考慮遷移和安全。

最标準unicloud的雲函數url化,這樣第三方伺服器可以通過http json接口來通路,比如查詢使用者有效期,使用者資訊等。但是得由第三方伺服器主動請求unicloud

對于大量實時資料通訊或者unicloud 向其推送,可以試着用websocket進行對接。

還有一種情況,uicloud實際上是運在一個Node.js沙盒上,也就是說第三方服務提供Node.jssdk包,也能直接對接,比如微信,支付寶支付就是這樣實作。

總之,在于項目時間比較緊或者想快速試錯,用uni-app+uicloud是一個非常不錯的選擇。

繼續閱讀