这是我参与「第四届青训营 」笔记创作活动的第15天
(接上文)
3. 使用Vue CLI脚手架
3.1. 初始化脚手架
3.1.1. 说明
Vue 脚手架是 Vue 官方提供的标准化开发工具(开发平台) 最新的版本是 4.x
文档:Vue CLI
3.1.2. 具体步骤
如果下载缓慢可配置 npm 淘宝镜像:npm config set registry
- 全局安装@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(混入):
-
功能:可以把多个组件共用的配置提取成一个混入对象
-
使用方式:
- 定义混入:
const mixin = { data(){....}, methods:{....} .... }-
使用混入:
- 全局混入:
Vue.mixin(xxx) - 局部混入:
mixins:['xxx']
- 全局混入:
-
备注:
- 组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”,在发生冲突时以组件优先。
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('组件钩子被调用')
}
})
// => "混入对象的钩子被调用"
// => "组件钩子被调用"