支持的浏览器和功能
支持的浏览器
默认情况下,生成的项目支持所有现代浏览器。对 Internet Explorer 9、10 和 11 的支持需要 polyfills。要使用一组 polyfills 来支持旧版浏览器,请使用 react-app-polyfill.
支持的语言功能
该项目支持最新 JavaScript 标准的超集。除了 ES6 语法功能外,它还支持
- 指数运算符 (ES2016)。
- Async/await (ES2017)。
- 对象展开/剩余属性 (ES2018)。
- 动态 import() (第 4 阶段提案)
- 类字段和静态属性 (第 3 阶段提案的一部分)。
- JSX、Flow 和 TypeScript。
了解更多关于 不同提案阶段 的信息。
虽然我们建议谨慎使用实验性提案,但 Facebook 在产品代码中大量使用这些功能,因此我们打算提供 代码修改,以防这些提案在未来发生变化。
请注意,**此项目默认不包含任何 polyfill**。
如果您使用任何其他需要**运行时支持**的 ES6+ 功能(例如 Array.from()
或 Symbol
),请确保您 手动包含相应的 polyfill,或者您要定位的浏览器已经支持它们。
配置支持的浏览器
默认情况下,生成的项目在您的 package.json
文件中包含一个 browserslist
配置,以针对基于全球使用情况(> 0.2%
)的广泛浏览器范围进行生产构建,并针对现代浏览器进行开发。这提供了良好的开发体验,尤其是在使用 async/await 等语言功能时,但仍然为生产环境中的许多浏览器提供了高度兼容性。
browserslist
配置控制输出的 JavaScript,以便发出的代码与指定的浏览器兼容。production
列表将在通过运行 build
脚本创建生产构建时使用,而 development
列表将在运行 start
脚本时使用。您可以使用 https://browserl.ist 查看您配置的 browserslist
支持的浏览器。
以下是在 package.json
中指定的 browserslist
示例
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
请注意,这不会自动为您包含 polyfill。您仍然需要根据您支持的浏览器,根据需要对语言功能进行 polyfill(见上文)。
在编辑
browserslist
配置时,您可能会注意到您的更改不会立即生效。这是由于 babel-loader 中的一个问题,无法检测到您package.json
中的更改。一个快速的解决方案是删除node_modules/.cache
文件夹,然后重试。