发布订阅模式(事件中心)
vue 使用了自己的发布订阅模式去处理事件。主要是4个方法:
$on绑定事件,将事件存到vm的_events属性中$off解除绑定,去除vm._events属性中对应的事件$once监听一次$emit事件分发
事件绑定原理
- 模板编译:模板编译生成AST,通过attribute确定事件类型,并且处理事件修饰符(如stop、self、native)。
- 代码生成:将AST转换成render函数。
- 事件绑定:render执行后返回VNode,渲染(patch(VNode))的时候,将事件通过原生方法addEventListener绑定到真实DOM上。