淺談NUXT – 基於vue.js的服務端渲染框架

秋楓惋紅發表於2019-02-16

Vue因其簡單易懂的API、高效的資料繫結和靈活的元件系統,受到很多前端開發人員的青睞。國內很多公司都在使用vue進行專案開發,我們正在使用的簡書,便是基於Vue來構建的。

我們知道,SPA前端渲染存在兩大痛點:(1)SEO。搜尋引擎爬蟲難以抓取客戶端渲染的頁面meta資訊和其他SEO相關資訊,使網站無法在搜尋引擎中被使用者搜尋到。(2)使用者體驗。大型webApp打包之後的js會很龐大,於是就有了按模組載入,像require.js一樣,非同步請求。webpack盛行,就變成了程式碼分割。即便如此,受制於使用者裝置,頁面初次渲染還是有可能很慢,白屏等待時間太長,對日益挑剔的使用者群體來說,無法接受。

因此,對於那些展示宣傳型頁面,如官網,必須進行服務端渲染(SSR)。

Vue官方SSR文件的配置太過繁瑣,需要對node和webpack有相當不錯的使用經驗,對於一個前端小白而言,官方推薦NUXT。

NUXT是一款基於vue的服務端渲染框架,跟React的NEXT異曲同工。暫時的版本是0.10.6,其github主頁顯示很快就會發布1.0版。

$ vue init nuxt/starter <project-name> //nuxt快速啟動模版

$ cd <project-name> //進入目錄

$ npm install //安裝依賴

$ npm run dev //執行

瀏覽器開啟localhost:3000即可。

目錄結構
pages資料夾:nuxt會自動將pages資料夾內的*.vue檔案根據路徑到對應路由。預設是index.vue。我們無需為了路由劃分而煩惱,你只需要按照對應的資料夾層級建立 .vue 檔案就行。Nuxtjs 會監聽pages資料夾下所有檔案,當有檔案變動時,瀏覽器對應的頁面也會自動重新整理,這極大的簡化了我們開發的步驟。

配置檔案
目錄下的nuxt.config.js是我們唯一的配置入口,可以覆蓋nuxt的預設配置。nuxt.config.js 的全部的配置如下:

cache:該配置項讓你開啟元件快取策略以提升渲染效能。

loading:該配置項用於個性化定製 Nuxt.js 使用的載入元件。

css:該配置項用於定義應用的全域性(所有頁面均需引用的)樣式檔案、模組或第三方庫。

plugins:該配置項用於配置那些需要在根vue.js應用例項化之前需要執行的 Javascript 外掛。

head:這裡可以寫入頁面的meta資訊

build:允許你在自動生成的vendor.bundle.js檔案中新增一些模組,以減少應用 bundle 的體積

dev :該配置項用於配置 Nuxt.js 應用是開發還是生產模式。

env :該配置項用於定義應用客戶端和服務端的環境變數。

generate:該配置項用於定義每個動態路由的引數。

rootDir :該配置項用於配置 Next.js 應用的根目錄。

srcDir:該配置項用於配置應用的原始碼目錄路徑。

transition:該配置項用於個性化配置應用過渡效果屬性的預設值。

vuex:Nuxt.js 會嘗試找到應用根目錄下的store目錄,如果該目錄存在,它將做以下的事情:引用vuex模組,將vuex模組 加到 vendors 構建配置中去,設定Vue根例項的store配置項。

這些內容都可以在官網上找到,建議詳細閱讀官網文件及github倉庫。

為什麼選擇使用NUXT做SSR?

1.配置非常簡單:我們只需關注前端內容,不需要對服務端的內容瞭解很多就可以完成服務端渲染。

2.文件友好:開發文件通熟易懂,非常詳細,內容完善。

3.無需考慮資料傳輸問題,nuxt 會在模板輸出之前非同步請求資料(需要引入 axios 庫),而且對 vuex 有進一步的封裝

4.內建了 webpack,省去了配置 webpack 的步驟,nuxt 會根據配置打包對應的檔案。

5.不用寫路由,自動根據目錄結構生成路由。

小結

框架本身還有很多地方需要優化,所以也只能踩一個坑補一個坑,有時間要多看看原始碼,改原始碼。

NUXT目前來講在大型專案中應用較少,只是比較適用於輕量級的,偏展示型的網站。

相關文章