Vue3 的响应式实现与 Vue2 版本类似,都是在 getter 里收集依赖,setter 触发依赖更新,不同点在:数据劫持从 Object.defineProperty 变为 Proxy,前者只能劫持存在的对象属性,后者可以劫持任意属性,包括新增的属性,并且支持数组原生方法增删改的响应式。收集和触发依赖的逻辑有变化,使用了一个全局 Map 对象:实现响应式实现了 reactive、ref、wa...
Vue 使用数据劫持和发布订阅模式,通过 Object.defineProperty 劫持对象属性的 getter 和 setter,当数据改变时,触发依赖收集器通知对应的数据观察者(watcher)做出更新回调更新视图。Vue 数据双向绑定主要通过 Compile,Observer,Watcher 实现,Compile 用于编译解析模板指令、插值,Observer 用于劫持数据,监听数据的变化,...
Promise 是解决异步编程回调嵌套过多导致代码可读性下降的方法之一。实现要点一个 promise 实例有三个状态:pending 等待中、fulfulled 已执行、rejected 已拒绝,状态只会从 pending 切换到 fulfulled 或 rejected,且保持不变。只有调用了 resolve 或 reject 方法,then 函数的两个参数 onFulfilled 、onRej...
分词/词法分析(Tokenizing/Lexing)解析/语法分析(Parsing)代码生成分词/词法分析这个阶段会将代码字符串分解成有意义的代码块(词法单元,Token)。例如 var a = 10,词法分析器会将它分解成:var(关键字)、a(标识符)、=(赋值操作符)、10(数字)。解析/语法分析语法分析的任务是在词法分析的基础上将词法单元数组组合成各类语法短语(抽象语法树 Abstract...
记录遇到的问题以及如何解决。问题创建 React Native App 有两种方式, 一种使用 npm install create-react-native-app -g 安装,通过 create-react-native-app 命令来初始化你的应用。特点是:这种方式官方说是不需要安装 Xcode 或者 Android Studio,也不需要配置任何工具来构建代码,只要在手机安装 Expo 客...