真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Vue基于Nuxt.js實現(xiàn)服務(wù)端渲染-創(chuàng)新互聯(lián)

這篇文章主要介紹Vue基于Nuxt.js實現(xiàn)服務(wù)端渲染,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

拉薩網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),拉薩網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為拉薩上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的拉薩做網(wǎng)站的公司定做!

一、快速模板

在已經(jīng)安裝了 vue-cli 的前提下,可以快速創(chuàng)建一個 nuxt 的項目模板

vue init nuxt-community/starter-template MyProject

其中 MyProject 是項目文件夾名稱,可自定義

通過 npm install (似乎用 yarn install 更順利) 安裝依賴之后,可以直接 npm run dev 在 開發(fā)環(huán)境 啟動項目

默認(rèn)啟動的地址為 http://localhost:3000/,可以在 package.json 中添加以下配置來修改主機端口號

 "config": {
  "nuxt": {
   "host": "0.0.0.0",
   "port": "7788"
  }
 },

開發(fā)完成后執(zhí)行 npm run build 打包代碼,最后 npm start 啟動服務(wù)

二、重要目錄

生成的 項目目錄 如下

Vue基于Nuxt.js實現(xiàn)服務(wù)端渲染

大部分文件夾名稱 都是 nuxt 默認(rèn)保留的,不可修改

其中比價比較關(guān)鍵的目錄有三個:

1. components 組件目錄

Vue基于Nuxt.js實現(xiàn)服務(wù)端渲染

一般用來存放 非頁面級別 的組件,如 header、footer 等公共組件

該目錄下的組件具有常規(guī) vue 組件的方法和特性,不會被 nuxt.js 擴展特性

2. layouts 布局目錄

Vue基于Nuxt.js實現(xiàn)服務(wù)端渲染

可以修改該目錄下的 default.vue 來修改默認(rèn)布局

其中 是必需的,頁面的主體內(nèi)容會顯示在這里 (類似于根節(jié)點的

此外還可以在目錄下新增 error.vue 作為錯誤頁面,具體的寫法可以參考官方文檔

3. pages 頁面目錄

Vue基于Nuxt.js實現(xiàn)服務(wù)端渲染

用于存放頁面級別的組件,nuxt 會根據(jù)該目錄下的頁面結(jié)構(gòu)生成路由

比如上圖中的頁面結(jié)構(gòu),會生成這樣的路由配置:

router: {
 routes: [
  {
   name: 'index',
   path: '/',
   component: 'pages/index.vue'
  },
  {
   name: 'about',
   path: '/about',
   component: 'pages/about.vue'
  },
  {
   name: 'classroom',
   path: '/classroom',
   component: 'pages/classroom.vue',
   children: [
    {
     path: 'student',
     component: 'pages/classroom/student.vue',
     name: 'student'
    },
    { //定義帶參數(shù)的動態(tài)路由,需要創(chuàng)建對應(yīng)的以下劃線作為前綴的 Vue 文件或目錄
     path: ':id',
     component: 'pages/classroom/_id.vue',
     name: 'classroom-id'
    }
   ]
  }
 ]
}

此外,該目錄下的 vue 組件還具備一些 Nuxt.js 提供的特殊功能特性

其中 asyncData 方法比較常用,支持異步數(shù)據(jù)處理

這個方法會在 頁面組件 每次加載之前被調(diào)用,然后獲取數(shù)據(jù)并返回給當(dāng)前組件

asyncData ({ params, error }) {
  return axios.get(`api/posts/${params.id}`)
  .then((res) => {
   return { name: res.data.name}
  })
  .catch((e) => {
   error({ statusCode: 404, message: 'not found' })
  })
 }

asyncData 方法的第一個參數(shù)為上下文對象 context,具體屬性可以 查看這里

由于asyncData方法是在組件初始化前被調(diào)用的,所以在方法內(nèi)是沒有辦法通過 this 來引用組件的實例對象

三、使用插件

如果項目中還需要引入其他的第三方插件,可以直接在頁面中引入,這樣在打包的時候,會將插件打包到頁面對應(yīng)的 js 里面

但要是別的頁面也引入了同樣的插件,就會重復(fù)打包。如果沒有需要分頁打包的需求,這時候可以配置 plugins

以 element-ui 為例,在安裝了 element-ui 之后,在 plugins 目錄下創(chuàng)建 elementUI.js

Vue基于Nuxt.js實現(xiàn)服務(wù)端渲染

然后在根目錄的 nuxt.config.js 中添加配置項 build.vendor 和 plugins

 build: {
  vendor: ['~/plugins/elementUI.js']
 },
 plugins: [
  {src: '~/plugins/elementUI.js'},
 ]

這里的 plugins 屬性用來配置 vue.js 插件,也就是 可以用 Vue.user() 方法 的插件

默認(rèn)只需要 src 屬性,另外還可以配置 ssr: false,讓該文件只在客戶端被打包引入

如果是像 axios 這種第三方 (不能 use) 插件,只需要在 plugins 目錄下創(chuàng)建 axios.js

// axios.js

import Vue from 'vue'
import axios from 'axios'

const service = axios.create({
 baseURL: '/api'
})

Vue.prototype.$ajax = axios
export default service

然后在 build.vendor  中添加配置 (不需要配置 plugins)

build: {
 vendor: ['~/plugins/axios.js']
}

這樣在打包的時候,就會把 axios 打包到 vendor.js 中

四、Vuex 狀態(tài)樹

如果在 store 目錄下創(chuàng)建了 index.js,nuxt.js 會根據(jù)該目錄下的文件創(chuàng)建 Vuex 狀態(tài)樹

// store/index.js

import Vue from 'vue'
import Vuex from 'vuex'
import Axios from '~/plugins/axios.js';

Vue.use(Vuex)

const store = () => new Vuex.Store({
 state: {
  author: 'WiseWrong',
  info: ''
 },
 mutations: {
  setInfo (state, val) {
   state.info = val
  }
 },
 actions: {
  loadAboutMeInfo ({commit, state}) {
   return Axios.get(`/about`)
    .then(res => {
     console.log('ajax is success')
     console.log(res.data.info)
     commit('setInfo', res.data.info)
    })
    .catch(err => {
     console.log('error')
    })
  }
 }
})

export default store

Nuxt.js 內(nèi)置引用了 vuex 模塊,不需要額外安裝

上面的代碼中,我在 actions 中寫了一個 loadAboutMeInfo() 方法,用來請求 /api/about 接口

然后在 about.vue 頁面中調(diào)用

// about.vue 



成果演示:

Vue基于Nuxt.js實現(xiàn)服務(wù)端渲染

vue是什么

Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式JavaScript框架,Vue與其它大型框架的區(qū)別是,使用Vue可以自底向上逐層應(yīng)用,其核心庫只關(guān)注視圖層,方便與第三方庫和項目整合,且使用Vue可以采用單文件組件和Vue生態(tài)系統(tǒng)支持的庫開發(fā)復(fù)雜的單頁應(yīng)用。

以上是“Vue基于Nuxt.js實現(xiàn)服務(wù)端渲染”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


本文名稱:Vue基于Nuxt.js實現(xiàn)服務(wù)端渲染-創(chuàng)新互聯(lián)
文章源于:http://weahome.cn/article/dsiddh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部