浏览器兼容性
关于浏览器的兼容我们可以从下面一些内容来了解与认识:
Vue CLI 3初始化的项目,你会发现有 package.json 文件里的 browserslist 字段 (或一个单独的 .browserslistrc 文件),指定了项目的目标浏览器的范围。这个值会被 @babel/preset-env
和 Autoprefixer
用来确定需要转译的 JavaScript 特性和需要添加的 CSS 浏览器前缀。
我们通常只需要修改browserslist就可兼容目标浏览器:
"browserslist": [
"ie 10"
]
Polyfills
一个默认的 Vue CLI 项目会使用 @vue/babel-preset-app
它会通过@babel/preset-env
和 browserslist
配置来决定项目需要的polyfill。
现代模式
借助Babel,我们可以利用ES2015 + 中的所有最新语言功能,但是我们也必须提供transpiled 和 polyfilled 包来支持比较旧的浏览器,这些 transpiled bundle 通常比原始的本地 ES2015+ 代码更详细,解析和运行也就更慢。
因此 Vue CLI 提供了现代模式来帮助我们解决了此问题,使用以下命令进行生产构建时,它会产生两个应用程序版本:
- 一个针对支持 ES 模块的现代浏览器的现代捆绑软件
- 一个是不针对支持ES 模块的较旧浏览器的传统捆绑 软件
vue-cli-service build --modern
我们还可以在它的配置中来检测当前模式,有时候我们只需要为旧版或现代版更改webpack配置就可以了。
Vue CLI 使用两个环境变量来传达信息:
-
VUE_CLI_MODERN_MODE
:构建从--modern
标志开始。 -
VUE_CLI_MODERN_BUILD
:如果为 true,则当前配置适用于现代版本,否则将用于旧版本。