LogoTanStarter 文档
LogoTanStarter 文档
首页模板介绍代码库快速开始环境配置
网站配置
部署

功能集成

Cloudflare数据库身份验证邮件邮件订阅存储支付通知分析聊天框联盟营销

功能定制

元数据页面落地页博客组件用户管理密钥管理

代码库

项目结构代码检查编辑器设置更新代码库
X (Twitter)

页面

学习如何在 TanStarter 模板中自定义和创建新页面

本文档涵盖了 TanStarter 模板中的页面系统,如何自定义现有页面,以及如何为您的特定需求创建新页面。

核心功能

TanStarter 模板包含多种页面类型,您可以根据需要自定义:

  • 自定义法律页面(Cookie 政策、隐私政策、服务条款)
  • 维护版本发布的更新日志
  • 创建营销和信息页面(关于、联系、等待列表、路线图)
  • 为您的特定需求添加完全自定义的页面

页面结构

TanStarter 中的页面使用 TanStack Router 基于文件的路由进行组织:

法律页面

法律页面内容存储在 content/pages 目录中,通过 src/routes/(legals)/ 中的路由渲染:

  • Cookie 政策:src/routes/(legals)/cookie.tsx
  • 隐私政策:src/routes/(legals)/privacy.tsx
  • 服务条款:src/routes/(legals)/terms.tsx

更新日志

发布说明存储在 content/changelog 目录中,并显示在更新日志页面上:

  • 更新日志:src/routes/(pages)/changelog.tsx — 每个发布都有自己的 Markdown 文件

营销页面

营销页面通过 src/routes/(pages)/ 中的路由渲染:

  • 关于:src/routes/(pages)/about.tsx
  • 联系:src/routes/(pages)/contact.tsx
  • 价格:src/routes/(pages)/pricing.tsx
  • 等待列表:src/routes/(pages)/waitlist.tsx
  • 路线图:src/routes/(pages)/roadmap.tsx

自定义现有页面

法律页面

法律页面以 Markdown 格式编写,位于 content/pages 目录中:

content/pages/privacy.md
---
title: Privacy Policy
description: Our commitment to protecting your privacy and personal data
date: "2025-03-10"
---

## Introduction

Welcome to our Privacy Policy...

要自定义法律页面:

  1. 打开 content/pages 中相应的 Markdown 文件
  2. 更新元数据(标题、描述、日期)
  3. 以 Markdown 格式修改内容
  4. 保存文件 — 页面将自动更新

更新日志

更新日志作为 Markdown 文件存储在 content/changelog 中:

content/changelog/v1.0.0.md
---
title: "Initial Release"
description: "Our first official release with core features"
date: "2024-03-01"
version: "v1.0.0"
published: true
---

### Core Features

- **User Authentication**: Secure login and registration
- **Dashboard**: Intuitive dashboard for managing your projects

要添加新发布,在 content/changelog 中创建新的 Markdown 文件(例如 v1.1.0.md)。

创建新页面

1. 基于内容的页面

对于内容丰富的页面,在 content/pages 中添加新的 Markdown 文件并创建对应的路由:

src/routes/(pages)/faq.tsx
import { createFileRoute } from '@tanstack/react-router';

export const Route = createFileRoute('/(pages)/faq')({
  component: FAQPage,
});

function FAQPage() {
  return (
    <div className="max-w-4xl mx-auto space-y-8 py-12">
      <h1 className="text-3xl font-bold">FAQ</h1>
      {/* Your content here */}
    </div>
  );
}

2. 基于组件的页面

对于需要复杂交互的页面,创建新的路由文件:

src/routes/(pages)/pricing.tsx
import { createFileRoute } from '@tanstack/react-router';
import { messages } from '@/messages';
import { seo } from '@/lib/seo';

export const Route = createFileRoute('/(pages)/pricing')({
  head: () => ({
    ...seo('pricing', {
      title: messages.pricing.title,
      description: messages.pricing.description,
    }),
  }),
  component: PricingPage,
});

function PricingPage() {
  return (
    <div className="max-w-4xl mx-auto space-y-8">
      <h1 className="text-center text-3xl font-bold">
        {messages.pricing.title}
      </h1>
      {/* Pricing components */}
    </div>
  );
}

页面路由

路由常量在 src/lib/routes.ts 中定义:

src/lib/routes.ts
export const Routes = {
  Root: '/',
  Login: '/auth/login',
  Register: '/auth/register',
  Dashboard: '/dashboard',
  Settings: '/settings',
  // ...
};

受保护的路由

TanStarter 使用中间件进行路由保护。用户仪表盘和用户设置等界面通过 src/middlewares/ 中定义的 authRouteMiddleware 进行保护,管理员的用户管理界面通过 adminRouteMiddleware 进行保护:

src/routes/dashboard.tsx
import { createFileRoute } from '@tanstack/react-router';
import { authRouteMiddleware } from '@/middlewares/auth-middleware';

export const Route = createFileRoute('/dashboard')({
  beforeLoad: ({ context }) => authRouteMiddleware(context),
  component: DashboardLayout,
});

下一步

博客

配置博客系统

组件

自定义 UI 组件

落地页

搭建落地页

网站配置

配置网站核心设置

元数据

学习如何为 TanStarter 模板自定义元数据

落地页

学习如何使用内置的组件模块创建美观、响应式的落地页

目录

核心功能
页面结构
法律页面
更新日志
营销页面
自定义现有页面
法律页面
更新日志
创建新页面
1. 基于内容的页面
2. 基于组件的页面
页面路由
受保护的路由
下一步