这片文章主要分析,在 web 应用下, Runtime + Compiler 构建出来的 Vue.js。
入口文件
在Vue源码中,入口文件为src/platforms/web/entry-runtime-with-compiler.js。
入口文件通过export导出的是一个Vue对象,通过import导入相关依赖组件。
首先这个Vue对象来自于;而runtime/index中的Vue对象又来自于
;core/index中的Vue对象又来自于
;继续往下找。在instance/index中,我们找到了原始的Vue的定义;它实际上就是一个用 Function 实现的类,我们只能通过
new Vue
去实例化它。
其原理是往Vue的原型上去挂载一些方法;把这些方法拆分到不同的功能模块中,非常方便后期的维护与实现。Vue.js 在整个初始化过程中,除了给它的原型 prototype 上扩展方法,还会给 Vue
这个对象本身扩展全局的静态方法,它的定义在src/core/global-api/index.js
中。Vue的本质上就是一个用 Function 实现的 Class,然后它的原型 prototype 以及它本身都扩展了一系列的方法和属性。