公司的網站重構,要求支持SEO,必須用服務端渲染。聽到這個消息的時候,我開始興奮起來了,由於ssr這個東西出來了這麼久可是我尚未親手實踐過,此次藉助技術調研這個機會搞一下服務端渲染。php
服務端渲染,顧名思義是將html模版拼接在服務端的模版上,在調用服務的時候,從服務端吐出頁面。能夠直接在瀏覽器查看網站源碼中看到,頁面是否有內容。這兩年流行的spa單頁面技術,因爲數據是異步獲取的,爬蟲爬不到異步數據,因此SEO不好,服務端渲染的話,請求的內容直接在服務端就渲染好了,因此對提升網站的搜索質量有很大幫助。css
像java的jsp,php的模版都是服務端渲染。可是對於前端工程化來講,服務端渲染都是在nodejs服務上進行的,網上調研了下經常使用的服務端渲染解決方案,有vue-cli3腳手架搭配使用,有nuxt。各自調研了下,發現nuxt對於我來講可能更加適合。有專門的腳手架工具,按照指令安裝便可,文檔也很是友好,模版語法在vue上加了幾個新的鉤子,用來處理服務端渲染的部分。html
安裝好了之後目錄是這樣一個結構:前端
根vue.js應用
實例化以前須要運行的 Javascript 插件。我存放的有axios,elementui的東西。static
用於存放應用的靜態文件,此類文件不會被 Nuxt.js 調用 Webpack 進行構建編譯處理。 服務器啓動的時候,該目錄下的文件會映射至應用的根路徑 /
下,不可更改。store
目錄用於組織應用的 Vuex 狀態樹 文件。 Nuxt.js 框架集成了 Vuex 狀態樹 的相關功能配置,在 store
目錄下建立一個 index.js
文件可激活這些配置,不可更改,我用來存放封裝的axios和vuex。nuxt.config.js
文件用於組織Nuxt.js 應用的個性化配置,以便覆蓋默認配置,這個是核心文件,裏面能夠自定義配置nuxt 。服務端渲染請求的異步內容放在asyncData這個鉤子方法裏來作,切記!要想給爬蟲爬到異步數據或者組件,加載方法必定要放到created鉤子裏面寫,不能放mounted裏。以下圖:vue
帶參數跳轉用: this.$router.push({name: ‘map-mapView’, query: {id: xxx}}這種目錄名-目錄詳情的方式,若是想定製化url,好比 http://www.xxx.com/id/3 ,這樣history模式的url,能夠在目錄底下新建一個_id.vue 文件夾,用這樣java
this.$router.push({node
})的方式跳轉就能夠啦。ios
其餘的方式就跟vue同樣的正常使用便可。vuex
參考文章:zh.nuxtjs.org/guide#%E9%9…vue-cli