支持的浏览器
Next.js 开箱即用支持现代浏览器,无需额外配置:
- Chrome 64+
- Edge 79+
- Firefox 67+
- Opera 51+
- Safari 12+
Browserslist
如需针对特定浏览器或功能,Next.js 支持在 package.json
中配置 Browserslist。默认使用以下配置:
Polyfills
我们自动注入了广泛使用的 polyfill,包括:
- fetch() — 替代方案:
whatwg-fetch
和unfetch
- URL — 替代方案:
url
包 (Node.js API) - Object.assign() — 替代方案:
object-assign
、object.assign
和core-js/object/assign
如果依赖项已包含这些 polyfill,生产构建时会自动去重以避免重复加载。
此外,为减少包体积,Next.js 只会为需要 polyfill 的浏览器加载它们。全球大部分网络流量不会下载这些 polyfill。
自定义 Polyfill
若您的代码或外部 npm 依赖需要目标浏览器不支持的功能(如 IE 11),需自行添加 polyfill。
此时,应在自定义 <App>
或具体组件中按需导入特定 polyfill。
JavaScript 语言特性
Next.js 默认支持最新 JavaScript 特性,除 ES6 功能外还包括:
- Async/await (ES2017)
- 对象展开/剩余属性 (ES2018)
- 动态
import()
(ES2020) - 可选链 (ES2020)
- 空值合并 (ES2020)
- 类字段 与 静态属性 (stage 3 提案)
- 以及更多!
服务端 Polyfill
除客户端 fetch()
外,Next.js 还在 Node.js 环境中自动 polyfill fetch()
(使用与 Node.js 相同的 undici
实现)。您可在服务端代码(如 getStaticProps
/getServerSideProps
)中直接使用 fetch()
,无需额外引入 isomorphic-unfetch
或 node-fetch
。
TypeScript 特性
Next.js 内置 TypeScript 支持。了解更多。
自定义 Babel 配置(高级)
支持自定义 Babel 配置。了解更多。