文化公司网站建设策划书,电商网站运营策划,wordpress没有function.php,淘宝店铺怎么上传自己做的网站Set与Map的区别
map是键值对#xff0c;set是值的集合。键#xff0c;值可以是任何类型map可以通过get获取#xff0c;map不能。都能通过迭代器进行for…of遍历set的值是唯一的#xff0c;可以做数组去重#xff0c;map#xff0c;没有格式限制#xff0c;可以存储数据…Set与Map的区别
map是键值对set是值的集合。键值可以是任何类型map可以通过get获取map不能。都能通过迭代器进行for…of遍历set的值是唯一的可以做数组去重map没有格式限制可以存储数据类型
数组去重方法
setfor嵌套indexOfincludes
watch和watchEffect
watch的配置项
deep是否深度监听 immediate 表示在watch中首次绑定的时候是否执行handler。
watch和watchEffect的区别
watch可以访问新值和旧值watchEffect不能访问watchEffect有副作用DOM挂载或者更新之前就会触发需要我们自己去清除副作watch是惰性执行也就是只有监听的值发生变化的时候才会执行但是watchEffect不同每次代码加载watchEffect都会执行。watch需要指明监听的对象也需要指明监听的回调。watchEffect不用指明监视哪一个属性,监视的回调函数中用到哪个属性,就监视哪个属性。
层叠上下文
就是对这些 HTML 元素的一个三维构想 产生层叠上下文 position z-index opacity属性值小于1的元素 transform不为none
重绘、回流
重绘DOM树没有元素的增加和删除只是样式改变针对浏览器对某一元素进行单独渲染。这个过程叫重绘。 回流DOM树中的元素被增加或者删除导致浏览器需要重新的去渲染整个DOM树回流比重绘更消耗性能发生回流必定重绘重绘不一定会导致回流。
解决浏览器消耗性能vue和react都谁用虚拟DOM
深拷贝和浅拷贝
“浅层拷贝”拷贝的是属性值的地址。
Object.assign 拷贝最外层JSON实现的深拷贝。 会忽略 undefined和symbol不可以对Function进行拷贝不支持循环引用对象的拷贝递归实现lodash的_.cloneDeep()
混入
mixins
方法和参数在各组件中不共享
缺点
变量来源不明确隐式传入不利于阅读使代码变得难以维护。mixins和组件可能出现多对多的关系复杂度较高多个mixins的生命周期会融合到一起运行但是同名属性、同名方法无法融合可能会导致冲突或覆盖。
vue生命周期
beforeCreate、created、 beforMount、mounted、 beforeUpdate、updated、 beforeDestory、destoryed 与动态组件有关的钩子activated激活、deactivated休眠 与组件异常捕获有关的钩子errorCaptured
在beforeCreate之前会声明methods中的方法和声明生命周期钩子函数
在created之前会注入一些数据初始化响应式系统我们通常在这个钩子函数中调接口获取路由参数等
在beforeMount之前会通过el $meount template找模板会把模块变成render函数 调用render函数创建虚拟DOM虚拟DOM转化成真实DOM进行挂载通常这个钩子函数我们也用不到
在mounted时已表示真实DOM已挂载完毕我们在这个钩子中通常调接口开定时器DOM操作建立websocket连接 实例化echarts实例等。
当数据变化时会触发beforeUpdate钩子
在updated之前要生成新的虚拟DOM新的虚拟DOM和老的虚拟DOM进行对比会执行patch运算diff算法找到两个虚拟DOM的最小差异找到后进行异步更新key的目的就是最快找到最小差异这个钩子也不常用但是有点类似于watch侦听器或类似于$nextTick()我们不能在这个钩子中更新数据会导致死循环。
当我们手动调用$destory()或路由切换时会调用beforeDestroy这个钩子函数我们可以在这个钩子函数中清空定时器解除事件绑定清除缓存…
当组件销毁时就会移除当前组件的watcherDOM就无法再更新移除所有子组件移除事件监听器响应式系统就会失效组件就死亡了这个钩子函数我们用的也不多。
封装过什么组件
弹窗
props参数 slot定制插槽 event自定义事件
表单修饰符
表单修饰符
.lazy 光标离开更新 .trim 过滤首尾的空格 .number数字
事件修饰符
.stop 阻止事件冒泡 .prevent 阻止事件的默认行为 .self 点击元素本身触发
如何在vue自定义组件中使用 v-model指令
父组件绑定v-model子组件接受value默认值。在子组件上绑定v-model和input事件。 在methods里定义input函数使用$emit.改变value得值。
静态提升
当 Vue 的编译器在编译过程中发现了一些不会变的节点或者属性就会给这些节点打上标记。然后编译器在生成代码字符串的过程中会发现这些静态的节点并提升它们将他们序列化成字符串以此减少编译及渲染成本。有时可以跳过一整棵树。
render函数
构建虚拟DOM所需要的工具createElement
路由守卫
执行顺序
全局前置守卫beforeEach (路由器实例内的前置守卫) 路由独享守卫beforeEnter(激活的路由) 组件内守卫beforeRouteEnter(渲染的组件) 全局解析守卫beforeResolve(路由器实例内的解析守卫) 全局后置钩子afterEach(路由器实例内的后置钩子)
next 放行
完整的导航解析流程
导航被触发。 在失活的组件里调用 beforeRouteLeave 守卫。 调用全局的 beforeEach 守卫。 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2)。 在路由配置里调用 beforeEnter。 解析异步路由组件。 在被激活的组件里调用 beforeRouteEnter。 调用全局的 beforeResolve 守卫 (2.5)。 导航被确认。 调用全局的 afterEach 钩子。 触发 DOM 更新。 调用 beforeRouteEnter 守卫中传给 next 的回调函数创建好的组件实例会作为回调函数的参数传入。
v-for和v-if优先级
vue2 v-for优先级高。 不推荐一起使用 vue3 v-if优先级高。
路由
router和route区别
router是路由实例对象用来进行页面跳转router.push、后退router.go(-1) route是代表的当前路由规则 拿参数 获取当前路由信息
params传参合query传参的区别
params参数在地址栏中不会显示query会显示 网页刷新后params参数会不存在
路由的四种跳转方式
router-linkthis.$router.push()this.$router.replace()this.$router.go(n)
vue3 为什可以有多个根节点
引入了 Fragment 的概念
浏览器有多少的进程
浏览器进程 GPU进程 网络进程 插件进程 渲染进程