vue2.0总结文档
- 组件和模板
- 生命周期
- 循环
- 自定义键盘指令
- 过滤器
- 组件通信
- 组件间通信
- 动画
- 相关函数
- 配合animate.css使用
- 多个元素
- 路由 router
- 脚手架vue-loader
- ElementUI UI组件
- 问题
- vuex
- vue两种开发模式
组件和模板
1 |
|
生命周期
1 |
|
循环
- 默认可以添加重复数据
- 去掉了一些隐式变量 $index $key
1 |
|
自定义键盘指令
1 |
|
过滤器
内置过滤器删除了
lodash
工具库 代替过滤器
自定义过滤器
传参变了
1 |
|
组件通信
- props:[‘msg’];
- vm.$emit();
- vm.on();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34//子组件改变父组件的内容需要用对象,不能直接更改父级数据
<div id="box">
<h2>这是父组件</h2>
<strong>{{ giveData.b }}</strong>
<hr>
<child :msg='giveData'></child>
</div>
<template id="child-box">
<div>
<h3>这是子组件</h3>
<input type="button" value="change" @click='change'>
<strong>{{ msg.b }}</strong>
</div>
</template>
<script>
new Vue({
el:'#box',
data:{
giveData:{b:'我是父组件的数据'}
},
components:{
'child':{
data(){
return {b:'我是子组件的数据'}
},
props:['msg'],
methods:{
change(){this.msg.b = 'change success!';}
},
template:'#child-box'
}
}
})
</script>
组件间通信
单一事件管理组件通信: -> vuex
1 |
|
动画
动画加载active上
- .fade-enter
- .fade-enter-active
- .fade-leave
- .fade-leave-active
相关函数
el->被绑定的元素
- @before-enter=’beforeEnter’//动画enter之前
- @enter=’enter’//进入
- @after-enter=’afterEnter’ //进入之后
- @before-leave=’beforeLeave’//动画enter之前
- @leave=’leave’//进入
- @after-leave=’afterLeave’ //进入之后
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19<style>
p {width:300px;height:300px;background: blue;}
.fade-enter-active,.fade-leave-active {transition: 1s ease all;}
.fade-enter-active {width:300px;height:300px;opacity: 1;}
.fade-leave-active {width:100px;height:100px;opacity: 0;}
.fade-enter,.fade-leave {width:100px;height:100px;opacity: 0;}
</style>
<div id="box">
<input type="button" value="点击显示隐藏" @click='show=!show' />
<transition name='fade'>
<p v-show='show'></p>
</transition>
</div>
<script>
new Vue({
el:'#box',
data:{show:false}
})
</script>
配合animate.css使用
1 |
|
多个元素
1 |
|
1 |
|
路由 router
cnpm install vue-router
2.0基本路由
1 |
|
路由嵌套
1 |
|
路由嵌套传参
1 |
|
路由实例新增的方法(new VueRouter())
router.push({path:'home'});
//直接添加一个路由,表现为切换路由,本质是往历时记录里面添加一条router.replace({path:'news'});
//替换路由,不会往历史记录里面添加
路由配合运动
外层加个transition标签就可以了
1 |
|
脚手架vue-loader
vue-loader vue-router配合
1 |
|
ElementUI UI组件
目的:为了提高开发效率 功能
- bootstrap //twitter
- ElementUI //pc 饿了么 基于vue组件库 官网
- MintUI //移动 同上
1 |
|
1 |
|
//ElementUI全部引入
1 |
|
1 |
|
1 |
|
按需加载相应的组件
- babel-plugin-component //组件
1
2
3
4
5
6
7
8
9
10
11
12
13{
//.babelrc
"presets": [["es2015", { "modules": false }]],
"plugins": [
[
"component",
{
"libraryName": "element-ui",
"styleLibraryName": "theme-chalk"
}
]
]
}
1 |
|
自定义组件绑定事件需要加native
@click.native='get'
新的数据交互axios与vue-resourse用法基本一致
1 |
|
MintUI 移动端ui库
官网与element基本相同
问题
自定义vue全局组件(未实现)
1 |
|
- loading
index.js
Loading.vue
- src>components/loading/index.js+loading.vue
1
2
3
4
5
6
7
8//index.js
import LoadingComponent from './Loading.vue'
const Loading = {
install(Vue){
Vue.component('Loading',LoadingComponent)
}
}
export default Loading
vuex
cnpm install vuex -D
两个非常靠谱的方法:
- mapActions //管理所有事件
- mapGetters //获取数据
流程
click -> getActions(['increment']) -> actions ->mutations -> export default new Vuex.Store
//App.vue
1 |
|
//main.js
1 |
|
//store.js
1 |
|
vue两种开发模式
- script直接引入vue 页面级开发
- 工程性开发,webpack+loader/ vue-cli
webpack 配置多文件入口
webpack 打完包很大?
- webpack代码拆分:code-spliting
- 提取公共(css,js)
- 预渲染:prerender-spa-plugin
- 后台—-开启压缩,gz
- 异步加载组件 ->require.ensure
组件间通信
学ng2一定要学typescript
vue:
- 指令
- 属性
- 事件
- 数据:
- data
- props/computed
- 声明周期