為什么現在又流行服務端渲染html?
網友解答: 作為一名多年經驗的前端,路過,來回答一下。其實,這是一個前端技術發(fā)展與分工的一個過程。最開始的時候,是沒有前端這一角色的,你可以想象為從服務器端獲取一個文件,扔到瀏覽器端顯示
作為一名多年經驗的前端,路過,來回答一下。
其實,這是一個前端技術發(fā)展與分工的一個過程。
最開始的時候,是沒有前端這一角色的,你可以想象為從服務器端獲取一個文件,扔到瀏覽器端顯示,因為要配合瀏覽器端解析,文件內容格式就需要特殊約定,也即HTML。也就是所謂的Web 1.0時代,大概在95年之前,那時我還沒接觸互聯網,所以沒有經歷過。
然后瀏覽器端有了最原始的交互需求,常見的就是點擊一下,會看到一定的變化。很顯然,源文件已經在用戶側瀏覽器端,服務端是做不到的,也就有了Javascript,當然微軟也為IE開發(fā)了對應的JScript。于此同時,人們對顏值要求越來越高,這個可以理解,最開始僅僅幾個人玩(主要是科學家),后來隨著WWW的新起,更多的人參與進來,一看"真丑"。參與的人多了,也就有人商量著使用CSS來解決"丑"的問題。也就是1995到1999年這段時間,主要是伴隨著功能的完善,版本的迭代。那時,我還在讀書,可能還沒接觸互聯網,所以也沒有經歷過。
很顯然,隨著時間的推移,技術的發(fā)展,人們的需求越來越高,人們已經不滿足這種"文件包"的方式,更希望今天看到的是這樣,明天看到的是那樣,我昨天操作過的記錄可以保存到今天甚至以后繼續(xù)操作,也就是對數據有了保存的需求。不在滿足你給我什么我看什么,而是希望看到自己想要的。也就需要數據庫操作,后端技術要求就高了,也就出現了以PHP,JSP,ASP為代表的"3P",實現了動態(tài)頁面。很顯然,這些技術除了處理數據庫,處理數據,以及頁面邏輯也非常不錯。后端技術得到了重視,相反前端技術則被忽略,后端技術蓬勃發(fā)展,這種重后端,輕前端的狀態(tài)一直持續(xù)到2005年。此時我應該已經觸碰到了電腦,不過那個時候主要是用來玩,瀏覽瀏覽網頁啥的,沒有深入研究過底層技術與實現。
AJAX技術的新起,進入Web2.0時代。前端技術伴隨著瀏覽器大戰(zhàn),處于混亂不堪的局面,不論怎樣,前端技術同后端技術一樣得到了人們的重視,此時jQuery應運而生。我也就是從2008-2009年的時候,開始接觸互聯網相關技術,當時是ASP.net,主要以C#語言為主。也就是以后端為主,那時候才剛剛開始有了所謂的"前端",有了前后端分離的意識,那時候的前端分離,無非就是前端處理視圖呈現和頁面交互,通過AJAX調用后端提供的各種接口,返回相應數據。殊不知,其實那個時候一些前端技術已經在開始醞釀,HTML5,CSS3,ES5等等,都將推動后來Web的繁榮,可以說前端相關技術引起了人們非常高的重視。我從2010年開始工作,其實在學校沒怎么接觸前端,以為都是ASP.net那一套,拖拖拽拽就OK了,面試的給我說要考JS,不過還好讓我第二天去。于是那天晚上到網吧下載了一本Javascript相關的書籍啃了一晚上,第二天去筆試,得了個65分剛夠及格的分數?;蛟S當時前端人員稀缺,給了我一個試用期的機會,后來順利轉正。一入前端深似海,于是開始系統(tǒng)的學習前端的相關技術。
前后端分離,是各自蓬勃發(fā)展,繁榮的表現。后端有自己的業(yè)務邏輯要處理,前端也有各自的呈現要處理,前端提供模板,后端負責渲染,你干你的,我干我的,分工明確。后端有成熟的MVC模式和架構,前端出于配合的地位。當時的網站主要以官網+后臺管理的形式存在,多以后端為重,因為后端有大量的業(yè)務邏輯需要處理,所以在MVC架構下,有的前端也需要掌握一門后端語言,讓前端接手處理渲染。其實,這時候的前后端配合不像一開始那么"親密",開始"打架",前端說這里需要后端處理,后端說這里前端也可以處理,因為二者有相互滲透之嫌。比如,后端處理前端提供的靜態(tài)頁面模板,勢必需要對其做一些了解,如果前端處理渲染,勢必也要對后端是如何提供數據要有一定了解。程序猿本身作為一種物種,為了進化的需要,技多不壓身,想必也會有所涉獵。于是乎,前后端就在這種撕逼與配合中各自前行。
"Duang,Duang,Duang",NodeJS重磅來襲,其實JS運行在后端很早就有了,只是沒有NodeJS徹底,來得那么及時。為了應對前后端的撕逼,有一些公司其實之前就嘗試過將PHP的模板渲染也納入前端,后端只處理業(yè)務邏輯,提供數據。這樣在前端和后端,出來了一個中間層由PHP來完成,以為添加了這道磨合劑就相安無事了。卻發(fā)現提高了人工成本的同時,不過是把撕逼提到了另一個層面。隨著NodeJS的完善,相關NPM模塊日趨增多,為何不讓Node接手PHP那一層呢?于是Node解脫了PHP的尷尬境地,又回歸到它的本質。
一般業(yè)務復雜,大公司都會采取類似分離解藕的策略,前后端這種模糊的存在也還有其用武之地。
前后端分離之后,前后端得到相同的重視,前端有了更多的思考空間,也為了應對人們日益增長的個性化需求,同時前端相關技術也落地生根。前端開始有了獨立的架構設計。隨著移動端的新起,前端交互開始變得尤為重要,為了更好的交互體驗,單頁面客戶端渲染開始流行,多頁面服務器端渲染一個很重要的原因就是網絡延時嚴重影響用戶體驗。隨著用戶訪問量的激增,客戶端渲染可以緩解服務器端的壓力。
題主所說的又開始后端渲染,其實跟最原始的后端渲染還是有區(qū)別的,更多的是引入Node這樣的中間層渲染。
至于很多人說的是因為SEO的緣故需要后端渲染,也是有的,其實當移動端新起的時候,SEO的因素已經顯得不那么重要。主要的還是隨著技術的發(fā)展,業(yè)務的沉淀,系統(tǒng)化的思維本身就是"分離-合并"的過程。還有就是現在網絡帶寬,服務器集群等基礎設施的完善,也會對相應的架構設計有一定的影響。
以上是根據自己親身經歷與實踐,在手機上一個字一個字敲擊而成,或有失偏頗,還望諒解,可留言評論交流。
網友解答:榮榮榮榮ge'r'ge'r