vue2源码学习

Posted ~往无前

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue2源码学习相关的知识,希望对你有一定的参考价值。

1.dist目录解读


将vue打包之后,会打包成一个dist目录,在目录下生成了一堆特殊命名的vue.*.js文件,他们分别是什么意思?

 文件分类:

UMDComonJSES Module
Fullvue.jsvue.common.jsvue.esm.js
Runtime-onlyvue.runtime.jsvue.runtime.common.jsvue.runtime.esm.js
Full(production)vue.min.jsvue.common.prod.js
Runtime-only(production)vue.runtime.min.jsvue.runtime.common.prod.js

                

 2.名次解释

  • Full:  这是一个全量的包,包含编译器  (compiler)  和运行时 (runtime)
  • Compiler:编译器,负责将模版字符串(即我们编写的类html愈发的模版代码)编译为javascript语法的render函数;
  • Runtime:负责创建Vue实例,渲染函数,patch虚拟DOM等代码,基本上除了编译器之外的代码都属于运行时代码;
  • UMD: 兼容CommonJS和AMD规范,通过CDN引入的vue.js就是UMD规范的代码,包含编译器和运行时。
  • CommonJS:典型的应用比如nodeJS,CommonJS规范的包就是为了给browserify和webpack1这样的旧的打包器使用。他们默认的入口文件位vue.runtime.common.js。
  • ES Module:现代JavaScript规范,ES Module规范的包就是给像webpack和rollup这样的现代打包器使用的。这些打包器默认使用仅包含运行时的vue.runtime.esm.js文件。

3.运行时(Runtime)+编译器(Compiler)  VS 只包含运行时(Runtime-only)

如果你需要动态编译模版(比如:将字符串模版传递给template选项,或者通过提供一个挂载元素的方式编写html模版),你将需要编译器,因此需要一个完整的构建包。

当你使用vue-loader或者vueify时,*.vue的vue文件中的模版在构建时会被编译为JavaScript的渲染函数(render)。因此你不需要包含编译器的全量包,只需使用只包含运行时的包即可;

只包含运行时的包体积要比全量包的体积小30%。因此尽量使用只包含运行时的包,如果你需要使用全量包,那么你需要进行如下的配置;

webpack

moudle.exports=

    //...
    resolve:
        alias:
            'vue$':'vue/dist/vue.esm.js'
    
    
    

 4.源码目录结构

 

以上是关于vue2源码学习的主要内容,如果未能解决你的问题,请参考以下文章

vue2.x源码学习

vue2源码学习-响应式原理

vue2源码学习-响应式原理

Vue2.X源码学习笔记选项合并

vue2源码学习

vue2源码学习