Vue框架学习篇(五)
1 组件
1.1 组件的基本使用
1.1.1 基本流程
a 引入外部vue组件必须要的js文件
< script src = " ../js/httpVueLoader.js" > </ script>
b 创建.vue文件
<template>
<!--公共模板内容-->
</template>
<script>
<!--事件绑定的书写位置-->
</script>
<style>
<!--样式文件的书写位置-->
</style>
c 引入外部组件,并给其取名
var 组件名= httpVueLoader ( 组件相对路径地址) ;
d 注册组件
Vue. component ( 'key值(使用时的标签名)' , 组件名)
1.1.2 示例代码
a header.vue代码
<template>
<header>
<h3>组件基本功能测试</h3>
</header>
</template>
<script>
</script>
<style>
header{
color:red;
border:1px solid blue;
}
</style>
b 页面代码
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< meta http-equiv = " X-UA-Compatible" content = " IE=edge" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 组件的基本使用</ title>
< script src = " ../js/vue.js" > </ script>
< script src = " ../js/httpVueLoader.js" > </ script>
</ head>
< body>
< div id = " app" >
< tou> </ tou>
< div> 这里是中间部分的内容</ div>
</ div>
< script>
var tou= httpVueLoader ( "../vue/header.vue" ) ;
Vue. component ( 'tou' , tou) ;
new Vue ( {
el : "#app" ,
} )
</ script>
</ body>
</ html>
1.1.3 运行效果
1.2 组件的绑定事件
1.2.1 使用方法
module. exports= {
methods : {
方法名 ( ) {
}
}
}
1.2.2 示例代码
a bangding.vue文件
<template>
<header>
<button @click="t()">点击触发弹窗效果</button>
</header>
</template>
<script>
module.exports={
methods:{
t(){
alert('测试组件中事件的绑定');
}
}
}
</script>
<style>
header{
color:red;
border:1px solid blue;
}
</style>
b 页面文件
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< meta http-equiv = " X-UA-Compatible" content = " IE=edge" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 测试绑定事件</ title>
< script src = " ../js/vue.js" > </ script>
< script src = " ../js/httpVueLoader.js" > </ script>
</ head>
< body>
< div id = " app" >
< tou> </ tou>
< div> 测试绑定事件</ div>
</ div>
< script>
var tou= httpVueLoader ( "../vue/bangding.vue" ) ;
Vue. component ( 'tou' , tou) ;
new Vue ( {
el : "#app" ,
} )
</ script>
</ body>
</ html>
1.2.3 运行截图
1.3 父组件往子组件传值
1.3.1 使用方法
//① 在.vue文件里面写入如下代码
module.exports={
props:[传递参数名1,传递参数名2...传递参数名n],
}
//②在vue文件中使用,是通过{{传递参数名}} 来使用(templates标签里面)
//③在页面文件中,通过:传递参数名="data里面的数据所对应的key值"的方式进行传值(可以联想到之前的:title)
<组件所使用的标签名 :参数名字="数据所对应的key"></组件所使用的标签名>
1.3.2 示例代码
a transmitValue.vue文件
<template>
<footer>
<h3>得到外部传入的参数 {{r}}-----{{m}}</h3>
</footer>
</template>
<script>
module.exports={
props:['r','m'],
}
</script>
<style>
footer{
color:orangered;
border:1px solid blue;
}
</style>
b 页面文件
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< meta http-equiv = " X-UA-Compatible" content = " IE=edge" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< title> 测试绑定事件</ title>
< script src = " ../js/vue.js" > </ script>
< script src = " ../js/httpVueLoader.js" > </ script>
</ head>
< body>
< div id = " app" >
< div> 测试绑定事件</ div>
< wei :r = " className1" :m = " className2" > </ wei>
</ div>
< script>
var wei= httpVueLoader ( "../vue/transmitValue.vue" ) ;
Vue. component ( 'wei' , wei) ;
new Vue ( {
el : "#app" ,
data : {
className1 : 'HTML' ,
className2 : 'JAVA' ,
}
} )
</ script>
</ body>
</ html>
1.3.3 运行截图
2 Vue的生命周期
2.1 创建
2.1.1 组件实例创建之初
a 对应的方法
beforeCreate() {
}
b 表现形式
el元素不存在,data和methods里面的数据还没有初始化
2.1.2 组件实例已经完全创建
a 对应的方法
created() {
}
b 表现形式
el元素不存在
data和methods里面的数据已经初始化好了
2.2 挂载
2.2.1 挂载前
a 对应的方法
beforeMount() {
},
b 表现形式
el元素存在,data和methods里面的数据已经有数据了
模板在内存中已经编译好了,但尚未挂载到页面中
2.2.2 挂载后
a 对应的方法
mounted() {
}
b 表现形式
el元素存在,data和methods里面的数据已经有数据了
页面已经被渲染成功了,此时进入运行状态
一般在这个方法里面写异步提交
2.3 修改
2.3.1 修改前
a 对应的方法
beforeUpdate() {
},
b 表现形式
组件数据更新前使用
页面数据为旧,但得到的data数据是最新的
2.3.2 修改后
a 对应的方法
updated() {
}
b 表现形式
组件数据更新以后,页面和data数据都是最新的(已经同步完成)
2.4 销毁
2.4.1 销毁前
a 对应的方法
beforeDestroy() {
}
b 表现形式
组件销毁前调用,vue实例从运行阶段进入到销毁阶段
但此时vue实例上的所有东西都是可以用的
2.4.2 销毁后
a 对应的方法
destroyed() {
}
b 表现形式
组件销毁后调用,vue实例上的所有东西都不可以用了
2.5 测试
2.5,1 测试代码
<! DOCTYPE html >
< html lang = " en" >
< head>
< meta charset = " UTF-8" >
< meta http-equiv = " X-UA-Compatible" content = " IE=edge" >
< meta name = " viewport" content = " width=device-width, initial-scale=1.0" >
< script src = " ../js/vue.js" > </ script>
< title> Vue的生命周期</ title>
</ head>
< body>
< div id = " app" >
年龄{{age}}
< button @click = " age=30" > 修改年龄</ button>
</ div>
< script>
var v= new Vue ( {
el : '#app' ,
data : {
age : 20
} ,
beforeCreate ( ) {
console. log ( 'beforeCreate----EL元素' + this . $el+ '数据:' + this . age) ;
} ,
created ( ) {
console. log ( 'created---EL元素' + this . $el+ '数据:' + this . age) ;
} ,
beforeMount ( ) {
console. log ( 'beforeMount---EL元素' + this . $el+ '数据:' + this . age) ;
} ,
mounted ( ) {
console. log ( 'mounted--EL元素' + this . $el+ '数据:' + this . age) ;
} ,
beforeUpdate ( ) {
console. log ( 'beforeUpdae--EL元素' + this . $el+ '数据:' + this . age) ;
} ,
updated ( ) {
console. log ( 'updated--EL元素' + this . $el+ '数据:' + this . age) ;
} ,
beforeDestroy ( ) {
console. log ( 'beforeDestory--EL元素' + this . $el+ '数据:' + this . age) ;
} ,
destroyed ( ) {
console. log ( 'destroyed--EL元素' + this . $el+ '数据:' + this . age) ;
} ,
} )
</ script>
</ body>
</ html>
2.5.2 运行截图
a 初次进入页面时
b 变更age值后