发布订阅模式(事件中心)

vue 使用了自己的发布订阅模式去处理事件。主要是4个方法:

  • $on 绑定事件,将事件存到vm_events属性中
  • $off 解除绑定,去除vm._events属性中对应的事件
  • $once 监听一次
  • $emit 事件分发

事件绑定原理

  1. 模板编译:模板编译生成AST,通过attribute确定事件类型,并且处理事件修饰符(如stop、self、native)。
  2. 代码生成:将AST转换成render函数。
  3. 事件绑定:render执行后返回VNode,渲染(patch(VNode))的时候,将事件通过原生方法addEventListener绑定到真实DOM上。

https://www.cnblogs.com/WindrunnerMax/p/13629209.html