computed:默认computed
也是一个watcher
具备缓存,只有当依赖的数据变化时才会计算, 当数据没有变化时, 它会读取缓存数据。如果一个数据依赖于其他数据,使用 computed
watch:每次都需要执行函数。 watch
更适用于数据变化时的异步操作。如果需要在某个数据变化时做一些事情,使用watch。
method:只要把方法用到模板上了,每次一变化就会重新渲染视图,性能开销大
答案:
-
v-if
如果条件不成立不会渲染当前指令所在节点的DOM元素 -
v-show
只是切换当前DOM的显示与隐藏
答案
v-for
会比 v-if
的优先级更高,连用的话会把 v-if
的每个元素都添加一下,造成性能问题。
答案
-
XSS
攻击 -
v-html
会替换标签内部的元素
答案
渲染组件时,会通过 vue.extend()
方法构建子组件的构造函数,并进行实例化。最终手动调用 $mount()
进行挂载。更新组件时会进行 patchVnode
流程,核心就是 diff
算法。
答案
避免组件中的数据互相影响。同一个组件被复用多次会创建多个实例,如果 data
是一个对象的话,这些实例用的是同一个构造函数。为了保证组件的数据独立,要求每个组件都必须通过 data
函数返回一个对象作为组件的状态。
答案
-
节省打包出的结果,异步组件分开打包,采用jsonp的方式进行加载,有效解决文件过大的问题。
-
核心就是包组件定义变成一个函数,依赖
import()
语法,可以实现文件的分割加载。
详细的看官方文档:cn.vuejs.org/v2/guide/co…
答案
-
mutation
是同步更新,$watch
严格模式下会报错 -
action
是同步操作,可以获取数据后调用mutation
提交最终数据
插槽
答案
-
创建组件虚拟节点时,会将组件儿子的虚拟节点保存起来。当初始化组件时,通过插槽属性将儿子进行分类
{a:[vnode],b[vnode]}
-
渲染组件时会拿对应的
slot
属性的节点进行替换操作。(插槽的作用域为父组件)
作用域插槽
答案
-
作用域插槽在解析的时候不会作为组件的孩子节点。会解析成函数,当子组件渲染时,会调用此函数进行渲染。
-
普通插槽渲染的作用域是父组件,作用域插槽的渲染作用域是当前子组件。
最后
推荐一些系统学习的途径和方法。
每个Web开发人员必备,很权威很齐全的Web开发文档。作为学习辞典使用,可以查询到每个概念、方法、属性的详细解释,注意使用英文关键字搜索。里面的一些 HTML,CSS,HTTP 技术教程也相当不错。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
HTML 和 CSS: