1.vue有很多不同的版本 包括在umd commomjs es下的 运行时和包含编译器的 只含有运行时的 还有压缩过后的运行时和包含编译器的
    image.png
    2.我们项目的脚手架是esModule下运行时的版本(vue.runtime.esm.js ),他比完整版本的体积更小,运行效率更高。
    注意:查看webpack的默认配置 可以通过 vue inspect > output.js ;
    术语:
    完整版: 同时包含编译器和运行时的版本
    编译器:用来将模板字符串编译成为JavaScript渲染的函数的代码
    运行时:用来创建vue实例、渲染并处理虚拟dom等代码,体积小、效率高、基本上就是出去编译器的代码
    UMD:UMD版本通用的模块版本,支持多种模块方式。vue.js 默认文件就是运行时+编译器的UMD版本.
    CommonJS(cjs):CommonJS 版本用来配合老的打包工具比如 Browserify 或 webpack 1。
    ES Module:从 2.6 开始 Vue 会提供两个 ES Modules (ESM) 构建文件,为现代打包工具提供的
    版本。
    ESM 格式被设计为可以被静态分析,所以打包工具可以利用这一点来进行“tree-shaking”并
    将用不到的代码排除出最终的包。
    Runtime + Compiler vs. Runtime-only
    // 推荐使用运行时版本,因为打包的时候 比编译器和运行时的版本少了30%

    1. // 运行时+编译器
    2. const vm =new Vue({
    3. el:"#app",
    4. template:'<h1>{{this.msg}}</h1>',
    5. data:{msg:'Hello Vue'}
    6. })
    7. // 编译器
    8. const vm = new Vue({
    9. el:"#app",
    10. render(h){
    11. return h('h1',this.msg)
    12. },
    13. data:{
    14. msg:'Hello Vue'
    15. }
    16. })