现代模式
有了 Babel 我们可以兼顾所有最新的 ES2015+ 语言特性,但也意味着我们需要交付转译和 polyfill 后的包以支持旧浏览器。这些转译后的包通常都比原生的 ES2015+ 代码会更冗长,运行更慢。现如今绝大多数现代浏览器都已经支持了原生的 ES2015,所以因为要支持更老的浏览器而为它们交付笨重的代码是一种浪费。
Vue CLI 提供了一个“现代模式”帮你解决这个问题。以如下命令为生产环境构建:
vue-cli-service build --modern
Vue CLI 会产生两个应用的版本:一个现代版的包,面向支持ES modules的现代浏览器,另一个旧版的包,面向不支持的旧浏览器。
最酷的是这里没有特殊的部署要求。其生成的 HTML 文件会自动使用 Phillip Walton 精彩的博文中讨论到的技术:
- 现代版的包会通过
<script type="module">在被支持的浏览器中加载;它们还会使用<link rel="modulepreload">进行预加载。 - 旧版的包会通过
<script nomodule>加载,并会被支持 ES modules 的浏览器忽略。 - 一个针对 Safari 10 中
<script nomodule>的修复会被自动注入。
详情请见vue官网浏览器兼容性

本文介绍VueCLI提供的现代模式,该模式能生成两个版本的应用,一个面向支持ESmodules的现代浏览器,另一个面向旧浏览器。现代版包利用<scripttype=module>加载并预加载,旧版包则通过<scriptnomodule>加载,实现高效且兼容的部署。
1138

被折叠的 条评论
为什么被折叠?



