express+react解決方案 (一)

經(jīng)常我們需要一個非常輕量級的框架,來滿足我們很多非常簡單的需求浪腐,同時又要求一定的擴展性、靈活性和松散性顿乒,要求快速開發(fā)议街,又有一定的承載能力,這里設計了一種簡單的解決方案璧榄。

數(shù)據(jù)服務框架 >> Github

結構

|----------------------------------------|
| web/HTML5 | mobile |       ect.        |
-----------------------------------------|
|  React/Flux/React Native |      ^      |
-----------------------------------------|
|  rest api/node/express   |  socket.io  |
|           -----------------------------|
|           |   database/redis/storage   |
|----------------------------------------|

為了更明晰的分層特漩,這里分為多個服務,因為都是基于nodejs骨杂,所以要整合在一起也是非常簡單涂身。

  • Rest Api,提供基礎數(shù)據(jù)服務搓蚪,采用http協(xié)議蛤售,由node/express組成。
  • socket妒潭,提供長連接服務悴能,采用socket.io,可以直接連接數(shù)據(jù)層雳灾,也可以通過http協(xié)議連接數(shù)據(jù)層漠酿。
  • 表現(xiàn)層,React作為基礎頁面構建方法谎亩,結合原生方法炒嘲,來構建具體應用,或者應用的一部分匈庭。

數(shù)據(jù)層

這里我選擇MySql作為基礎數(shù)據(jù)存儲格式夫凸,redis作為緩存。

大部分時候我們還是需要傳統(tǒng)的關系型數(shù)據(jù)結構嚎花,MySql是最佳的選擇寸痢,同時PostgreSQL, MariaDB也是一種選擇。

作為NoSql的其中之一紊选,mongoDB啼止,也是非常熱門,但是由于資源占用太高兵罢,不太適合小型項目献烦。

Node

為什么會選擇node作為基礎語言來構建整個框架呢?首先讓我們比較比較其他幾種語言卖词。

JAVA / Spring

現(xiàn)在最火熱的spring架構巩那,幾乎所有大型企業(yè)的首選框架吏夯。優(yōu)點多的不用說明了,但是作為我們需要快速開發(fā)以及快速上手的框架并不友好即横,有太多的坑噪生,而且JAVA作為一門強類型的語言,太過于繁瑣东囚。分層明確(Model, DAO, Service, Controller)的同時跺嗽,也降低了開發(fā)速度。

另外一個讓我放棄Spring的原因在于資源占用太高页藻,JAVA的運行環(huán)境就需要非常大的內(nèi)存桨嫁,如果你的開發(fā)機器上需要運行MySql, redis, IDE, tomcat等等,還是有一點壓力的份帐。

Python / django

也是一個比較熱門的開發(fā)框架璃吧,也有挺多的成熟應用,算是一個Ruby On Rail的Python版本废境。但是畢竟Python并不是專門為服務器開發(fā)出來的語言畜挨,而且和C語言有著一些聯(lián)系,所以感覺并不太適合現(xiàn)在的時代彬坏,目前開源社區(qū)的支持也在逐漸下降朦促。

django自己有一套ORM的系統(tǒng),但是并不夠靈活栓始。

我比較喜歡的是Python的修飾方法务冕,可以非常靈活的配置一些方法的過濾器。(聽說ES7里也要有統(tǒng)一的特性幻赚?)

PHP

感覺PHP是專門為了WEB而設計的語言禀忆,雖然有一些像think php這樣mvc的框架,但是感覺作為一個中間層還是不太穩(wěn)定落恼。

Node.js

Node是一個處理IO密集型業(yè)務非常好的選擇箩退,通常我們的中間層不會有大量的計算,多數(shù)為讀取寫入數(shù)據(jù)佳谦,其他的框架都是選擇等待事務完成戴涝,而且每個請求會生成一個進程,導致一臺機器的并發(fā)數(shù)直接由內(nèi)存決定钻蔑,Node在這方面可以使用更少的資源來獲得同樣的效果啥刻。

Node目前非常的火爆,開源社區(qū)也非尺湫Γ活躍可帽,很多應用或框架都已經(jīng)在node上面開發(fā),而且開源模塊非常完善窗怒,npm也非常好用映跟。比如我在上層采用的React蓄拣。

同時Javascript作為一門前端語言,簡單易學努隙,可以有很多前端開發(fā)人員進入球恤。

在公布了ES6以后,Javascript感覺已經(jīng)擺脫了腳本語言這一不太好的特性剃法,更像一門專業(yè)面向?qū)ο笳Z言碎捺。不過可惜的是路鹰,到目前為止贷洲,雖然v8已經(jīng)基本支持了所有ES6特性,但是最新的node v6并沒有完全支持晋柱,加上--harmony也只能支持一小部分优构,目前我們還需要借助第三方庫。

只能說雁竞,感謝v8!


同時钦椭,可以看出這個框架的大部分都是由js來組成,所以選擇Node來作為中間層的開發(fā)也是很理所應當?shù)摹?/p>

下一步

整個中間層的構建碑诉。請見下一篇彪腔。

后記

關于Node服務的效率問題,雖然官方說明以及很多自來水的吹捧进栽,感覺非常的優(yōu)秀德挣,但是實際項目中還是需要根據(jù)實際情況來做判斷。

不過如果遇到了效率問題快毛,Node還是可以很方便的和其他語言混編的格嗅,找出最消耗時間的地方,用C/C++改寫也是非尺氲郏快速的屯掖。

穩(wěn)定性是Node比較弱的一個方面。一個線程容易因為一個小錯誤而使整個服務崩潰襟衰,所以除了需要更仔細的錯誤處理贴铜,還需要均衡與熱備來確保服務質(zhì)量。

由于Node的異步語法會導致更多的嵌套關系瀑晒,使用泛濫會導致代碼難以理解绍坝,所以需要統(tǒng)一整個項目的規(guī)范與習慣。(比如使用Promise代替callback函數(shù))

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瑰妄,一起剝皮案震驚了整個濱河市陷嘴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌间坐,老刑警劉巖灾挨,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邑退,死亡現(xiàn)場離奇詭異,居然都是意外死亡劳澄,警方通過查閱死者的電腦和手機地技,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秒拔,“玉大人莫矗,你說我怎么就攤上這事∩八酰” “怎么了作谚?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長庵芭。 經(jīng)常有香客問我妹懒,道長,這世上最難降的妖魔是什么双吆? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任眨唬,我火速辦了婚禮,結果婚禮上好乐,老公的妹妹穿的比我還像新娘匾竿。我一直安慰自己,他們只是感情好蔚万,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布岭妖。 她就那樣靜靜地躺著,像睡著了一般笛坦。 火紅的嫁衣襯著肌膚如雪区转。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天版扩,我揣著相機與錄音废离,去河邊找鬼。 笑死礁芦,一個胖子當著我的面吹牛蜻韭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播柿扣,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼肖方,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了未状?” 一聲冷哼從身側響起俯画,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎司草,沒想到半個月后艰垂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泡仗,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年猜憎,在試婚紗的時候發(fā)現(xiàn)自己被綠了娩怎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡胰柑,死狀恐怖截亦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情柬讨,我是刑警寧澤崩瓤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站姐浮,受9級特大地震影響谷遂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜卖鲤,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望畴嘶。 院中可真熱鬧蛋逾,春花似錦、人聲如沸窗悯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒋院。三九已至亏钩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間欺旧,已是汗流浹背姑丑。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辞友,地道東北人栅哀。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像称龙,于是被迫代替她去往敵國和親留拾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容