御剑乘风来
div>
transition>
使用动画的钩子函数实现
<transition>
<div>我是需要过渡动画的元素</div>
</transition>
<transition
@before-enter = 'beforeEnter'
@enter = 'enter'
@after-enter = 'afterEnter'
@before-leave = 'beforeLeave'
@leave = 'leave'
@after-leave = 'afterLeave'
>
<div>我是需要过渡动画的元素</div>
</transition>
new Vue({
el:'#app',
data:{},
methods:{
beforeEnter(){
},
enter(el,done){
el.offsetWidth
done()
},
afterEnter(){
},
beforeLeave(){
},
leave(){
},
afterLeave(){
}
}
})
组件
组件就是对视图的封装,方便重复使用
模块是对功能逻辑的封装
注意:
- 定义组件时如果使用的是驼峰命名,那么使用组件时需要将驼峰的大写字母转成小写,并且用-连接两个单词
Vue.component('myCom',{
template:'我是一个驼峰命名的组件
'
})
<my-com></my-com>
- 组件的
template
属性中的模版内部如果有多个元素,必须被包含在唯一的一个根元素中
<template>
<div>
<p>我是p元素</p>
<span>我是span元素</span>
</div>
</template>
- 子组件使用
components
属性进行定义,定义好的子组件只能在父组件的模板中使用
<template id='father'>
<div>
<son></son>
</div>
</template>
Vue.component('father',{
template:'#father',
components:{
son:{
template:'我是son组件
'
}
}
})
组件的三种定义方式
var dv = Vue.extend({
template:'我是一个组件
'
})
Vue.component('com',dv)
<com></com>
Vue.component('com',{
template:''
})
<com></com>
Vue.component('com',{
template:'#temp'
})
<template id='tmpl'>
<div>
<p>我是p元素</p>
<span>我是span元素</span>
</div>
</template>
<com></com>
is属性和component实现组件切换
// comname 是哪个组件名,则component就会被渲染成哪个组件
// component 就是一个占位标签
new Vue({
el:'#app',
comname:'login'
})
父子组件传值
父向子传值
new Vue({
el:'#app'
data:{
msg:'我是要传递给子组件的数据'
},
components:{
son:{
template:'我是子组件{{message}}
',
props:['message']
}
}
})
<div id='app'>
<son v-bind:message = 'msg'></son>
</div>
son:{
template:'我是子组件
',
props:['message']
}
子向父传值
发布订阅者 设计模式
new Vue({
el:'#app'
components:{
son:{
template:'我是子组件{{message}}
',
data:function(){
return {
msg:'传给父组件的数据'
}
}
}
}
})
this.$emit('func',this.msg)
<div id='app'>
<son @func = 'getmsg'></son>
</div>
methods:{
getmsg:function(data){
}
}
非父子组件传值
使用event bus(事件总线):利用一个共享的vue实例对象来进行数据的传递. 同时采用的是 发布-订阅者模式
然后在componentA和componentB组件中导入该实例进行使用**
export default var vm = new Vue();
vm.$emit('事件名称','需要传递的数据')
send(){
this.$emit('事件名称','需要传递的数据')
}
vm.$on('事件名称',function(data){
})
生命周期钩子函数
回调函数:一个函数被当做参数进行传递的时候,称作这个函数为回调函数
构造函数:一个函数被new 关键字引导执行的时候,称作这个函数为构造函数
钩子函数: 一个应用程序或者框架内部提前定义好的一批函数,这些函数会在特定的时间段自动执行
生命周期: 一个程序会存在初始化 - 运行 - 销毁等阶段,这些阶段统称为该程序的生命周期
new Vue({
el:'#app',
data:{},
methods:{},
beforeCreated(){},
created(){
},
beforeMount(){},
mounted(){
}
beforeUpdate(){},
updated(){
},
beforeDestroy(){},
destroyed(){}
})
vue-cli脚手架的使用
npm i vue-cli -g
vue init webpack 项目名称
eslint(语法规范化插件) 不要安装 当安装之后只能按照ESLint中规定的语法格式去书写代码
e2e(测试框架) 不要安装
unit test(单元测试框架) 不要安装
npm i
npm run dev
config/index.js中 17/18行改端口号和自动打开浏览器
VSCode用户代码片段
"Print to vue": {
"prefix": "vuec",
"body": [
"",
" ",
" 御剑乘风来,除魔天地间!$1",
"
",
"",
" ",
"",
""
],
"description": "create a vue template"
}
将项目提交到码云
// 1. 在项目文件夹初始化git
git init
// 2. 将代码提交到暂存区
git add .
// 3. 提交代码
git commit -m '描述信息'
// 4. 关联远程分支
git remote add origin https://gitee.com/UniverseKing/tes.git
// 5. 推送到远程分支
git push -u origin master
// 6. 查看文件信息
git status
// 7. 查看log
git log --oenline
// 8. 切换版本记录
git reset --hard 版本号
设置npm镜像源为淘宝镜像
npm config set registry https://registry.npm.taobao.org