Nuxt.js


nuxt.js簡單來說是Vue.js的通用框架,最常用的就是SSR(服務端渲染),nuxt.js這個框架,用Vue開發多頁面應用,並在服務端完成渲染,可以直接用命令把我們制作的vue項目生成為靜態的html。

那么首先要知道什么是客戶端渲染與服務端渲染

什么是服務端渲染?

后端先調用數據庫,獲得數據之后,將數據何頁面元素進行拼接,組合成完整的html頁面,在直接返回給瀏覽器,以用戶瀏覽。

什么是客戶端渲染?

數據由瀏覽器通過ajax動態取得,再通過js將數據填充到demo元素上最終展示到網頁中,這樣的過程叫客戶端渲染。

服務端渲染與客戶端渲染那個更優秀?

服務端渲染需要消耗更多的服務端資源(cpu,內存)

客戶端渲染可以將靜態資源部署到cdn上,實現高並發。

服務端渲染對seo更友好。

 

Nuxt.js是特點(優點):

  • 基於Vue
  • 自動代碼分層
  • 服務端渲染
  • 強大的路由功能,支持異步數據
  • 靜態文件服務
  • EcmaScript6EcmaScript7的語法支持
  • 打包和壓縮JavaScriptCss
  • HTML頭部標簽管理
  • 本地開發支持熱加載
  • 集成ESLint
  • 支持各種樣式預編譯器SASSLESS等等
  • 支持HTTP/2推送

 

Nuxt.js的適用情況?

nuxt.js適合做博客,電影,咨詢,新聞這樣的需要收索引擎提供流量的項目,如果要做移動端的項目那么大可沒必要只用這個框架了。

 

Vue是如何實現服務端渲染的?

 

1)安裝依賴:

 

用npm來安裝vue-cli這個框架。npm install vue-cli -g

安裝完成后可以使用vue -V 來測試是否安裝成功。(注意:這里要使用大寫的V,小寫無效)

 

2)使用vue安裝 nuxt

安裝好vue-cli后,就可以使用init命令來初始化Nuxt.js項目。

vue init nuxt/starter

這時候他會在github上下載模版,然后會詢問你項目的名稱叫什么,作者什么的,這些完全可以根據自己的愛好填寫。

3)使用npm install安裝依賴包

npm install

這個過程是要等一會的,如果你這個過程安裝失敗,可以直接誒刪除項目中的node_modules文件夾后,重新npm install進行安裝。

4)使用npm run dev 啟動服務

直到點開目錄,看到以下目錄結構的介紹。

└─my-nuxt-demo
  ├─.nuxt               // Nuxt自動生成,臨時的用於編輯的文件,build
  ├─assets              // 用於組織未編譯的靜態資源如LESS、SASS或JavaScript,對於不需要通過 Webpack 處理的靜態資源文件,可以放置在 static 目錄中
  ├─components          // 用於自己編寫的Vue組件,比如日歷組件、分頁組件
  ├─layouts             // 布局目錄,用於組織應用的布局組件,不可更改⭐
  ├─middleware          // 用於存放中間件
  ├─node_modules
  ├─pages               // 用於組織應用的路由及視圖,Nuxt.js根據該目錄結構自動生成對應的路由配置,文件名不可更改⭐
  ├─plugins             // 用於組織那些需要在 根vue.js應用 實例化之前需要運行的 Javascript 插件。
  ├─static              // 用於存放應用的靜態文件,此類文件不會被 Nuxt.js 調用 Webpack 進行構建編譯處理。 服務器啟動的時候,該目錄下的文件會映射至應用的根路徑 / 下。文件夾名不可更改。⭐
  └─store               // 用於組織應用的Vuex 狀態管理。文件夾名不可更改。⭐
  ├─.editorconfig       // 開發工具格式配置
  ├─.eslintrc.js        // ESLint的配置文件,用於檢查代碼格式
  ├─.gitignore          // 配置git忽略文件
  ├─nuxt.config.js      // 用於組織Nuxt.js 應用的個性化配置,以便覆蓋默認配置。文件名不可更改。⭐
  ├─package-lock.json   // npm自動生成,用於幫助package的統一設置的,yarn也有相同的操作
  ├─package.json        // npm 包管理配置文件
  ├─README.md

nuxt的常用配置文件以及配置項

const pkg = require('./package')
module.exports = {
  mode: 'universal',    //  當前渲染使用模式
  head: {       //  頁面head配置信息
    title: pkg.name,        //  title
    meta: [         //  meat
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: pkg.description }
    ],
    link: [     //  favicon,若引用css不會進行打包處理
      { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
    ]
  },
  loading: { color: '#fff' },   //  頁面進度條
  css: [    //  全局css(會進行webpack打包處理)
    'element-ui/lib/theme-chalk/index.css'  
  ],
  plugins: [        //  插件
    '@/plugins/element-ui'
  ],
  modules: [        //  模塊
    '@nuxtjs/axios',
  ],
  axios: {},
  build: {      //  打包
    transpile: [/^element-ui/],
    extend(config, ctx) {       //  webpack自定義配置
    }
  }
}

nuxt的運行命令

{
  "scripts": {
    //  開發環境
    "dev": "cross-env NODE_ENV=development nodemon server/index.js --watch server",
    //  打包
    "build": "nuxt build",
    //  在服務端運行
    "start": "cross-env NODE_ENV=production node server/index.js",
    //  生成靜態頁面
    "generate": "nuxt generate"
  }
}

具體以及詳細的介紹可以去一個不知名的大神那里去學習,附上大神的地址https://juejin.im/post/5cc81e1a6fb9a032414f695b

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM