开发提示词生成
使用cursor开发独立站
用户
后台接口是strapi5开发的,前端开发用nextjs15,现在开始开发前端要给ai开发工具cursor写提示词,如何写才能让cursor最大程度符合要求,包括前台页面都使用服务器组件,用户中心使用客户端组件,通用错误处理,接口规范,比如strapi v5 结构已经扁平化没有.attribute了 等
AI 助手
为了让 Cursor 在开发过程中最大程度地符合你的要求,提示词需要清晰、具体,并且涵盖所有关键点。以下是一个详细的提示词模板,你可以根据需要进行调整:
---
### 项目背景
- **后台接口**:使用 Strapi v5 开发,接口结构已经扁平化,没有 `.attribute`。
- **前端框架**:使用 Next.js 15 开发,遵循最新的最佳实践。
- **组件规范**:
- **前台页面**:全部使用服务器组件(Server Components)。
- **用户中心**:使用客户端组件(Client Components)。
- **错误处理**:实现通用的错误处理机制,确保用户体验一致。
- **接口规范**:遵循 Strapi v5 的扁平化结构,确保接口调用正确。
### 开发要求
1. **服务器组件**:
- 所有前台页面(如首页、产品列表、文章详情等)必须使用服务器组件。
- 确保服务器组件的数据获取逻辑正确,使用 `fetch` 或 `axios` 调用 Strapi v5 接口。
- 遵循 Next.js 15 的服务器组件最佳实践,避免在服务器组件中使用客户端特性(如 `useState`、`useEffect` 等)。
2. **客户端组件**:
- 用户中心(如登录、注册、个人资料、订单管理等)必须使用客户端组件。
- 确保客户端组件的交互逻辑正确,使用 `useState`、`useEffect` 等 React Hooks。
- 遵循 Next.js 15 的客户端组件最佳实践,确保代码简洁高效。
3. **通用错误处理**:
- 实现统一的错误处理机制,包括网络错误、API 错误、用户输入错误等。
- 在页面或组件中展示友好的错误提示,确保用户体验一致。
- 使用 `try-catch` 或 `error boundaries` 捕获和处理错误。
4. **接口调用规范**:
- 使用 Strapi v5 的扁平化结构,直接访问字段,无需使用 `.attribute`。
- 确保接口调用的 URL 和参数正确,遵循 RESTful API 规范。
- 使用 `fetch` 或 `axios` 进行接口调用,确保代码可读性和可维护性。
5. **代码风格与规范**:
- 遵循一致的代码风格,使用 ESLint 和 Prettier 进行代码格式化。
- 确保代码注释清晰,关键逻辑有详细说明。
- 使用 TypeScript 进行类型检查,确保代码的健壮性。
### 示例代码
#### 服务器组件示例
// pages/index.tsx
import { fetchData } from '@/lib/api';
export default async function Home() {
const data = await fetchData('/api/posts');
return (
<div>
<h1>Posts</h1>
<ul>
{data.map((post: any) => (
<li key={post.id}>{post.title}</li>
))}
</ul>
</div>
);
}
#### 客户端组件示例
// components/UserProfile.tsx
'use client';
import { useState, useEffect } from 'react';
import { fetchUser } from '@/lib/api';
export default function UserProfile() {
const [user, setUser] = useState(null);
useEffect(() => {
const loadUser = async () => {
try {
const data = await fetchUser('/api/users/me');
setUser(data);
} catch (error) {
console.error('Failed to fetch user:', error);
}
};
loadUser();
}, []);
if (!user) return <div>Loading...</div>;
return (
<div>
<h1>{user.username}</h1>
<p>{user.email}</p>
</div>
);
}
#### 通用错误处理示例
// lib/api.ts
export async function fetchData(url: string) {
try {
const response = await fetch(`${process.env.NEXT_PUBLIC_STRAPI_URL}${url}`);
if (!response.ok) {
throw new Error('Network response was not ok');
}
return await response.json();
} catch (error) {
console.error('Fetch error:', error);
throw error;
}
}
### 其他注意事项
- **环境变量**:使用 `NEXT_PUBLIC_` 前缀暴露必要的环境变量,如 Strapi 的 API URL。
- **性能优化**:确保页面加载性能优化,使用 `next/image` 处理图片,避免不必要的重渲染。
- **测试**:编写单元测试和集成测试,确保代码的稳定性和可靠性。
---
### 提示词总结
- **明确技术栈**:Strapi v5 + Next.js 15。
- **组件分工**:服务器组件用于前台页面,客户端组件用于用户中心。
- **错误处理**:统一的错误处理机制。
- **接口规范**:遵循 Strapi v5 的扁平化结构。
- **代码风格**:使用 ESLint、Prettier 和 TypeScript。
- **示例代码**:提供服务器组件、客户端组件和错误处理的示例代码。