【Next】路由、页面和布局

项目初始化:

npx create-next-app@latest

定义路由

page.js 文件 用于使路径可公开访问。

通俗来说,文件夹 + 该文件夹下的 page.js => 可访问的路由

image.png

比如这里的 /dashboard/analytics 就是不可访问的。

还有一个重要特性是:pages 显示路由独有的 UI,layouts 显示跨多个路由共享的 UI。什么意思呢?=> 见页面和布局。

页面和布局

可以在首页通过 添加 Head 标签进行 SEO 优化:

<Head>
    <title>我是title</title>
    <meta name="description" content="Generated by create next app" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link rel="icon" href="/favicon.ico" />
</Head>

可以通过从 layout.js 文件导出 React 组件来定义布局。 该组件应该接受 children 属性,该属性将在渲染期间填充子布局(如果存在)或子页面。

image.png

image.png

image.png

image.png
/app.page.tsx

"use client"
export default function Home() {
  return (
      <h1 className={"text-4xl text-orange-500"}>
        Hello Home Page
      </h1>
  );
}

/app/layout.tsx

import type { Metadata } from "next";
import { Inter } from "next/font/google";
import "./globals.css";

const inter = Inter({ subsets: ["latin"] });

export const metadata: Metadata = {
  title: "Create Next App",
  description: "Generated by create next app",
};

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="en">
      <body className={inter.className}>
      RootLayout
      {children}
      </body>
    </html>
  );
}

根布局在 app 目录的顶层定义并适用于所有路由。 此布局使你能够修改从服务器返回的初始 HTML。 根布局必须定义 <html><body> 标签,因为 Next.js 不会自动创建它们。

/app/dashboard/page.tsx

export default function Page() {
    return (
            <h1 className={"text-3xl text-blue-500"}>Hello, dashboard!</h1>
    )
};

/app/dashboard/layout.tsx

import React from "react";

export default function DashboardLayout({children}:{children:React.ReactNode}) {
    return (
        <section>
            DashboardLayout
            {children}
        </section>
    )
};

根布局 (app/layout.js) 将封装仪表板布局 (app/dashboard/layout.js),仪表板布局 (app/dashboard/layout.js) 将封装路线段在 app/dashboard/* 内。

/app/dashboard/settings/page.tsx

export default function Page() {
    return <h1 className={"text-3xl text-blue-500"}>Hello, dashboard settings!</h1>
}
  • 最顶层的布局称为 根布局。 此 required 布局在应用中的所有页面之间共享。 根布局必须包含 htmlbody 标签。
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小秀_heo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值