React 服務端渲染完美的解決方案前端
1、服務器端渲染是什麼? 使用 React 構建客戶端應用程序,默認狀況下,能夠在瀏覽器中輸出 React 組件,進行生成 DOM 和操做 DOM。React 也能夠在服務端經過 Node.js 轉換成 HTML,直接在瀏覽器端「呈現」處理好的 HTML 字符串,這個過程能夠被認爲 「同構」,由於應用程序的大部分代碼均可以在服務器和客戶端上運行。 2、爲何使用服務器端渲染? 服務器端渲染(SSR)的優點主要在於: 更好的 SEO,因爲搜索引擎爬蟲抓取工具能夠直接查看徹底渲染的頁面。 更好的用戶體驗,對於緩慢的網絡狀況或運行緩慢的設備,加載完資源瀏覽器直接呈現,無需等待全部的 JavaScript 都完成下載並執行,才顯示服務器渲染的HTML。 3、服務端渲染方式 方式一: 傳統方式服務端渲染,解決用戶體驗和更好的 SEO,有諸多工具使用這種方式如React的(Next.js)、Vue的(Nuxt.js)等。有些工具將 webpack 運行在服務端生產環境,實時編譯,將編譯結果緩存起來,這都仍是傳統的方式,只不過將 webpack 運行在服務端實時編譯,仍是開發環境編譯預編譯好的問題。 而這裏這裏將 webpack 放在開發環境,只作開發打包的功能,打包 客戶端 bundle ,服務端 bundle,資源映射文件 assets.json,CSS 等資源進行部署。 服務器 bundle 用於服務器端渲染(SSR); 客戶端 bundle 給瀏覽器加載,瀏覽器經過 bundle 加載更多其它模塊(chunk)js; 資源映射文件 assets.json 則是,服務器 bundle 在準備所需 HTML,須要預插入那些模塊(chunk)js,和CSS,這只是提升用戶體驗。webpack
方式二: 這是一種創新的方法,前端單頁面應用,之前怎麼玩兒,如今還怎麼玩兒,多的一步是,你得先訪問一個Rendora的服務,在前面攔截是否須要服務端渲染。下圖爲官方圖:nginx