Token导航 LogoToken导航TokenDH.com
研究检索需要联网clawhub未标认证来源可访问clear审计通过

vue3-composition-helpervue3 组合助手

Agent Skill

用于辅助前端页面、组件、样式和交互逻辑的开发与维护。它适合让 Agent 生成或审查 React、Next.js、Vue、Tailwind、CSS 等相关代码,整理组件结构,或定位布局和性能问题。使用时需要结合项目现有设计系统、路由和构建方式,避免只生成孤立片段;涉及页面改动时,应配合本地预览和构建检查确认视觉效果。

总安装

4,798

周安装

204

GitHub Stars

公开资料未说明

下载量

1,681
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:vue3-composition-helper(vue3 组合助手)
来源仓库:https://github.com/chenxiaoyu0124-web/vue3-composition-helper
安装命令:
openclaw skills install vue3-composition-helper
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install vue3-composition-helper

简介

提供Vue3 Composition API的速查与示例,涵盖响应式用法、VueUse函数、组件通信及性能优化技巧,代码默认使用<script setup>+TS。

SKILL.md

name
vue3-composition-helper
description
Vue3 Composition API 速查与最佳实践。当使用Vue3 + TypeScript + <script setup>语法开发时使用。包含常用组合式函数模式、VueUse推荐用法、响应式陷阱避坑、性能优化技巧。所有代码默认使用<script setup>+TypeScript。

Vue3 Composition API 助手

基本原则

  • 所有代码使用 <script setup lang="ts">
  • 优先 VueUse,不重复造轮子
  • ref 用于基础类型,reactive 用于对象(避免 reactive 解构丢失响应性)

响应式速查

import { ref, reactive, computed, watch, watchEffect } from 'vue'
import { useStorage, useDebounceFn, useWindowSize } from '@vueuse/core'

// ref - 基础类型
const count = ref(0)
const user = ref<User | null>(null)

// reactive - 对象(⚠️ 不要解构,会丢失响应性)
const state = reactive({
  loading: false,
  data: [] as Item[],
  error: null as string | null,
})

// computed - 派生状态
const filteredList = computed(() =>
  state.data.filter(item => item.active)
)

// watch - 副作用
watch(count, (newVal) => {
  console.log('count changed:', newVal)
}, { immediate: false })

// watchEffect - 自动追踪依赖
watchEffect(() => {
  console.log('data length:', state.data.length)
})

VueUse 常用函数

import {
  useStorage,        // localStorage 响应式绑定
  useDebounceFn,     // 防抖
  useThrottleFn,     // 节流
  useWindowSize,     // 窗口尺寸
  useMouse,          // 鼠标位置
  useEventListener,  // 事件监听(自动清理)
  useIntersectionObserver, // 元素可见性
  useClipboard,      // 剪贴板
  useTitle,          // 页面标题
  useAsyncState,     // 异步状态管理
} from '@vueuse/core'

// localStorage 持久化(替代 ref + onMounted 写入)
const theme = useStorage('theme', 'dark')

// 防抖搜索
const debouncedSearch = useDebounceFn((query: string) => {
  fetchResults(query)
}, 300)

// 异步状态(替代 loading + error 手动管理)
const { state, isLoading, error } = useAsyncState(
  fetchItems(),
  { items: [] as Item[] },
)

组件通信

// Props(带类型)
interface Props {
  title: string
  count?: number  // 可选
  items: Item[]
}
const props = withDefaults(defineProps<Props>(), {
  count: 0,
})

// Emit(带类型)
interface Emits {
  change: [value: string]
  update: [id: string, data: Partial<Item>]
}
const emit = defineEmits<Emits>()

// 跨层级通信
// 祖先组件
provide('config', { theme: 'dark', locale: 'zh-CN' })
// 后代组件
const config = inject<Config>('config')!

生命周期(Composition API 风格)

import { onMounted, onUnmounted, onBeforeUnmount } from 'vue'

onMounted(() => {
  // 初始化
})

// 用 useEventListener 自动清理,比手动 onUnmounted 更优雅
useEventListener(window, 'resize', handleResize)

性能陷阱

// ❌ 陷阱1:reactive 解构丢失响应性
const { name, age } = reactive(user) // name/age 不是响应式的!

// ✅ 正确:toRefs 或直接使用
import { toRefs } from 'vue'
const { name, age } = toRefs(reactive(user))

// ❌ 陷阱2:v-for 中使用复杂表达式
<div v-for="item in list" :key="item.id">
  {{ heavyCompute(item) }}  <!-- 每次渲染都计算 -->
</div>

// ✅ 正确:computed 缓存
const computedList = computed(() =>
  list.value.map(item => ({ ...item, result: heavyCompute(item) }))
)

// ❌ 陷阱3:不必要的响应式
const config = reactive({ apiUrl: 'https://...' }) // 不会变的数据不需要响应式

// ✅ 正确:用普通常量
const CONFIG = { apiUrl: 'https://...' } as const

通用组件模式

// 可控/非可控组件
interface Props {
  modelValue: string
}
const props = defineProps<Props>()
const emit = defineEmits<{ 'update:modelValue': [string] }>()
const internal = ref(props.modelValue)

watch(() => props.modelValue, (v) => { internal.value = v })
watch(internal, (v) => { emit('update:modelValue', v) })

// 列表+虚拟滚动
import { useVirtualList } from '@vueuse/core'
const { list, containerProps, wrapperProps } = useVirtualList(
  largeDataSource,
  { itemHeight: 48, overscan: 5 }
)

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

97.27%
按下载量换算1,635

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills