搭建Nuxt項目(搭配Element UI缤灵、axios)

使用Nuxt

Nuxt.js文檔:https://zh.nuxtjs.org/guide/

開始

初始化Nuxt項目

npx create-nuxt-app <項目名>

// or

yarn create nuxt-app <項目名>

運行

npm run dev

路由

基礎路由

Nuxt.js依據(jù) pages 目錄結構自動生成 vue-router 模塊的路由配置膊升。

舉例悼做, pages 如下:

pages/
--| user/
-----| index.vue
-----| one.vue
--| index.vue

那么皆串,Nuxt.js 自動生成的路由配置如下:

router: {
  routes: [
    {
      name: 'index',
      path: '/',
      component: 'pages/index.vue'
    },
    {
      name: 'user',
      path: '/user',
      component: 'pages/user/index.vue'
    },
    {
      name: 'user-one',
      path: '/user/one',
      component: 'pages/user/one.vue'
    }
  ]
}

路由傳參

由于在Nuxt.js中殷费,不需要配置 vue-router 嘹屯,路由配置完全依賴 pages 目錄的結構攻询。所以傳參時也不例外。

vue-router 中州弟,通過 path: '/route/:param' 定義參數(shù)钧栖,而在Nuxt.js中,通過 _ 為前綴命名的Vue文件或目錄婆翔。

通過 $route.params.參數(shù)名 取到參數(shù)值拯杠。

layout

在項目中,通常有一些組件啃奴,可以被多個頁面復用潭陪,如 header、footer最蕾、nav 等依溯,這些組件可以共同組成一個布局。

在Nuxt項目結構中瘟则,有 /layouts 文件夾誓沸,在這個文件夾中寫布局文件。通常是引入 /components 里的組件壹粟,再加上 <nuxt />拜隧。

舉例:

<template>
  <div class="mLayout">
    <m-header />
    <!-- 這個是“坑”宿百,使用了這個布局文件的頁面生成的內容,將出現(xiàn)在下面的這個“坑”里面 -->
    <nuxt />
  </div>
</template>

<script>
// 需要注意的一個小細節(jié) 在Nuxt項目中 ~ 代表根目錄
import mHeader from '~/components/mHeader.vue'

export default {
  components: {
    'm-header': mHeader
  }
}
</script>

在項目中使用Element-UI

安裝element-ui

npm i element-ui -S

創(chuàng)建ElementUI.js

/plugins 文件夾下面洪添,創(chuàng)建 ElementUI.js 文件垦页。

import Vue from 'vue'
import ElementUI from 'element-ui'
Vue.use(ElementUI)

在nuxt.config.js中添加配置

css: [
  'element-ui/lib/theme-chalk/index.css'
],
plugins: [
  // ssr: true表示這個插件只在服務端起作用
  {src: '~/plugins/ElementUI', ssr: true }
],
build: {
  // 防止element-ui被多次打包
  vendor: ['element-ui']
}

在項目中使用axios

安裝axios

npm i axios -S

創(chuàng)建axios.js

/plugins 文件夾下面,創(chuàng)建 axios.js 文件干奢。

import axios from 'axios'

// 設置baseURL
axios.defaults.baseURL = 'http://localhost:3301'

// 創(chuàng)建axios對象痊焊,暴露
export default axios.create()

在nuxt.config.js中添加配置

防止重復打包

build: {
  vendor: ['axios']
}

使用

在項目的任意一個Vue文件中,引入生成了的axios對象:

import axios from '~/plugins/axios'

如果沒有事先創(chuàng)建axios.js忿峻,也可以直接引入axios模塊來使用:

import axios from 'axios'

先創(chuàng)建axios.js薄啥,生成axios對象的好處是,可以做一些配置逛尚,如baseURL等垄惧。

SEO優(yōu)化

全局

修改 nuxt.config.js 配置文件,項目生成的每一個 html 文件的 <head> 中都會加入此配置绰寞。

  head: {
    // title: pkg.name,
    title: '想被百度垂青的標題',
    meta: [
      { charset: 'utf-8' },
      { name: 'viewport', content: 'width=device-width, initial-scale=1' },
      { hid: 'description', name: 'description', content: pkg.description },
      // 其它那些是本來就有的到逊,加上的內容在這里
      {
        name: 'keywords',
        content:
          '很多個很多個關鍵詞很多個很多個關鍵詞很多個很多個關鍵詞'
      }
    ],
    link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }]
  },

局部

某個 Vue 文件中:

<script>
export default {
  layout: 'mLayout',
  // SEO優(yōu)化
  head () {
    return {
      title: '標題',
      meta: [
        {
          name: 'keywords',
          content: '很多個很多個關鍵詞很多個很多個關鍵詞很多個很多個關鍵詞'
        }
      ]
    }
  }
}
</script>

馬克Eslint的一個小坑

在Nuxt項目中,個人出現(xiàn)了Eslint抽風的情況滤钱,報了諸如 Attribute "for" should be on a new line vue/max-attributes-per-line 的error觉壶,并且eslint不能正確地格式化代碼。

解決

修改 .eslintrc.js 文件的配置件缸,在 rules 中加上以下配置铜靶,就不會報錯了。

'vue/max-attributes-per-line': [
  2,
  {
    singleline: 1,
    multiline: {
      max: 1,
      allowFirstLine: true
    }
  }
]
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末他炊,一起剝皮案震驚了整個濱河市旷坦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌佑稠,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旗芬,死亡現(xiàn)場離奇詭異舌胶,居然都是意外死亡,警方通過查閱死者的電腦和手機疮丛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門幔嫂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人誊薄,你說我怎么就攤上這事履恩。” “怎么了呢蔫?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵切心,是天一觀的道長飒筑。 經(jīng)常有香客問我,道長绽昏,這世上最難降的妖魔是什么协屡? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮全谤,結果婚禮上肤晓,老公的妹妹穿的比我還像新娘。我一直安慰自己认然,他們只是感情好补憾,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卷员,像睡著了一般盈匾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上子刮,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天威酒,我揣著相機與錄音,去河邊找鬼挺峡。 笑死葵孤,一個胖子當著我的面吹牛,可吹牛的內容都是我干的橱赠。 我是一名探鬼主播尤仍,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼狭姨!你這毒婦竟也來了宰啦?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤饼拍,失蹤者是張志新(化名)和其女友劉穎赡模,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體师抄,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡漓柑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了叨吮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辆布。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖茶鉴,靈堂內的尸體忽然破棺而出锋玲,到底是詐尸還是另有隱情,我是刑警寧澤涵叮,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布惭蹂,位于F島的核電站伞插,受9級特大地震影響,放射性物質發(fā)生泄漏剿干。R本人自食惡果不足惜蜂怎,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望置尔。 院中可真熱鬧杠步,春花似錦、人聲如沸榜轿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谬盐。三九已至甸私,卻和暖如春窝趣,著一層夾襖步出監(jiān)牢的瞬間症脂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工型檀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留砸烦,地道東北人弃鸦。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像幢痘,于是被迫代替她去往敵國和親唬格。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內容