使用 Next.js 完善全局布局 - 约 597 字
更新 components/layout.js
打开 components/layout.js
并用以下代码替换其内容,更改 FanMa
为您的实际名称:
import Head from 'next/head';
import Image from 'next/image';
import styles from './layout.module.css';
import utilStyles from '../styles/utils.module.css';
import Link from 'next/link';
const name = 'FanMa';
export const siteTitle = 'This a FanMa blog.';
export default function Layout({ children, home }) {
return (
<div className={styles.container}>
<Head>
<link rel="icon" href="/favicon/favicon.ico" />
<meta
name="description"
content="Welcome to Fanma's blog."
/>
<meta
property="og:image"
content={`https://og-image.vercel.app/${encodeURI(
siteTitle,
)}.png?theme=light&md=0&fontSize=75px&images=https%3A%2F%2Fassets.vercel.com%2Fimage%2Fupload%2Ffront%2Fassets%2Fdesign%2Fnextjs-black-logo.svg`}
/>
<meta name="og:title" content={siteTitle} />
<meta name="twitter:card" content="summary_large_image" />
</Head>
<header className={styles.header}>
{home ? (
<>
<Image
priority
src="/images/profile.jpg"
className={utilStyles.borderCircle}
height={152}
width={152}
alt=""
/>
<h1 className={utilStyles.heading2Xl}>{name}</h1>
</>
) : (
<>
<Link href="/">
<Image
priority
src="/images/profile.jpg"
className={utilStyles.borderCircle}
height={108}
width={108}
alt=""
/>
</Link>
<h2 className={utilStyles.headingLg}>
<Link href="/" className={utilStyles.colorInherit}>
{name}
</Link>
</h2>
</>
)}
</header>
<main>{children}</main>
{!home && (
<div className={styles.backToHome}>
<Link href="/">← Back to home</Link>
</div>
)}
</div>
);
}
这是新功能:
- meta 标签(如og:image),用于描述页面内容。
- home 调整标题和图像大小的布尔属性。
- home 如果是,底部的
← Back to home
链接关闭。 - 添加了图像
next/image
组件,这些图像预加载了priority属性。
设置头像
- 1、在你的资产文件夹 public 里创建一个
images
文件夹. - 2、挑选一张帅气漂亮一点的照片做为你的头像,并将你的头像文件名命名为
profile.jpg
。 - 3、把头像照片文件
profile.jpg
放到刚才创建的images
文件夹里。
更新 pages/index.js
最后,让我们更新主页内容,打开 pages/index.js
并将其内容替换为:
import Head from 'next/head';
import Layout, { siteTitle } from '../components/layout';
import utilStyles from '../styles/utils.module.css';
import Link from 'next/link';
export default function Home() {
return (
<Layout home>
<Head>
<title>{siteTitle}</title>
</Head>
<main className={utilStyles.headingMd}>
<h1>
FanMa Blog's HomePage
</h1>
<p>
This a FanMa Blog.
</p>
<p>This is a blog site created by FanMa using Next.js. It doesn't have any content yet, which means I will improve it slowly. I'm looking forward to new friends asking about my blog website, I'm really very happy.</p>
<ul>
<li>
<Link href="/posts/first-post">My first post.</Link>
</li>
</ul>
</main>
</Layout>
);
}
在浏览器上刷新 http://localhost:3000
首页,可以看到您帅气漂亮的头像已经在首页已经显示出来了,在下面还有一些关于您的详细介绍。这就是我们想要的结果,我们的布局代码就已经完善好了。