字体预加载没生效,是不是写法有问题?
我在 React 项目里用 next/font 加载自定义字体,但 Lighthouse 还是提示“确保文本在网页字体加载期间保持可见”,感觉预加载没起作用。我试过在 head 里加 link rel="preload",但不确定是不是和 Next.js 的机制冲突了。
这是我的组件代码:
import { Inter } from 'next/font/google';
const inter = Inter({
subsets: ['latin'],
display: 'swap',
});
export default function Layout({ children }) {
return (
<html lang="en">
<body className={inter.className}>{children}</body>
</html>
);
}
这样写应该自动处理预加载了吧?为什么还会报资源优化问题?
首先检查你的
next.config.js里是不是设置了什么奇怪的东西影响了字体加载。其次,确保你的生产环境配置正确,因为开发环境下有些优化可能不会生效。如果还是不行,可以试试手动在 _app.js 里加个 preload:
记住一点,字体预加载有时候受浏览器策略影响,特别是跨域设置不对的时候。别忘了检查开发者工具里的网络请求,看看字体是不是真的没预加载上。这些问题搞起来确实挺烦人的,我都折腾过好几次。