基本原理
Vue 采用了数据劫持结合发布-订阅的模式, 通过 Object#defineProperty 方法劫持各个成员的 getter, setter. 在数据变动的时候发布消息给订阅者触发相应的回调, 由于是在不同数据变动时触发的消息. 也就可以精确的将变更发送给绑定的视图. 而不是对所有的数据都进行更新. 具体的步骤为:
路漫漫其修远兮, 吾将上下而求索
{__esModule: true}, 实际导出的内容都是通过 __webpack_require__.d 添加到导出对象上的. 仅仅导入但没有使用的内容会被 tree-shaking 掉{__esModule: true}, 如果 es6 模块中包含 export default 那么导出的模块就会被添加 default 属性. 印证了require'balabala').default 这个玩意儿PS: 在 es6 模块化中, export 和 export default 可以混用. 然而在 commonjs 中 exports 和 module.exports 不能混用. 无论是在 node 环境还是在 webpack 中.
JavaScript 使用的是事件驱动的设计模式, 为元素添加事件监听函数, 当这个元素的相应事件被触发那么其添加的事件监听函数就被调用. 作为 js 和 html 沟通的基础, 任何文档或者浏览器窗口发生的交互都要通过绑定事件进行 ~
计算属性是数据层到视图层的数据转化映射, 会基于其所依赖的属性进行缓存. 只有在相关依赖变化时才会重新求值. 如果依赖没有变化每次访问计算属性都会立即返回之前计算的结果, 不再执行 get 函数. Method 则不同, 每次调用都会执行. 具体区别如下: