Skip to content
Back to skills

Frontend Vue

ASecurity

专业的 Vue.js 开发技能,涵盖 Nuxt 3、Vue 3 Composition API、Tailwind CSS 和 Vue 生态系统。使用此技能构建 Vue 应用程序、实现 Nuxt 功能、使用 Pinia 进行状态管理,或使用 shadcn-vue 等组件库。

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 8, 2026
ai-agentstypescriptreactvueapifrontend

Works with

  • api

Security analysis

A100/100

Scanned September 8, 2026

npx -y skills add ProjAnvil/MindForge --skill frontend-vue --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Frontend Vue?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Frontend Vue
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/projanvil-frontend-vue-mindforge/badge)](https://www.skillsdirectory.com/skills/projanvil-frontend-vue-mindforge)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: frontend-vue
description: 专业的 Vue.js 开发技能,涵盖 Nuxt 3、Vue 3 Composition API、Tailwind CSS 和 Vue 生态系统。使用此技能构建 Vue 应用程序、实现 Nuxt 功能、使用 Pinia 进行状态管理,或使用 shadcn-vue 等组件库。
---

# Vue 开发技能

现代 Vue.js 开发的综合技能,专注于 Nuxt 3、Vue 3 Composition API、Tailwind CSS 和 Vue 生态系统。

## 技术栈

### 核心框架:Vue 3 + Nuxt 3

#### Vue 3 特性
- **组合式 API (Composition API)**:使用 `<script setup>` 复用逻辑
- **响应式系统**:`ref`, `reactive`, `computed`, `watch`
- **Teleport**:将内容渲染到组件 DOM 层次结构之外
- **Fragments**:支持多个根节点
- **Suspense**:处理异步依赖

#### Nuxt 3 特性
- **自动导入**:自动导入 Vue API 和组件
- **基于文件的路由**:`pages/` 目录中的文件创建路由
- **服务器引擎 (Nitro)**:通用部署
- **数据获取**:`useFetch`, `useAsyncData`
- **服务器路由**:`server/api/` 中的 API 端点
- **SEO/Meta**:`useHead`, `useSeoMeta`

### UI 框架:Tailwind CSS + shadcn-vue

#### Tailwind CSS
- 实用优先架构
- 通过 `tailwind.config.ts` 配置
- 使用 PostCSS 优化

#### shadcn-vue (或类似库)
- shadcn/ui 的 Vue 移植版
- 基于 Radix Vue 的可访问组件
- **关键组件**:Button, Input, Select, Dialog, Toast

### 状态管理
- **Pinia**:Vue 官方状态管理库
  - 模块化 Store
  - TypeScript 支持
  - DevTools 集成
  - 无 Mutation (只有 Actions)

## 项目架构

### 推荐目录结构 (Nuxt 3)
```
project-root/
├── app.vue            # 根组件
├── nuxt.config.ts     # 配置
├── components/        # 自动导入组件
│   ├── ui/            # UI 库组件
│   │   ├── button/
│   │   └── ...
│   └── Header.vue
├── pages/             # 路由
│   ├── index.vue
│   └── about.vue
├── layouts/           # 布局包装器
│   └── default.vue
├── composables/       # 自动导入逻辑
│   └── useUser.ts
├── server/            # 服务器 API
│   └── api/
│       └── hello.ts
├── stores/            # Pinia stores
│   └── counter.ts
└── assets/            # CSS, 图片
    └── main.css
```

## 最佳实践

### 使用 `<script setup>` 的组合式 API
- 对响应式变量使用 `const`。
- 按功能组织逻辑。
- 将复杂逻辑提取到组合式函数中 (`composables/`)。

### 性能
- **异步组件**:使用 `defineAsyncComponent` 进行懒加载。
- **懒获取**:对非关键数据在 `useFetch` 中使用 `lazy: true` 选项。
- **资源优化**:使用 Nuxt Image 进行图片优化。

### Nuxt 特定注意事项
- **水合不匹配 (Hydration Mismatch)**:确保服务器渲染的 HTML 与客户端匹配。避免在初始渲染时使用随机 ID 或日期。
- **中间件**:使用路由中间件进行权限守卫 (`middleware/auth.ts`)。

## 常见代码模式

### 带数据获取的 Nuxt 页面
```vue
<script setup lang="ts">
const { data: user, error } = await useFetch('/api/user/1')

if (error.value) {
  console.error(error.value)
}
</script>

<template>
  <div v-if="user" class="p-4">
    <h1 class="text-2xl font-bold">{{ user.name }}</h1>
    <p>{{ user.email }}</p>
  </div>
  <div v-else>加载中...</div>
</template>
```

### Pinia Store
```ts
// stores/counter.ts
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', () => {
  const count = ref(0)
  const doubleCount = computed(() => count.value * 2)
  
  function increment() {
    count.value++
  }

  return { count, doubleCount, increment }
})
```

### 组合式函数 (Composable)
```ts
// composables/useMouse.ts
export function useMouse() {
  const x = ref(0)
  const y = ref(0)

  function update(event) {
    x.value = event.pageX
    y.value = event.pageY
  }

  onMounted(() => window.addEventListener('mousemove', update))
  onUnmounted(() => window.removeEventListener('mousemove', update))

  return { x, y }
}
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…