Nuxt.js的学习

Posted 捡黄金的少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nuxt.js的学习相关的知识,希望对你有一定的参考价值。

1、下载nuxt.js 的脚手架

npm install -g create-nuxt-app

这个命令默认下载的是最新版,现在的最新版是3.7.1,而我学习的是2.15.0,所以我需要指定版本安装(方便学习)

 下载指定nuxt.js的版本

npm install -g create-nuxt-app@v2.15.0

 2、  创建项目(nuxt-demo1)

create-nuxt-app nuxt-demo1

 3、页面文件件详情

4、nuxt.js的配置

5、pages和layout

         pages下面的index.vue,默认以组件   <nuxt />方式注册到layOut文件夹下面的default.vue文件中,如果要修改默认配置,则在pages文件夹下面的index.vue中添加layout,用于修改默认配置。

 layout() {
    return "blog"
  },

3、错误页的配置

在layouts文件夹下面配置一个错误页,如果出现错误,nuxt.js会主动找到这个错误页,并把它放到,defult.vue下面的<nuxt/>里面

如:没有找到test页面,把错误页面显示出来

 4、plugin插件的配置学习

1、注入Vue插件

将内容注入Vue实例,避免重复引入,在Vue原型上挂载注入一个函数,所有组件内都可以访问(不包含服务器端)。

plugins/vue-inject.js :

import Vue from 'vue'
// 这是一种配置插件的方法
// Vue.prototype.$myInjectedFunction=string => console.log("绑定到Vue中的实例",string)
// 上面相当于下面的简写
Vue.prototype.$myInjectedFunction=function(string){
console.log("绑定到Vue实例中的参数:",string)
}

nuxt.config.js :

export default {
 plugins: ['~/plugins/vue-inject.js']
}

plugin-vue.vue : 

mount是运行在客户端的,created是运行在服务器端的

export default {
 mounted () {
 this.$myVueFunction('test')
 }
}

访问 http://192.168.13.123:3000/plugin-vue,就可以查看控制台打印的日志

2、注入 context

plugins/ctx-inject.js :

export default ({ app }, inject) => {
 app.myContextFunction = string => console.log('绑定到Context的方法参数', string)
}

 nuxt.config.js

export default {
 plugins: ['~/plugins/ctx-inject.js']
}

 plugin-ctx.vue :

asyncData和layout都是运行的服务器端代码,return "blog";指定显示的页面。默认是layouts/defult.vue

  layout(context) {
    context.app.myContextFunction("context");
    return "blog";
  },
  data() {
    return {};
  },
  asyncData({ app }) {
    app.myContextFunction("在asyncData中的context");
  },

 3、同时注入在 context , Vue , Vuex 实例

plugins/all-inject.js

export default ({ app }, inject) => {
 inject('myAllFunction', string => console.log('绑定到Context和Vue的方法参数', string))
}

uxt.config.js : 

export default {
 plugins: ['~/plugins/all-inject.js']
}

plugin-all.vue

 //服务端
  asyncData({ app }) {
    //   方法名称前面不能少了$
    app.$myAllFuntion("asyncData的值");
  },
  //不能使用Created(),因为created是服务端渲染
  //客户端渲染(Vue)
  mounted() {
    this.$myAllFuntion("mounted的值");
  },

 插件使用限制

export default {
 plugins: [
 { src: '~/plugins/combined-inject.js' },
 { src: '~/plugins/combined-inject.js', mode: 'client' }, // 插件只会在客户端运行。
 { src: '~/plugins/combined-inject.js', mode: 'server' }, // 插件只会在服务端运行。
 ]
}

 如果只允许服务端,那么放在mounted中的客户端,拿不到插件就会报错

 

以上是关于Nuxt.js的学习的主要内容,如果未能解决你的问题,请参考以下文章

nuxt.js学习篇一

Nuxt.js的学习

Nuxt.js学习 --- Nuxt目录结构详解Nuxt常用配置项Nuxt路由配置和参数传递

Nuxt.js的学习路由组件的学习

nuxt.js的学习 elementUI配置博客头部

nuxt.js1-8