vue 是一个用户构建用户界面的一个渐进式框架
起步
- webpack 脚手架
- 单文件页面引入 vue.min.js
声明式渲染
- 文本插值
- 表达式
1 | <div id="app"> |
组件
- 内置组件
- v-text 文本输出
- v-html 解析变量中的 html 标签
- v-model 绑定表单元素的值
- v-for
- v-if
- v-else-if
- v-else
- v-bind 简写: 绑定属性值
- v-show
- v-on 简写 @
- 自定义组件
v-show & v-if
v-show 通过 html 或者组件的 display 属性,css 控制显隐
v-if 通过 html 或者组件的插入节点、移除节点,插入或者移除 dom 来控制显隐
v-show 有更高的初始化消耗
v-if 有更多的切换消耗
事件修饰符
v-on 的事件修饰
1 | .stop |
自定义按键修饰符
1 | // 可以使用 `v-on:keyup.f1` |
v-for key 的作用
vue 循环遍历数据渲染时,要求我们添加一个不重复的 key(警告)
由于 vue 的便携借鉴来 react,也使用来 jsx,jsx 是虚拟 dom 树替换真实 dom 树,为了更快的找到需要替换的模版节点,我们需要给元素添加 key,有助于提升 vue 组件的性能。
事件
1 | new Vue({ |
变异方法
由于 vue 使用了发布订阅、观察者模式,同时 object.defineProperty 进行数据的监听,我们直接操作数据可能不会触发视图更新。
vue2.x 使用 object.defineProperty
vue3.0 使用 proxy
1 | Vue.$set(target, key, val); |
vue 允许我们通过$set 来修改我们数据的值,但是用起来不是特别方便,vue 又给我们带了变异方法(说白了就是对数组的原生方法提供了数据监听)
1 | push; |
web 服务器
在 vue 脚手架项目当中,我们可以通过 webpack 的 devServer 来创建一个小型 web 服务器
在 vue-cli@3+的版本中,我们可以在项目根目录创建一个 vue.config.js,下面将列举常用配置:
1 | module.exports = { |
组件
单文件组件
下面将创建一个 layout 布局容器组件 layout.vue:
1 | <template> |
对象组件
在一个组件内部,我们可以通过 components 来创建组件,除了 template 是一个 html 字符串外,其他与.vue 单文件组件没有什么区别。
1 | <template> |
插槽
插槽的分类
- 匿名插槽
- 具名插槽
插槽的作用
创建组件后,希望能够动态向组件传递模版内容,这个时候我们就需要使用插槽。
插槽的使用
父组件:
1 | <template> |
子组件:
1 | <template> |
组件通讯
父子通讯:
父组件向子组件 Child 传递参数:
- attr1 静态传参
- arr2 动态传参
1 | <template> |
子组件:
子组件通过 props 来获得父组件传递的参数
- 数组 简单
- 对象 完整
1 | <template> |
子父通讯
跨级通讯
- Vue v2.2 新增 provide/inject
父组件
1 | <template> |
子组件
1 | <template> |
- Vue v2.4 新增 $attrs
祖先组件:
1 | <template> |
父组件 - Parent:
1 | <template> |
子组件:
1 | <template> |
EventHub&EventBus
由于 vue 原生支持发布、订阅模式,我们通过 new Vue() 创建新的实例。
1 | export default new Vue(); |
main.js
1 | import Vue from "vue"; |
1 | 组件内部: |
Vuex
- Post link: https://blog.gaocaipeng.com/2020/04/11/zhkkh6/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.