1. 程式人生 > >nuxt.config.js 的配置

nuxt.config.js 的配置

nuxt.config.js 是 Nuxt.js 的配置檔案,可以通過針對一系列引數的設定來完成 Nuxt.js 專案的配置,可以在Nuxt.js 官網 找到針對這個檔案的說明,下面舉例一些常用的配置:

head: 可以在這個配置項中配置全域性head ,如定義網站的標題、 meta ,引入第三方的 CSS、JavaScript 檔案等:

 head: {
  title: '百姓店鋪',
  meta: [
     { charset: 'utf-8' },
     { name: 'viewport', content: 'width=device-width, initial-scale=1' },
     { name: 'applicable-device', content: 'pc,mobile' },
  ],
  link: [
    { rel: 'icon', type: 'image/x-icon', href: '/logoicon.ico' }//位址列小圖示的引入
     { rel: 'stylesheet', type: 'text/css', href: 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'},
  ],
  script: [
     {src: 'https://code.jquery.com/jquery-3.1.1.min.js'},
     {src: 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js'}
  ]
},

build: 這個配置項用來配置 Nuxt.js 專案的構建規則,即 Webpack 的構建配置,如通過 vendor 欄位引入第三方模組,通過 plugin 欄位配置 Webpack 外掛,通過 loaders 欄位自定義 Webpack 載入器等。通常我們會在 build 的 vendor 欄位中引入 axios 模組,從而在專案中進行 HTTP 請求( axios 也是 Vue.js 官方推薦的 HTTP 請求框架)。

build: {
   vendor: ['core-js', 'axios'],
   loaders: [
     {
       test: /\.(scss|sass)$/,
       use: [{
         loader: "style-loader"
       }, {
         loader: "css-loader"
       }, {
         loader: "sass-loader"
       }]
     },
     {
       test: /\.(png|jpe?g|gif|svg)$/,
       loader: 'url-loader',
       query: {
         limit: 1000,
         name: 'img/[name].[hash:7].[ext]'
       }
     },
     {
       test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
       loader: 'url-loader',
       query: {
         limit: 1000,
         name: 'fonts/[name].[hash:7].[ext]'
       }
     }
   ]
 }

css: 在這個配置項中,引入全域性的 CSS 檔案,之後每個頁面都會被引入。

  css: [ //該配置項用於定義應用的全域性(所有頁面均需引用的)樣式檔案、模組或第三方庫。
    'element-ui/lib/theme-chalk/index.css',//在建立專案的時候安裝了elememt外掛,這裡自動引入外掛的預設樣式
    '@/assets/css/reset.css',   //引入assets下的reset.css全域性標籤重置樣式
    '@/assets/main.css'  //引入全域性的動畫樣式
  ],

router: 可以在此配置路由的基本規則,以及進行中介軟體的配置。例如,你可以建立一個用來獲取 User-Agent

的中介軟體,並在此載入。

loading: Nuxt.js 提供了一套頁面內載入進度指示元件,可以在此配置顏色,禁用,或是配置自定義的載入元件。

env: 可以在此配置用來在服務端和客戶端共享的全域性變數

目錄即路由

Nuxt.js 在 vue-router 之上定義了一套自動化的生成規則,。例如,我們有以下目錄結構:

這個目錄下含有一個基礎路由(無引數)以及兩個動態路由(帶引數),Nuxt.js 會生成如下的路由配置表(可以在 .nuxt 目錄下的 router.js 檔案中找到):

routes: [
  {
    path: "/",
    component: _abe13a78,
    name: "index"
  },
  {
    path: "/article/:id?",
    component: _48f202f2,
    name: "article-id"
  },
  {
    path: "/:page",
    component: _5ccbb43a,
    name: "page"
  }
]

對於 article-id 這個路由,路徑中帶有 :id? 引數,表明這是一個可選的路由,如果要將其設為必選,則必須在 article 的目錄下新增 index.vue 檔案。

再看下面一個例子:

由於有同名檔案和資料夾的存在,Nuxt.js 會為我們生成巢狀路由,生成的路由結構如下,在使用時,需要增加 <nuxt-child /> 標籤來顯示子檢視的內容。

routes: [
  {
    path: "/article",
    component: _f930b330,
    children: [
      {
        path: "",
        component: _1430822a,
        name: "article"
      },
      {
        path: ":id",
        component: _339e8013,
        name: "article-id"
      }
    ]
  }
]