Fragmenty strukturalne
Komponenty, klasy i moduły
Przekształć powtarzalne kodowanie w inteligentne, świadome kontekstu przepływy pracy fragmentów. Naucz się budować fragmenty, które dostosowują się do twojego projektu, wykorzystują AI do dynamicznego generowania i integrują się płynnie z możliwościami AI Cursora.
Tradycyjne fragmenty są statyczne. Fragmenty wspomagane przez Cursor to:
Wpływ: Oszczędzaj 30-60 minut dziennie na kodzie boilerplate zachowując spójność.
Fragmenty strukturalne
Komponenty, klasy i moduły
Fragmenty wzorców
Wzorce projektowe i architektury
Fragmenty integracyjne
Wywołania API, zapytania bazy danych, konfiguracje
Fragmenty testowe
Zestawy testów, mocki i asercje
{ "Cursor React Component": { "prefix": "crc", "body": [ "// Użyj Cursora do ukończenia tego komponentu", "// Kontekst: Przestrzeń wzorców w @file ${1:Button.tsx}", "export const ${2:ComponentName} = () => {", " // Cursor: implementuj ${3:cel komponentu}", " return <div>${0}</div>", "}" ], "description": "Komponent React wspomagany przez AI" }}
Twórz fragmenty, które instruują AI aby przestrzegało twoich wzorców:
// Fragment: "cnc" - Cursor Next Component/** * @cursor Wygeneruj komponent Next.js przestrzegając tych reguł: * 1. Użyj wzorca z components/ui/Button.tsx * 2. Dołącz interfejs props TypeScript * 3. Dodaj klasy Tailwind z naszego systemu projektowego * 4. Dołącz stany ładowania i błędów * 5. Nazwa komponentu: ${1:ComponentName} * 6. Cel: ${2:cel} */
// Po wpisaniu tego Ctrl+K aby pozwolić AI ukończyć
// Fragment: "capi" - Cursor API Endpoint/** * @cursor Utwórz endpoint Express: * - Metoda: ${1|GET,POST,PUT,DELETE|} * - Ścieżka: ${2:/api/resource} * - Przestrzeń wzorca w routes/users.js * - Dołącz: walidację, obsługę błędów, logowanie * - Format odpowiedzi: { success, data, error } */
// Cursor wygeneruje kompletny endpoint
# Fragment: "cclass" - Cursor Python Class"""@cursor Wygeneruj klasę Python:- Nazwa: ${1:ClassName}- Dziedziczy: ${2:BaseClass}- Przestrzeń wzorców w models/base.py- Dołącz: __init__, __repr__, walidację- Podpowiedzi typów wymagane- Docstringi w formacie Google"""
# AI uzupełnia twoimi standardami
Przechowuj fragmenty specyficzne dla projektu, które rozumieją twoją architekturę:
## Fragment nowej funkcji
Przy tworzeniu nowej funkcji wygeneruj:
1. **Model** (wzorzec @file models/User.ts) - Interfejs TypeScript - Schemat walidacji - Model bazy danych
2. **Usługa** (wzorzec @file services/UserService.ts) - Operacje CRUD - Logika biznesowa - Obsługa błędów
3. **Kontroler** (wzorzec @file controllers/UserController.ts) - Handlery tras - Walidacja żądań - Formatowanie odpowiedzi
4. **Testy** (wzorzec @file tests/user.test.ts) - Testy jednostkowe dla usługi - Testy integracyjne dla API - Fabryki danych mock
Nazwa funkcji: [FEATURE_NAME]
.cursor/├── snippets/│ ├── components/ # Fragmenty komponentów UI│ │ ├── react/│ │ ├── vue/│ │ └── angular/│ ├── backend/ # Fragmenty serwerowe│ │ ├── api/│ │ ├── database/│ │ └── services/│ ├── testing/ # Fragmenty testowe│ │ ├── unit/│ │ ├── integration/│ │ └── e2e/│ ├── patterns/ # Fragmenty wzorców projektowych│ │ ├── singleton/│ │ ├── factory/│ │ └── observer/│ └── project/ # Fragmenty specyficzne dla projektu│ ├── auth/│ ├── payments/│ └── analytics/
Wywołaj fragment podstawowy
Wpisz: ccomp [Tab]Tworzy: Szkielet komponentu z znacznikami AI
Wzbogacenie AI
Ctrl+K na szkieleciePrompt: "Uzupełnij przestrzegając naszego wzorca komponentu Card"
Auto-generuj testy
Ctrl+IPrompt: "Wygeneruj testy dla tego komponentu"
Utwórz historię
Użyj fragmentu: cstoryAI wypełnia na podstawie props komponentu
// Główny fragment generujący pełny CRUD// Fragment: "crud-suite"
/** * @cursor Wygeneruj kompletny CRUD dla ${1:Resource}: * * 1. Model: * - Plik: models/${1:Resource}.js * - Dołącz: schemat, walidację, indeksy * * 2. Trasy: * - GET /api/${2:resources} (lista z paginacją) * - GET /api/${2:resources}/:id * - POST /api/${2:resources} * - PUT /api/${2:resources}/:id * - DELETE /api/${2:resources}/:id * * 3. Middleware: * - Uwierzytelnianie (użyj wzorca auth.js) * - Walidacja (użyj validators/${1:Resource}.js) * - Obsługa błędów * * 4. Testy: * - Pełne pokrycie wszystkich endpointów * - Mock wywołań bazy danych * - Przypadki brzegowe */
-- Fragment: "cmig" - Cursor Migration-- @cursor Utwórz migrację:-- Tabela: ${1:table_name}-- Akcja: ${2|create,alter,drop|}-- Dołącz: znaczniki czasu, indeksy, ograniczenia-- Przestrzeń wzorca w: migrations/001_create_users.sql
-- AI generuje kompletną migrację
// Fragment wykrywa i dodaje potrzebne importyexport const MyComponent = () => { // @cursor: auto-import Button, useTheme, useState // na podstawie użycia poniżej
const theme = useTheme(); const [open, setOpen] = useState(false);
return <Button onClick={() => setOpen(true)}>Kliknij</Button>}
// Fragment czyta istniejące wzorce// @cursor: przeanalizuj getAllUsers() i utwórz// getAllProducts() z tym samym wzorcem:// - Styl obsługi błędów// - Podejście do logowania// - Format odpowiedzi// - Strategia cache
def ${1:function_name}(${2:parameters}): """ @cursor: Wygeneruj docstring przez: 1. Analizę implementacji funkcji 2. Przestrzeganie Google Python Style Guide 3. Dołączenie typów parametrów z podpowiedzi 4. Dodanie przykładów użycia 5. Wylistowanie możliwych wyjątków """ ${0:# implementacja}
# Poproś Cursora o znalezienie wzorców"Przeanalizuj wszystkie komponenty React i utwórz szablon fragmentuktóry uchwyci nasze typowe wzorce"
# Cursorntyfikuje:- Wzorzec interfejsu Props- Podejście do zarządzania stanem- Użycie granicy błędów- Wzorzec stanu ładowania- Importy modułów CSS
// v1: Podstawowy fragmentconst ${1:name} = () => <div>${0}</div>
// v2: Dodaj typowe wzorceconst ${1:name} = () => { const [loading, setLoading] = useState(false); return <div>${0}</div>}
// v3: Wzbogacone o AIconst ${1:name} = () => { // @cursor: dodaj hooki powszechnie używane w naszych komponentach return <div>${0}</div>}
// Łącz wiele fragmentów// @snippet: component-base// @snippet: error-boundary// @snippet: loading-state// @snippet: responsive-wrapper
// Cursor scala wszystkie wzorce w spójny komponent
version: 1.0team: frontendupdated: 2025-01-15
snippets: - id: react-component category: components languages: [typescript, javascript] dependencies: [react, tailwind]
- id: api-endpoint category: backend languages: [javascript] dependencies: [express, joi]
- id: python-test category: testing languages: [python] dependencies: [pytest, mock]
# Fragment: Komponent formularza React
## UżycieWpisz `crform` i naciśnij Tab
## Generuje- Kontrolowany komponent formularza- Walidacja z react-hook-form- Obsługa błędów- Stany ładowania- Atrybuty dostępności
## Punkty dostosowania- Pola formularza: Zdefiniuj w promptcie- Reguły walidacji: Określ wymagania- Handler submit: Opisz wywołanie API
## Przykład`crform` → Tab → "formularz logowania z email i hasłem"
Metryka | Bez fragmentów | Z fragmentami AI | Poprawa |
---|---|---|---|
Tworzenie komponentów | 15 min | 2 min | 87% szybciej |
Spójność | Zmienna | Wysoka | 95% jednolite |
Wskaźnik błędów | Umiarkowany | Niski | 60% mniej |
Czas onboardingu | 2 tygodnie | 3 dni | 78% szybciej |
// Fragment: "cstate"const [${1:name}, set${1/(.*)/${1:/capitalize}/}] = useState( // @cursor: jeśli ${1} kończy się na "List", domyślnie [] // @cursor: jeśli ${1} kończy się na "Count", domyślnie 0 // @cursor: jeśli ${1} kończy się na "Flag", domyślnie false // @cursor: w przeciwnym razie, domyślnie null);
# Fragment: "feature-complete"@cursor Utwórz funkcję "${1:FeatureName}":
1. Utwórz plik: features/${1}/index.ts2. Utwórz plik: features/${1}/types.ts3. Utwórz plik: features/${1}/hooks.ts4. Utwórz plik: features/${1}/${1}.test.ts5. Zaktualizuj: features/index.ts z eksportem
Przestrzeń struktury w features/UserAuth/
// Zdefiniuj części fragmentów wielokrotnego użytku#macro ERROR_HANDLINGtry { $CONTENT} catch (error) { logger.error('$CONTEXT', error); throw new AppError('$MESSAGE', error);}#endmacro
// Użyj we fragmentachasync function ${1:name}() { #ERROR_HANDLING{ CONTENT: ${0:// implementacja} CONTEXT: ${1:name} nie powiódł się MESSAGE: Nie udało się wykonać ${1:name} }}
Opanuj przepływy pracy fragmentów aby odblokować:
Kontynuuj naukę z:
Pamiętaj: Najlepsze fragmenty to żywe narzędzia, które ewoluują z twoją bazą kodu. Regularnie analizuj swoje wzorce kodowania i aktualizuj fragmenty aby pasowały.