Jelajahi Sumber

不同构建输出的区别

HcySunYang 8 tahun lalu
induk
melakukan
a8b0b62732
1 mengubah file dengan 6 tambahan dan 0 penghapusan
  1. 6 0
      了解Vue这个项目.md

+ 6 - 0
了解Vue这个项目.md

@@ -83,5 +83,11 @@
 
 相比于知道 Vue 的不同构建输出,我们更关心的是:不同的构建输出有什么区别,为什么要输出这么多不同的版本,有什么作用?
 
+为什么要分 `运行时版` 与 `完整版`?首先你要知道一个公式:`运行时版 + Compiler = 完整版`。也就是说运行时版比完整版多了一个 `Compiler`,一个将字符串模板编译为 `render` 函数的家伙,大家想一想:将字符串模板编译为 `render` 函数的这个过程,是不是一定要在代码运行的时候再去做?当然不是,实际上这个过程在构建的时候就可以完成,这样真正运行的代码就免去了这样一个步骤,提升了性能。同时,将 `Compiler` 抽离为单独的包,还能减小了库的体积。
+
+但是为什么需要完整版呢?说白了就是允许你在代码运行的时候去现场编译模板,在不配合构建工具的情况下可以直接使用,但是更多的时候推荐你配合构建工具使用运行时版本。
+
+除了运行时版与完整版之外,为什么还要输出不同形式的模块的包?比如 `cjs`、`es` 和 `umd`?其中 `umd` 是使得你可以直接使用 `<script>` 标签引用Vue的模块形式。但我们使用 Vue 的时候更多的是结合构建工具,比如 `webpack` 之类的,而 `cjs` 形式的模块就是为 `browserify` 和 `webpack 1` 提供的,他们在加载模块的时候不能直接加载 `ES Module`。而 `webpack2+` 以及 `Rollup` 是可以直接加载 `ES Module` 的,所以就有了 `es` 形式的模块输出。
+