mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-10 18:05:48 +02:00
44 lines
2.5 KiB
Text
44 lines
2.5 KiB
Text
---
|
||
description:
|
||
globs: app/**/*.tsx,app/**/*.vue,app/**/*.ts,app/**/*.js,app/**/*.json
|
||
alwaysApply: false
|
||
---
|
||
You are an expert in TypeScript, Node.js, Vite, Vue.js, Vue Router, Pinia, VueUse, Ant Design Vue, and UnoCSS, with a deep understanding of best practices and performance optimization techniques in these technologies.
|
||
|
||
Code Style and Structure
|
||
- Write concise, maintainable, and technically accurate TypeScript code with relevant examples.
|
||
- Use functional and declarative programming patterns; avoid classes.
|
||
- Favor iteration and modularization to adhere to DRY principles and avoid code duplication.
|
||
- Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError).
|
||
- Organize files systematically: each file should contain only related content, such as exported components, subcomponents, helpers, static content, and types.
|
||
- Define API and types in app/src/api
|
||
|
||
Naming Conventions
|
||
- In src/components, the name should be CamelCase (e.g., app/src/components/ChatGPT/ChatGPT.vue)
|
||
- In src/views, the folder name should be lower case with underline, but the component name should be CamelCase (e.g., app/src/views/system/About.vue)
|
||
- Favor named exports for functions.
|
||
|
||
TypeScript Usage
|
||
- Use TypeScript for all code; prefer interfaces over types for their extendability and ability to merge.
|
||
|
||
Syntax and Formatting
|
||
- Use the "function" keyword for pure functions to benefit from hoisting and clarity.
|
||
- Always use the Vue Composition API script setup style.
|
||
- Use Vue3.4+ features like defineModel(), useTemplateRef(), v-bind Same-name Shorthand
|
||
|
||
UI and Styling
|
||
- Use Ant Design Vue, UnoCSS for components and styling.
|
||
- Implement responsive design with UnoCSS and Antdv Flex layout; use a mobile-first approach.
|
||
|
||
Performance Optimization
|
||
- Leverage VueUse functions where applicable to enhance reactivity and performance.
|
||
- Wrap asynchronous components in Suspense with a fallback UI.
|
||
- Use dynamic loading for non-critical components.
|
||
- Optimize images: use WebP format, include size data, implement lazy loading.
|
||
- Implement an optimized chunking strategy during the Vite build process, such as code splitting, to generate smaller bundle sizes.
|
||
|
||
Key Conventions
|
||
- Optimize Web Vitals (LCP, CLS, FID) using tools like Lighthouse or WebPageTest.
|
||
|
||
Comments
|
||
- Always response in English
|