1.vue设计理念
渐进式
渐进式javascript框架,Vue被设计为可以自底向上逐层应用。
vue不强求你一次性接受并使用他的全部功能。
易用
vue提供数据响应式、声明式模板语法和基于配置的组件系统等核心特性。这些使我们只需关注应用的核心业务即可,只会 js html 和 css 就可以轻松上手。
灵活
不断繁荣的生态系统,可以在一个库和一个完整的框架之间自如伸缩。引入 vue-router vuex,各种插件等等。
高效
超快的虚拟dom和diff 最省心的优化。vue3使用的proxy
2.mvc mvp 和 mvvm的区别和联系
三者都是框架的模式,目标都是解决Model和view的耦合问题。
mvc出现较早,主要用于服务端。特点是 分层清晰,但是数据流混乱,灵活的同时带来了维护性问题。
MVP 是 MVC的改进版本。通过 Presenter 进行M和V的通信。业务复杂的话会导致P难以维护。
MVVM,ng react 和 vue。解决的M和V的耦合问题
M:Model(服务器上的业务逻辑操作)
V:View(页面)
VM:ViewModel(Model与View之间核心枢纽,比如Vue.js) 双向绑定问题,更专注于业务逻辑的处理。不用过分关心数据的修改和dom的对应关系。
3.vue组件的data为什么要使用函数形式 初始化vue实例时不需要
vue组件会存在多个实例,使用对象形式的话,会共同使用一个对象的引用地址,导致各个组件的data错乱。使用函数形式,在初始化组件的时候会生成新的一个对象避免了这个问题。
data不用function的话会报错。
vue根实例只会存在一个,不会有这个问题。
4.vue的生命周期
beforecreate
创建vue实例之后第一个触发的钩子函数。创建之前 啥都没有,开始绑定事件,监听data里的数据
created
创建之后 有data,methods了,vnode还没生成。可以调用方法,可以修改data的值了
beforemount
真实dom开始生成还没有挂载,不可以操作dom
mounted
现在真实dom已经挂载结束,可以操作dom了
beforeupdate
更新数据之前触发,还没开始更新
undated
更新之后触发,不能一直更新数据,容易引起死循环
beforedestory
销毁之前 一切正常
destoryed
销毁之后 啥也没有
5.compute和watch有什么差别
compute 多对一,多个值对一个值产生的影响。有缓存,依赖不变不会重新计算,只有被调用的时候才会更新。
watch 监听一个值 变化时做一些操作
immediate,表示第一次渲染的时候是否执行这个函数deep,如果监听一个对象,那么是否也监听到对象里面的属性变化
6.双向绑定原理
Object.definepPrototype() 把data里的数据递归绑定,劫持了set和get方法。触发set方法是通过发布订阅者模式通知视图修改
var a = {a:1}
Object.defineProperty(a,'a',{
get:function(){
console.log(123123)
}
})
通过v-model,正则解析绑定事件实现 视图到数据的数据传递。
7.nextTick和eventloop
使用 promise setimdeate settime 实现在下次dom 更新之后实现回调
8.组件化
9.key,vnode 和 diff
10.vue的代码优化
11.v-if和v-for的优先级
v-for优先级更高
本文围绕Vue框架展开,介绍其设计理念,包括渐进式、易用、灵活和高效等特点。对比了MVC、MVP和MVVM模式,阐述了Vue组件data使用函数形式的原因、生命周期各阶段特点,还分析了compute和watch的差别、双向绑定原理等,最后提及Vue3特性。
1540





