最近1年多,前后端同構慢慢變成一個流行詞,也許很多人還停留在前后端分離的最佳實踐道路上,但實際上又有一批人已經(jīng)從簡單的服務端渲染走向探索最佳前后端同構方案的路上了。不過,我只是膜拜后者的過客。

 

雖然大家可以去網(wǎng)絡搜索一下相關的概念解釋,但這里我還是簡單列舉一下,我理解的術語。

1、前端渲染:瀏覽器一側使用js,借助模版或vue、react、angular等框架做的DOM結構生成。

2、后端渲染:服務器一側,使用php、nodejs等技術實現(xiàn)DOM結構生成,并在HTTP請求中返回給瀏覽器。

3、同構:瀏覽器一側的JS、HTML和服務器一側使用的JS、HTML使用同樣的開發(fā)結構,同樣的開發(fā)思路,同樣的開發(fā)模式,盡可能實現(xiàn)代碼復用。

 

明確一點,作為有追求的前端開發(fā),我們不應該盲目跟風,一切需要從實際出發(fā)。

 

那么,首先,我們需要了解為什么會有同構這個概念出現(xiàn)。

  • Web開發(fā)的歷程是很有趣的,最初php、asp的年代,一切內容都是服務器渲染的;

  • 再后來為了節(jié)省服務器資源,也更大限度利用客戶端緩存,又出現(xiàn)了前后端分離的模式,從而有了專業(yè)的前端開發(fā)和后臺開發(fā)。此時Web的特點是,js和html放到靜態(tài)目錄,也可以CDN擴散,并以ajax方式獲取后臺的數(shù)據(jù),在前端進行DOM組裝。這種開發(fā)方式沿用至今,這是一個好的工作模式,專業(yè)的人做專業(yè)的事,確實有利于工作效率提高。

  • 再而,隨著nodejs的流行,前端jser們又開始蠢蠢欲動,嘗試吞并web接入這個后臺的前沿地盤,把后臺推到更后。大概2014年后,又出現(xiàn)了很多nodejs直出的方案,把頁面數(shù)據(jù)都一次在HTML的請求中返回,無需瀏覽器端再發(fā)起ajax獲取數(shù)據(jù),而且服務器端把DOM結構都渲染好,瀏覽器按trunk直接做圖形渲染即可。不得不說,這個方案帶來了很多好處:首屏速度更快,瀏覽器更省電。當然,隨之而來的,就是更復雜的工作模式,jser需要做服務器端的邏輯,甚至一些代碼需要同時用在瀏覽器和nodejs上。

  • 針對前邊的問題,同構的探討就開始了。。。

 

百度搜一下前后端同構,清一色的vue、react。這些確實是同構,但我認為范圍太窄,同構不是框架帶來的問題,而是因為前后端獨立渲染這種架構層面帶來的問題。

當然,那些同構探討也是非常有價值的,但不在本文的討論范圍內,在這里我更想表達一下,如何從實際項目需求的角度來看,找出自己所需的同構之道。

畢竟,要知道,同構不是為了跟風??幔膊皇菫榱颂勖嬖嚨臅r候博點好感。同構,是為了提高用戶體驗的同時,提高團隊的工作效率。

 

接下來,我想根據(jù)項目的類型,說說自己的看法。

 

第一種,單頁面應用。

這個網(wǎng)站很類似一個APP,確實很有必要做成單頁應用,有助于提高用戶體驗。

如果第一步選擇了單頁面應用,這里就衍生了另外的問題——SEO。而react等框架做了服務器渲染,最大目的其實也是解決SEO。

既然瀏覽器端選擇了某個框架,例如React,而同時又考慮nodejs直出提高首屏的速度,那么就沒有討價還價的余地了,當然上react全家桶,前后端都用react。

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式