开发教程
欢迎来到 NuxtPro 开发教程!本教程旨在帮助您快速熟悉项目的技术栈和代码结构,无论您是想添加新功能、修复 Bug,还是仅仅想深入学习 Nuxt 3,这里都将为您提供清晰的指引。
技术栈概览
NuxtPro 构建在一系列现代化、高效的前端技术之上:
- 🌐 NuxtJs3 -> 开源的全栈的适用于生产环境的 NuxtJs 框架.
- 🌈 Vue 3 -> 用于 Web 和原生用户界面的开源代码库.
- 🔒 BetterAuth -> 简单高效的开源认证授权框架.
- ✅ Shadcn UI -> 用于构建现代风格界面的开源UI组件.
- 🎨 Tailwindcss -> 用于快速 UI 开发的开源 CSS 框架.
- 🔍 DrizzleOrm -> 用于 Node.js 和 TypeScript 的开源下一代数据库工具包.
- 💰 Stripe -> 最好、最安全的在线支付服务.
- 💳 Creem -> 为 SaaS 和独立开发者提供稳定的的在线支付服务.
- ✉️ Resend -> 为开发者们打造的现代邮件API服务.
- 👄 i18n -> 开源且轻松地为Nuxt项目添加国际化支持,再小的语种都不怕.
- 💨 plausible -> 开源且隐私友好的Google Analytics 替代品.
- 🌙 vite-pwa -> 基于vite的开源且零配置的PWA框架.
项目结构解析
理解项目的目录结构是高效开发的第一步。以下是 NuxtPro 中最核心的几个目录:
nuxt-template/
├── app.config.ts # 应用配置文件
├── app.vue # 主应用入口组件
├── nuxt.config.ts # Nuxt配置文件
├── package.json # 项目依赖配置
├── pnpm-lock.yaml # pnpm锁定文件
├── tailwind.config.js # TailwindCSS配置
├── tsconfig.json # TypeScript配置
├── README.md # 项目说明文档
├── components.json # 组件配置文件
├── assets/ # 静态资源
├── components/ # 组件目录
│ ├── nuxtpro/ # Nuxt Pro相关组件
│ │ ├── cta/ # 行动召唤组件
│ │ ├── developer/ # 开发者相关组件
│ │ ├── faq/ # FAQ组件
│ │ ├── features/ # 特性组件
│ │ ├── footer/ # 页脚组件
│ │ ├── header/ # 页头组件
│ │ ├── hero/ # Hero区域组件
│ │ ├── pricing/ # 价格组件
│ │ ├── scrollPopup/ # 滚动弹窗组件
│ │ ├── showcase/ # 展示组件
│ │ ├── testimonials/ # 用户反馈组件
│ │ └── waitlist/ # 等待列表组件
│ │
│ └── ui/ # UI通用组件
│
├── config/ # 配置目录
│ └── drizzle.config.ts # Drizzle ORM配置
│
├── i18n/ # 国际化目录
│
├── layouts/ # 布局目录
│
├── lib/ # 库文件目录
│ └── auth/ # 认证相关
│
├── middleware/ # 中间件目录
│
├── pages/ # 页面目录
│ ├── affiliate/ # 联盟营销页面
│ ├── ai/ # AI相关页面
│ ├── blog/ # 博客页面
│ ├── customer/ # 客户页面
│ ├── license/ # 许可证页面
│ ├── privacy/ # 隐私政策页面
│ ├── roadmap/ # 路线图页面
│ ├── terms/ # 条款页面
│ ├── cancel.vue # 取消页面
│ ├── error.vue # 错误页面
│ ├── index.vue # 首页
│ └── success.vue # 成功页面
│
├── plugins/ # 插件目录
│ └── referral.ts # 推荐插件
│
├── public/ # 公共资源
│
├── server/ # 服务端目录
│ ├── api/ # API接口
│ ├── database/ # 数据库相关
│ ├── migrations/ # 数据库迁移
│ ├── plugins/ # 服务端插件
│ └── tsconfig.json # 服务端TS配置
│
└── utils/ # 工具函数
实践:添加一个新页面
在 NuxtPro 中创建新页面非常简单,这得益于其基于文件系统的路由。
在
pages/
目录下创建一个新的.vue
文件,例如my-new-page.vue
。在该文件中编写您的 Vue 组件代码:
vue<template> <div> <h1>我的新页面</h1> <p>这是通过 NuxtPro 创建的!</p> </div> </template> <script setup lang="ts"> // 这里可以编写你的逻辑 </script>
启动开发服务器 (
pnpm dev
)。现在,您可以直接通过浏览器访问
http://localhost:3000/my-new-page
来查看您的新页面。
实践:创建和使用组件
为了代码的复用和可维护性,我们强烈建议将 UI 拆分为独立的组件。
在
components/nuxtpro
目录下创建一个命名目录,然后创建同名新组件,例如MyButton.vue
。编写组件代码:
vue<template> <button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"> <slot>默认按钮</slot> </button> </template>
由于 Nuxt 3 的自动导入功能,您无需在任何地方注册或导入这个组件。直接在您的页面或其他组件中使用它即可:
vue<!-- 在 pages/my-new-page.vue 中 --> <template> <div> <h1>我的新页面</h1> <p>这是一个自定义按钮的示例:</p> <MyButton>点我!</MyButton> </div> </template>
实践:创建后端 API
Nuxt 3 允许您在 server/api/
目录下直接创建后端接口。
在
server/api/
目录下创建对应api的分类目录,然后创建一个接口文件,例如/hello/hello.ts
。编写您的 API 逻辑:
typescript// server/api/hello/hello.ts export default defineEventHandler((event) => { return { message: 'Hello from NuxtPro API!' } })
您的 API 端点现在已经可用了!您可以通过
http://localhost:3000/api/hello/hello
访问它。
下一步
本教程只是一个开始。我们鼓励您:
- 浏览
pages/
和components/
目录,了解现有页面的实现方式。 - 阅读
server/api/
中的代码,学习如何与数据库和外部服务交互。 - 尝试修改现有代码,看看会发生什么!
祝您在 NuxtPro 的世界里探索愉快!