简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
概念:computed是一个计算属性,类似于过滤器,对绑定到view的数据进行处理,计算属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。它用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义,然后就可以在页面上进行双向数据绑定展示出结果或者用作其他处理。原理:在initState的时候会初始化initComputed,默认初始化计算属性initCompute
一、概念1.异步组件可以减少打包的结果。会将异步组件分开打包,会采用异步的方式加载组件,可以有效的解决一个组件过大的问题。不使用异步组件,如果组件功能比较多打包出来的结果就会变大。2.异步组件的核心可以给组件定义变成一个函数,函数里面可以用import语法,实现文件的分割加载,import语法是webpack提供的,采用的就是jsonp。components:{VideoPlay:(resolve
前言:因为不采用异步更新,在每次更新数据都会对当前组件进行重新渲染。所以为了性能考虑,vue 会在本轮数据更新后,再去异步更新视图。vue是组件级更新,当前组件里的数据变了,它就会去更新这个组件。当数据更改一次组件就要重新渲染一次,性能不高,为了防止数据一更新就更新组件,所以做了个异步更新渲染。(核心的方法就是nextTick)原理:当数据变化后会调用notify方法,将watcher遍历,调用u
一、概念:渲染组件时,会通过 Vue.extend 方法构建子组件的构造函数,初始化组件的时候会进行实例化。终手动调用 $mount() 进行组件挂载渲染。更新组件时会进行 patchVnode 流程.核心就是diff算法。二、组件渲染流程一般组件渲染时,我们会这样写h => h(App),app最后是一个对象,会通过一个createElement方法把这个app对象渲染成一个虚拟节点,然后调
前言:数组并没有使用Object.defineProperty重新定义数组的每个属性,vue中是怎么检测到数组的变化?数组方法(vue中改写的7个数组方法):push,pop,shift,unshift,sort,splice,reverse理解:1.数组的方法(以上7个)都可以更改了数组的内容,然后更新就好了2.vue中对数组的原型方法进行了重写,使用函数劫持的方式,重写了数组的方法3.vue
一、理解:1.v-for比v-if优先,如果每一次都需要遍历整个数组,将会影响速度,尤其是当之需要渲染很小一部分的时候。如果连用的话会把 v-if 给每个元素都添加一下,会造成性能问题。一般时候把v-if放在外层,如果不符合就不去执行了。二、原理:const VueTemplateCompiler = require('vue-template-compiler');let r1 = VueTem
一、事件绑定有几种?1.原生的事件绑定,原生 dom 事件的绑定,采用的是 addEventListener 实现。2.组件的事件绑定,组件绑定事件采用的是 $on 方法 。let compiler = require('vue-template-compiler'); // vue loader中的包let r1 = compiler.compile('<div @click="fn()"
一、谈一下你对MVVM原理的理解1.MVC是Model-View- Controller的简写。即模型-视图-控制器。是最早的架构模型,是从前台到后台统一称之为MVC,比如前端交视图层(View),后端的数据库(Model),用户操作界面想获取数据会向后端服务器发起请求,请求会被路由拦截,这时路由会调用对应的控制器来处理,控制器会获取数据。将结果返回给前端,页面重新渲染 。这种方向是单向的。2.随
一、理解:1.可能会导致 xss 攻击。比如用v-html一定要保证你的内容是可以依赖的,例:<input type="text" v-model="msg"/><div v-html="msg"></div>// 因为用户输入的信息不可信,这样输入什么就会放入什么,v-html就相当于一个innerHTML2.v-html 会替换掉标签内部的子元素二、原理le
概念:这儿的watch就是用户写的watch方法,在写watch时有两个属性一个immediate是用来确定是否立即执行方法的,另一个属性就是下来要讨论的deep,当它为true就会实现深度监听,今天我们是需求知道它怎么实现的?computed为什么没有deep:true?因为computed是用在模板里的,在模板中的数据会调一个方法JSON.strginify(),放一个对象,默认会对这个对象里