前言 上一篇文章 Vue 源码解读(2)-- Vue 初始化过程 详细讲解了 Vue 的初始化过程,明白了 new Vue(options) 都做了什么,其中关于 数据响应式 的实现用一句话简单的带过,而这篇文章则会详细讲解 Vue 数据响应式的实现原理. 目标 深入理解 Vue 数据响应式原理. methods.computed 和 watch 有什么区别? 源码解读 经过上一篇文章的学习,相信关于 响应式原理 源码阅读的入口位置大家都已经知道了,就是初始化过程中处理数据响应式这一步,即调用…
Vue 进阶系列(一)之响应式原理及实现:https://juejin.im/post/5bce6a26e51d4579e9711f1d Vue 进阶系列(二)之插件原理及实现:https://juejin.im/post/5bd8fa04e51d45168b64f936 Vue 进阶系列(三)之Render函数原理及实现:https://juejin.im/post/5be2f0ae6fb9a049fa0f3dd2…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con…
还是先从浏览器直观的感受下实例属性和方法. 实例属性: 对应解释如下: vm._uid // 自增的id vm._isVue // 标示是vue对象,避免被observe vm._renderProxy // Proxy代理对象 vm._self // 当前vm实例 vm.$parent // 用于自定义子组件中,指向父组件的实例 vm.$root // 指向根vm实例 vm.$children // 当前组件的子组件实例数组 vm.$refs vm._watcher = null vm._in…
在使用echarts的时候,需要在触发click事件之后去修改实例data里面的数据,可是发现用this引用后总是出现undefined, 解决办法: myChart.on('click', (params) => { console.log(this.data);}); 用箭头的写法就可以访问了.…
一.vue中的响应式属性 Vue中的数据实现响应式绑定 1.对象实现响应式: 是在初始化的时候利用definePrototype的定义set和get过滤器,在进行组件模板编译时实现water的监听搜集依赖项,当数据发生变化时在set中通过调用dep.notify进行发布通知,实现视图的更新. 2.数组实现响应式: 对于数组则是通过继承重写数组的方法splice.pop.push.shift.unshift.sort.reverse.等可以修改原数组的方式实现响应式的,但是通过length以及直接…
在vue中file不能像其他input一样使用 v-model 双向数据绑定,因为文件选择是只读,只能用onchange监控值得变化. 所有需要使用v-on:change去监控. 例1: <input type="file" ref="file"/><span @click="getFile ">提交</span> getFile () { console.log(this.$refs.file.files)…
1.$mount()   手动设置挂载点  eg:vm.$mount("#app") 2.$destroy()  销毁   eg:vm.$destroy(); 3.$forceUpdate  强制更新,解决data里面没有的数据的更新(强制调用了render方法,对所有的的数据进行了更新)eg:vm.$forceUpdate(); 4.$on() 事件绑定 5.$emit() 事件触发 6.$off() 事件解绑 7.$once() 只绑定一次…
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue的基本代码</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <bod…
import wbMessage from './wb-message' let Constructor = Vue.extend(wbMessage) let vm = new Constructor({ propsData //props } ) vm.$slots.default //插槽 vm.$mount() //组件挂载,在内存里 document.body.appendChild(vm.$el) // 放到页面 ----- vm.close() //关闭实例 ---- vm.$el…