vue系列·构建版本理解

66 阅读2分钟

两个构建版本

vue文档-安装章节

可以知道vue的构建版本分为

  • 完整版:包括编译器运行时版本
  • 不完整:只包含运行时版

编译器:用来将模板字符串编译成为 JavaScript 渲染函数的代码。
运行时:用来创建 Vue 实例、渲染并处理虚拟 DOM 等的代码。基本上就是除去编译器的其它一切。

但是貌似这样解释了一个寂寞?那就结合vue的工程代码以及vue的相关流程来理解吧。

首先,明确一点,我们平时用vue工具,默认的就是不完整版本-也就是没有编译器的那一版本。

准备:

  • 完整版对应的文件是vue.js/vue.min.js

  • 运行时版对应的是vue.runtime.js/vue.runtime.min.js

  • 引用:去bootcdn上引用一个版本好了,这里用的是2.6.10版本的vue.min.js和vue.runtime.min.js

完整版

完整版将html/template编译成DOM节点,后续对数据的操作是分析出来是哪个DOM节点,直接去改那个节点。 完整版本可以从html直接获取视图,只要是从html/template变到页面视图相关,完整版就支持。

这个template既可以写在页面又可以写在js里。

运行时版

因为没有编译器,不可以把html/template转化成DOM节点,所以要用render(vue传了h参数),得通过h函数来写视图。需要会写render、h那一块(比较麻烦)。

new Vue({
  render (h) {
    return h('div', this.n)
  }
})

但是可以在webpack打包时通过webpack的vue-loader,在打包的时候就把html/template转成h函数(so用户是不用下载vue-loader的),这样开发者也不用写h函数,在运行时版本里也可以直接写html标签。

由于砍掉了编译器,到用户那边的大小就少了百分之四十,用户那边加分✅

并且vue-loader干了把html转成h函数的脏活,开发这边加分✅