现在的提供数据服务的后台也是express的
目前准备开发一个前端,采用react+express的同构开发模式,服务端渲染页面
请问我这个前端的react+express和正在使用的express数据后台需要分离吗?
如果不需要,直接在现在的后台中+react构建前端,是否要前端工程师与后端工程师共同维护这个工程,会不会出现什么麻烦?
谢谢!!!
迷茫2017-04-17 14:50:40
1.服務端渲染就在你原來的後台渲染就好了,返回html的串給react前端,react前端負責展現
2.我覺得一般一個人維護就好了,即使兩個人維護也沒關係呢,co-work本來就是工作的一部分,別擔心。
3.補充一點客戶端渲染和服務端渲染的區別吧(client-side rendering vs server-side rendering)
Lantency
(延遲) 服務端渲染的話首次載入會很快,因為不需要像客戶端渲染一樣去請求js,css和data,然後組裝展現出來,服務端渲染直接將html串給前端。但是在頁面資料局部更新或需要重新渲染子元件的時候,服務端渲染就會慢很多,因為你要發起網路請求,重新在服務端產生大部分或全部的更新的html串,然後回傳給客戶端。但是客戶端渲染的話,只需要局部重新更新即可。
SEO
(搜尋引擎最佳化) 客戶端渲染的頁面對搜尋引擎並不友好,搜尋引擎通常只頁面的html,不會去執行js的。客戶端渲染的頁面回傳的時候只有一個html template而已,真正的內容是要執行了js去填充的,對搜尋引擎並不友好,當然也有解決方案(PhantomJS
後面會備註PhantomJS的介紹和原因) , 但是這樣只會增加你程式的複雜性,不建議採用。服務端渲染的話因為服務端已經產生了完整的html串,有利於搜尋引擎的分析。
Browser Concept and Issues
(瀏覽器概念與問題) 服務端渲染保證了pages are documents
的定義,客戶端透過URL請求頁面document,你應該得到document的text,而不是一段程式然後再前端執行。還有瀏覽器相容性的問題,客戶端渲染給瀏覽器越多的操作,發生相容性問題的可能就越大。
註:PhantomJS
介紹
PhantomJS
是個無頭瀏覽器
PhantomJS
可以解決客戶端渲染對搜尋引擎不友善的問題,它可以在資料傳回給客戶端之前,對HTML/JavaScript/CSS
進行預渲染, 這表示頁面被載入的時候,所有初始化的js都被執行了.
既然可以解決客戶端渲染對搜尋引擎不友善的問題,那為什麼不用呢?
主要原因:
如果你為每一個請求,都啟動一個PhantomJS
實例,那如果搜尋引擎同時爬取多個頁面,那你機器的效能會受到影響;
PhantomJS
運行的是舊版的js;
除錯困難;
說白了就是引進的成本太大,不值得! ! ! !