Modern.js 支持设置 Web 应用需要兼容的浏览器范围,你可以在 .browserslistrc
文件里设置 Browserslist 的值。
当你创建一个新的 Modern.js 项目时,默认会包含一份 .browserslistrc
配置,这表示 JavaScript 代码会被编译至 ES6 格式。
请查看 Rsbuild - 设置浏览器范围 来了解更多内容。
Modern.js 在编译时默认通过 core-js 引入对应的 Polyfill 代码。
默认情况下会根据项目 Browserslist 的设置情况引入所需的 Polyfill 代码, 这样基本不用再担心项目源码和第三方依赖的 Polyfill 问题了,但是因为包含了一些没有用到的 Polyfill 代码,所以最终的包大小可能会有所增加。
对于明确第三方依赖不需要 Polyfill 的场景,可以设置 output.polyfill
为 usage
, 这样 Babel 编译时只会根据代码中使用到的语法引入 Polyfill 代码。
Modern.js 中还提供了基于浏览器 UA 信息的运行时按需 Polyfill 方案,相比于 Babel 优势如下:
可以通过微生成器开启该功能:
执行命令后,在 modern.config.ts
中注册 Polyfill 插件:
配置 output.polyfill
为 ua
并且执行 pnpm run build && pnpm run serve
启动服务器后,访问页面可以看到 HTML 产物中包含如下脚本:
在 Chrome 51 下访问页面可以看到 http://localhost:8080/__polyfill__
返回内容如下:
该功能只有在使用 Modern.js 内置的 Web Server 时才会生效。
如果有自定义模版的需求,请参考 HTML 模板。通过 html.template
或 tools.html
手动修改模版时,可能会导致该功能无法正确生效。