nuxt的配置

Posted on 2020-03-22 22:33  张雪冬前端学习园地  阅读(3619)  评论(0编辑  收藏  举报

nuxt项目配置

 

 

1.在nuxt.config.js文件中配置

  

1.1.build的配置

// 通过执行命令nuxt build --analyze来启用查看编译构建结果

build: {
     analyze: true
},



// 为 JS 和 Vue 文件设定自定义的 babel 配置。

babel: {
      babelrc: false,
      cacheDirectory: undefined,
      presets: ['@nuxt/babel-preset-app']
},

 

1.2.css的配置

// nuxt在这里配置全局的css样式,配置的样式文件默认的会在所有的页面引入。

1.先安装    npm install --save-dev node-sass sass-loader


2.在nuxt.config.js文件中配置全局样式文件

css: [
     // 项目里要用的 CSS 文件
     '~assets/css/main.css',

     // 项目里要使用的 less 文件
     '~~assets/css/main.scss'
],

 

1.3.head的配置

 

// 可以在head标签里面配置一些自定义的meta标签,和style样式文件
head: {
        meta: [
          { charset: 'utf-8' },
          { name: 'viewport', content: 'width=device-width, initial-scale=1' }
        ],
        link: [
          { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css?family=Roboto' }
        ]
}

 

1.4.loading配置

// 可以使用nuxt内置的加载进度条,也可以自定义样式。

// 在组件中可以使用this.$nuxt.$loading.start()来开启进度条,通过this.$nuxt.$loading.finish()来关闭进度条,
// 为了确保进度条运行没有问题,一个把它放在this.$nextTick(() => {}中执行
mounted () { this.$nextTick(() => { this.$nuxt.$loading.start() setTimeout(() => this.$nuxt.$loading.finish(), 500) }) } // 页面切换的时候如果不想要进度条的话在nuxt.config.js中配置 module.exports = { loading: false }

 

 

进度条样式的配置

 

 

自定义加载组件我们可以在components目录下创建自己定义的进度条组件

 

 

 

 

 

// 在nuxt.config.js中配置路径
module.exports = {
  loading: '~/components/loading.vue'
}

 

进度条时长问题

// 进度条进度的时间无法确定设置 duration 来部分解决这个问题,您可以预估需要多长时间完成。

// 您可以通过将continuous设置为true来更改默认行为,然后在达到100%后,进度条将在duration时间内再次收缩回0%。

// 当达到0%后仍未完成加载时,它将再次从0%开始增长到100%,这将重复直到加载完成。

 

 

1.5.plugins属性的配置

 

// 属性值可是数组可以使对象,是数组的话里面就是字符串形式的文件路径

    plugins: ['~/plugins/vue-inject.js'] plugins目录下的js文件


// 对象形式的plugins

plugins: [
        {
            src: '~/plugins/vue-inject.js',    // 是文件的路径

            mode: 'client'     // 表示只能在客户端使用,值为server表示服务端使用
        }
],


// 文件中可以定义在所有的页面和asyncData函数中和store中可以访问的一段功能函数,可以是一段属性


// 列如vue-inject.js文件中

import Vue from 'vue'

// 需要自定义一段方法或者属性,只能给所有的组件和页面使用

Vue.prototype.$toast = string => alert('您输入的名字是' + string)



// 这样的方法可以在页面和store(vuex)和asyncData中都可以使用

export default ({ app }, inject) => {
    inject('getData', string => alert('获取的数据是' + string))
}



// 在组件和页面中使用

this.$toast('小美')
this.$getData('明天吃饭')

 

 

 1.7.router的配置和transition动画的配置

// routeNameSplitter可以更改路由的路径格式

router: {
    routeNameSplitter: '/'
}


// linkActiveClass 全局通过路由默认激活的类

router: {
    linkActiveClass: 'active-link'
}


// linkExactActiveClass:路由默认精确的活动类

router: {
    linkExactActiveClass: 'exact-active-link'
}


// linkPrefetchedClass:路由默认的预取类,默认是禁用
router: {
    linkPrefetchedClass: 'nuxt-link-prefetched'
}


// transition动画的配置

// 可以在全局css中定义动画的样式

// 默认没有指定name名字的
.page-enter-active, .page-leave-active {
  transition: opacity .5s;
}
.page-enter, .page-leave-active {
  opacity: 0;
} 


// 指定了name属性的动画
.test-enter-active, .test-leave-active {
  transition: opacity .5s;
}
.test-enter, .test-leave-active {
  opacity: 0;
}


// 在切换页面需要动画的页面中指定

transition: 'test'


// 当动画为函数的话,可以判断路由从哪里来的从而加上动画
transition (to, from) {
     return to.query.page = 'test'
},


// 在nuxt.config.js文件中配置可以在所有的页面切换使用
transition: {
    name: 'test',
    mode: 'out-in'      // 指定动画的方式  
}