vue源码
vue源码
1. runtime only和 runtime + compiler
这俩主要区别就是第一个不支持在.js文件中使用template模板语法比较轻量级,构建的文件大小会更小,运行更快,但是可以识别.vue文件的template,可以使用render函数,第二个可以使用template模板语法
第二种方式也是适用大多数的,也是官方默认推荐的配置
2. vue入口
vue入口主要就是通过function的方式去实现一个class,之后为这个类去添加各种属性和方法,扩展配置
3. vue为什么必须要通过new实例化
在src/core/instance/index.ts中通过function定义了Vue的类实现
1 | function Vue(options) { |
4. vue的初始化
在vue打包的时候,通过"build": "node scripts/build.js",中去执行配置,入口文件地址从./confing.js中获取,以full-cjs-dev为例,
此时入口文件为entry-runtime-with-compiler.ts,通过定义的resolve方法,拿到真实地址,也就是src/platforms/web/entry-runtime-with-compiler.ts,进入之后可以看到导入的vue
紧接着一层层的进入Vue找到最深层,'./runtime-with-compiler'->'./runtime/index'->'core/index'->'./instance/index',此时vue就在instance/index中定义
该Vue是通过function的方式去定义一个类,该类的构造函数是this._init();,之后通过initMixin(Vue),stateMixin(Vue),eventsMixin(Vue),lifecycleMixin(Vue),renderMixin(Vue)对Vue实例进行初始化,之后将初始化后的实例导出
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 一叶凉夏!






