VUE学习(六) | 青训营笔记

87 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第15天

(接上文)

3. 使用Vue CLI脚手架

3.1. 初始化脚手架

3.1.1. 说明

Vue 脚手架是 Vue 官方提供的标准化开发工具(开发平台) 最新的版本是 4.x

文档:Vue CLI

3.1.2. 具体步骤

如果下载缓慢可配置 npm 淘宝镜像:npm config set registry

registry.npm.taobao.org

  • 全局安装@vue/cli:npm install -g @vue/cli
  • 切换到要创建项目的目录,然后使用命令创建项目:vue create xxxx
  • 选择使用vue的版本
  • 启动项目:npm run serve
  • 暂停项目:Ctrl+C
  • Vue 脚手架隐藏了所有 webpack 相关的配置,若想查看具体的 webpakc 配置,请执行:

vue inspect > output.js

3.1.3. 分析脚手架结构

脚手架文件结构:

  • .文件目录
  • ├── node_modules
  • ├── public
  • │ ├── favicon.ico: 页签图标
  • │ └── index.html: 主页面
  • ├── src
  • │ ├── assets: 存放静态资源
  • │ │ └── logo.png
  • │ │── component: 存放组件
  • │ │ └── HelloWorld.vue
  • │ │── App.vue: 汇总所有组件
  • │ └── main.js: 入口文件
  • ├── .gitignore: git版本管制忽略的配置
  • ├── babel.config.js: babel的配置文件
  • ├── package.json: 应用包配置文件
  • ├── README.md: 应用描述文件
  • └── package-lock.json: 包版本控制文件

3.1.4. render函数

关于不同版本的函数:

vue.js 与 vue.runtime.xxx.js的区别:

  • vue.js 是完整版的 Vue,包含:核心功能+模板解析器
  • vue.runtime.xxx.js 是运行版的 Vue,只包含核心功能,没有模板解析器
  • 因为 vue.runtime.xxx.js 没有模板解析器,所以不能使用 template 配置项,需要使用 render函数接收到的createElement 函数去指定具体内容

3.1.5. 修改默认配置

-vue.config.js 是一个可选的配置文件,如果项目的(和 package.json 同级的)根目录中存在这个文件,那么它会被@vue/cli-service自动加载

  • 使用 vue.config.js 可以对脚手架进行个性化定制,详见配置参考 | Vue CLI
module.exports = {
    pages: {
        index: {
            // 入口
            entry: 'src/index/main.js'
        }
    },
  // 关闭语法检查
  lineOnSave:false
}

3.2. ref属性

ref属性:

  • 被用来给元素或子组件注册引用信息(id的替代者)
  • 应用在html标签上获取的是真实DOM元素,应用在组件标签上获取的是组件实例对象(vc)

使用方式:

  • 打标识:<h1 ref="xxx"></h1><School ref="xxx"></School>
  • 获取:this.$refs.xxx

3.3. props配置项

props配置项:

  • 功能:让组件接收外部传过来的数据

  • 传递数据:<Demo name="xxx"/>

  • 接收数据:

    • 第一种方式(只接收):props:['name']

    • 第二种方式(限制数据类型):props:{name:String}

    • 第三种方式(限制类型、限制必要性、指定默认值):

props:{
    name:{
    	type:String, //类型
        required:true, //必要性
        default:'JOJO' //默认值
    }
}
  • props是只读的,Vue底层会监测你对props的修改,如果进行了修改,就会发出警告,若业务需求确实需要修改,那么请复制props的内容到data中一份,然后去修改data中的数据

3.4. mixin混入

局部混入:

export const mixin = {
    methods: {
        showName() {
            alert(this.name)
        }
    },
    mounted() {
        console.log("你好呀~")
    }
}

全局混入:

import Vue from 'vue'
import App from './App.vue'
import {mixin} from './mixin'

Vue.config.productionTip = false
Vue.mixin(mixin)

new Vue({
    el:"#app",
    render: h => h(App)
})

mixin(混入):

  1. 功能:可以把多个组件共用的配置提取成一个混入对象

  2. 使用方式:

    1. 定义混入:
    const mixin = {
    data(){....},
    methods:{....}
    ....
    }
    
    1. 使用混入:

      1. 全局混入:Vue.mixin(xxx)
      2. 局部混入:mixins:['xxx']
  3. 备注:

  • 组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”,在发生冲突时以组件优先
var mixin = {
	data: function () {
		return {
    		message: 'hello',
            foo: 'abc'
    	}
  	}
}

new Vue({
  	mixins: [mixin],
  	data () {
    	return {
      		message: 'goodbye',
            bar: 'def'
    	}
    },
  	created () {
    	console.log(this.$data)
    	// => { message: "goodbye", foo: "abc", bar: "def" }
  	}
})
  • 同名生命周期钩子将合并为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用。
var mixin = {
  	created () {
    	console.log('混入对象的钩子被调用')
  	}
}

new Vue({
  	mixins: [mixin],
  	created () {
    	console.log('组件钩子被调用')
  	}
})

// => "混入对象的钩子被调用"
// => "组件钩子被调用"