文章閱讀,來自 前端之巔 去哪兒網(wǎng) 部分摘錄
項(xiàng)目前后端分離
1.項(xiàng)目分離疙挺,頁面分離
第一種是項(xiàng)目分離扛邑,承載頁面分離。他的特點(diǎn)是簡單铐然,快速蔬崩,前端只關(guān)注瀏覽器方面,除瀏覽器端之外都是后端負(fù)責(zé)搀暑。
缺點(diǎn):
溝通成本高沥阳,前期,前端需要使用 ng 或者代理工具調(diào)試自点,后期桐罕,還要把頁面給到后端,并且新建一個(gè)對應(yīng)的路由桂敛。
2.項(xiàng)目分離功炮,只是后端的頁面,放到了前端項(xiàng)目里
后端只需要配置路由术唬,最終上線時(shí)薪伏,由發(fā)布系統(tǒng)負(fù)責(zé)把前端中的頁面,自動(dòng)同步到后端相應(yīng)的目錄中粗仓。其中相應(yīng)的目錄需要前后端提前約定嫁怀,不然后端在渲染頁面的時(shí)候,就會找不到相應(yīng)的文件借浊。相比第一種方案塘淑,稍微有點(diǎn)進(jìn)步。溝通成本會有一定的降低蚂斤。
缺點(diǎn):
不過如果需要在頁面里做一些業(yè)務(wù)邏輯處理存捺,還需要前端同學(xué)掌握和學(xué)習(xí) velocity 語法,對于新同學(xué)而言看似掌握的了一門新語法橡淆,但實(shí)際操作起來并非想象中的流暢召噩。
3.第三種方案是使用 Nodejs 作為頁面渲染層母赵,后端只負(fù)責(zé)數(shù)據(jù)的生產(chǎn)工作
這也是目前階段主要的使用方式。它的優(yōu)點(diǎn)是前端同學(xué)對于整個(gè)頁面的生命周期有完全的控制權(quán)具滴,包括開發(fā)凹嘲,調(diào)試,部署构韵,上線以及后期的性能監(jiān)控周蹭,應(yīng)用監(jiān)控等等∑;郑可做的事情也更多凶朗,比如使用 React SSR 做同構(gòu)渲染。
缺點(diǎn):
對于前端同學(xué)的要求也會很高显拳,除學(xué)習(xí)前端知識外棚愤,還要學(xué)習(xí)后端知識。
整個(gè)應(yīng)用都是由前端統(tǒng)一負(fù)責(zé)杂数,所以還需要接收報(bào)警電話或者短信宛畦,7*24 小時(shí),都在待命狀態(tài)揍移。
為什么 Node 沒有大規(guī)模使用呢次和?
1.一些前端開發(fā),只關(guān)注瀏覽器端那伐,服務(wù)器端開發(fā)關(guān)注很少踏施,或者根本就不關(guān)注 ;
2.認(rèn)為 Node.js 只適合開發(fā)一些工具類的功能,相對于后端開發(fā)來看它只是個(gè)玩具 ;
3.Node.js 的生態(tài)不如其他后端語言生態(tài)健全 ;
4.涉及到后端開發(fā)的知識面比較廣罕邀,在沒有這些基礎(chǔ)知識或者經(jīng)驗(yàn)積累的基礎(chǔ)上畅形,考慮問題比較片面,最終做出的系統(tǒng)問題比較多诉探,容易被后端鄙視 ;
- 對于 Node.js 開發(fā)后端束亏,對項(xiàng)目負(fù)責(zé)人要求比較高(項(xiàng)目的目錄規(guī)范,開發(fā)規(guī)范阵具,系統(tǒng)的安全性,穩(wěn)定性定铜,可靠性阳液,擴(kuò)展性,維護(hù)成本等);
- 以往前端不需要 7 x 24 保持待命狀態(tài)揣炕,但是接觸后端后帘皿,需要接收報(bào)警短信,有時(shí)出現(xiàn)問題還需要馬上隨時(shí)隨地解決 ;
看似問題很多畸陡,但實(shí)質(zhì)上只有兩個(gè)原因鹰溜,
1虽填,自身知識儲備不夠。
2曹动,對 Node.js 了解不深斋日,不敢應(yīng)用在生成環(huán)境中,即使應(yīng)用到生產(chǎn)環(huán)境墓陈,一旦出現(xiàn)問題恶守,不能快速及時(shí)的處理,導(dǎo)致高層認(rèn)為還不如其他后端語言穩(wěn)定贡必,降低了我們的話語權(quán)兔港。 (很中肯,不摸底仔拟,不敢用于項(xiàng)目)
Node.js 出現(xiàn)的意義何在衫樊?
1,提高開發(fā)效率利花,因?yàn)橛辛?Node 之后就不需要配置 Nginx 了科侈,也不需要配置一些代理工具了,所有的頁面生命周期都是由前端統(tǒng)一去管理的晋被,這時(shí)候不需要其他人進(jìn)行合作兑徘。
2,降低溝通成本羡洛,除了接口格式外挂脑,不需要和后端進(jìn)行交互了;
3欲侮,前后端職責(zé)也更為清晰崭闲,因?yàn)檫@時(shí)候,界限更為清晰了威蕉,后端只負(fù)責(zé)生產(chǎn)數(shù)據(jù)刁俭,它只提供數(shù)據(jù)就可以了,至于數(shù)據(jù)怎么消費(fèi)韧涨,以及怎么用牍戚,都由前端去做;
4虑粥,可以同時(shí)使用 React SSR 技術(shù)如孝,做到首屏渲染,提高用戶體驗(yàn)娩贷,除了首屏之外第晰,還可以做異步的加載、SEO 等操作。
5茁瘦,Node.js 可提供一些服務(wù)品抽,不僅能讓我們使用,還可以對外使用甜熔,如 RESTful API圆恤,這樣就不用有求于后端了。
/---------------------------------------------文章摘錄結(jié)束-------------------------------------------------/
node.js框架
除了號稱nodejs界jQuery的express纺非,
另外兩個(gè)比較不錯(cuò)的
一個(gè)是 360 團(tuán)隊(duì)的 Thinkjs 哑了,
一個(gè)是阿里的 Eggjs