一.修改默认配置
终端输入vue inspect > output.js
会在项目根目录下生成output.js,可查看相关配置
public文件夹不可改、src不可改、main.js不可改
asset,components名字和其他文件可改
vue脚手架的这个文件可以修改配置,放在和package.json同路径下
举例,关闭语法检查。其他配置也是官网查看修改即可
总结
使用vue inspect > output.js可以查看到Vue脚手架的默认配置
使用vue.config.js可以对脚手架进行个性化定制
二.ref属性
1.被用来给元素或子组件注册引用信息(id的替代者)
2.应用在html标签上获取的是真实的DOM元素,应用在组件标签上的是组件实例对象(vc)
3.使用方式
打标签:<h1 ref="xxx">.....</h1> 或<School ref="xxx"><School>
获取:this.$refs.xxx
<template>
<div>
<h1 v-text="msg" ref="title"></h1>
<button ref="btn" @click="showDom">点我输出Dom</button>
<MySchool ref ="sch"></MySchool>
</div>
</template>
<script>
import MySchool from './components/MySchool.vue'
export default {
name:'App',
components:{MySchool},
data(){
return {
msg:"欢迎学习"
}
},
methods: {
showDom(){
console.log('@',this.$refs.title) //真实DOM元素
console.log('@',this.$refs.btn) //真实DOM元素
console.log('@',this.$refs.sch) //组件实例对象
}
},
}
</script>
<style>
</style>
自己写一个src步骤:1.main.js;2.App.vue;3.components中的组件
三.props配置
父传子,父组件在组件标签中写标签属性进行传递,子组件通过props接收。实现了组件在复用,但是数据是动态的
单向向下绑定,只能父组件修改子组件的值,子组件不能修改父组件的值。父影响子,子不影响父 不能在组件中直接修改 prop 传递过来的值,Vue 会给出警告 prop。
子组件props的顺序和组件用的时候顺序不一样没关系
(1)vc也就是this身上有data和props的数据
图中,父组件传递值的时候加了:,说明18是个表达式,接收到的是18,如果+1,就会显示19、另外如果要使用传过来的值的话,用this调用即可
(2)限制类型后,如果传参错误,会报错
(3)如果没有传不要声明
(4)不能修改props的数据
如果非要改,在data中重复制一份。(不能和props的名字一样,props优先级高,优先被接收放到网页上)
汇总:
目录结构
|-- App.vue
|-- components
| `-- Student.vue
`-- main.js
Student.vue
<template>
<div>
<h1>{{msg}}</h1>
<h2>学生姓名:{{name}}</h2>
<h2>学生性别:{{sex}}</h2>
<h2>学生年龄:{{myAge+1}}</h2>
<button @click="updateAge">尝试修改收到的年龄</button>
</div>
</template>
<script>
export default {
name:'Student',
data() {
console.log(this)
return {
msg:'我是一个尚硅谷的学生',
myAge:this.age
}
},
methods: {
updateAge(){
this.myAge++
}
},
//简单声明接收
// props:['name','age','sex']
//接收的同时对数据进行类型限制
/* props:{
name:String,
age:Number,
sex:String
} */
//接收的同时对数据:进行类型限制+默认值的指定+必要性的限制
props:{
name:{
type:String, //name的类型是字符串
required:true, //name是必要的
},
age:{
type:Number,
default:99 //默认值
},
sex:{
type:String,
required:true
}
}
}
</script>
App.vue
<template>
<div>
<Student name="李四" sex="女" :age="18"/>
</div>
</template>
<script>
import Student from './components/Student'
export default {
name:'App',
components:{Student}
}
</script>
main.js
//引入Vue
import Vue from 'vue'
//引入App
import App from './App.vue'
//关闭Vue的生产提示
Vue.config.productionTip = false
//创建vm
new Vue({
el:'#app',
render: h => h(App)
})