_document.js
是 Next.js 框架中的一个特殊文件,用于自定义 HTML 文档的结构。它允许你在服务器端渲染期间修改 <html>
和 <body>
标签的内容。这对于设置全局样式、脚本或者添加一些服务器端生成的元数据非常有用。
在 Next.js 中,默认的 _document.js
文件可能看起来像这样:
import Document, { Html, Head, Main, NextScript } from 'next/document';
class MyDocument extends Document {
render() {
return (
<Html>
<Head />
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
export default MyDocument;
如果你想在 <body>
标签上添加一个自定义类,你可以在 render
方法中这样做:
import Document, { Html, Head, Main, NextScript } from 'next/document';
class MyDocument extends Document {
render() {
return (
<Html>
<Head />
<body className="custom-class">
<Main />
<NextScript />
</body>
</Html>
);
}
}
export default MyDocument;
在这个例子中,custom-class
将会作为 <body>
标签的一个类被添加进去。
<body>
类,你可以为整个应用程序应用全局样式。_document.js
是在服务器端渲染的,因此可以确保在客户端加载之前,所有的样式和脚本都已经设置好了。<Head>
中添加 SEO 相关的元数据。<body>
的类来切换不同的 CSS 主题。<body>
上添加特定的类,可以控制某些资源的加载,比如只在特定条件下加载某个 JavaScript 库。<body>
类来控制其加载时机。如果你发现自定义的类没有生效,可能是因为以下几个原因:
_document.js
文件。尝试清除缓存或者重启服务器。_document.js
中正确地引入,并且在其他样式表之前加载。import Document, { Html, Head, Main, NextScript } from 'next/document';
class MyDocument extends Document {
render() {
return (
<Html>
<Head>
{/* 引入全局样式表 */}
<link rel="stylesheet" href="/static/styles/global.css" />
</Head>
<body className="custom-class">
<Main />
<NextScript />
</body>
</Html>
);
}
}
export default MyDocument;
在这个示例中,我们还在 <Head>
中引入了一个全局样式表 global.css
,这个样式表可以包含针对 .custom-class
的样式定义。
请注意,以上链接可能会随着 Next.js 版本的更新而发生变化,建议在 Next.js 官方文档中查找最新的信息。
领取专属 10元无门槛券
手把手带您无忧上云