Vue 用法
Vue2 + Vue2源码
Vue3 + Vue3源码
- vue
- MVC 和 MVVM MVC:
- view视图发生事件,触发controller更新
- controller触发model事件的执行,然后触发view视图的更新 view -> controller -> model -> view
MVVM: 用户操作 -> view的变化 -> 改变view model -> model -> 告诉view model数据变化 -> 改变视图 -> 改变用户界面
vue:ref,直接操作DOM react:单向数据流
Vue指令
js
export default {
mounted(el, { value: { fn, time } }) {
el.addEventListener("click", () => {
if (el._time) {
clearTimeout(el._time);
el._time = null
}
el._time = setTimeout(() => {
fn();
}, time)
})
}
}
Flow
- 类型推断
- 类型注释
Vue 进阶
1.特点:模板化
1.插槽 slot
- 默认、匿名插槽
- 具名插槽
- 作用域插槽
vue
<!-- 匿名插槽 -->
<solt></solt>
<!-- 具名插槽 -->
<solt name="header"></solt>
<!-- 作用域插槽,只是让父组件可以通过data来选择渲染 -->
<solt name="header" :slotProps="slotProps"></solt>
数据的加工处理
- watch computed => 整个用法会相对复杂
- 函数
- v-html
- filter
JSX
- 模板化
- JSX TSX compiler
2.组件化
- 全局引用组件
- 函数式组件
mixin (本质就是mixin先执行,component后执行)
- 支持递归合并
- data冲突的时候,组件data会覆盖
- 涉及生命周期不会覆盖,但是mixin的优先级会高于component
- 可以有多个
extends(本质就是extends先执行,component后执行)
- 只可以有一个
如果一起用,extends -> mixin -> 组件 按顺序执行
整体扩展的 extends,用于全局
Vue.use 插件
- 注册外部插件
- Vue.use(),默认调用install函数
组件的高级应用
- 递归组件:vue-tree
- 动态组件:
- 异步组件:
js
var routes = [
{
path:"/",
component:async () =>{
const cusComp = await import(XXXX);
return cusComp;
}
}
]