Token导航 LogoToken导航

Agent Skill · 开发规范

vue2-best-practices(vue2 最佳实践)

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

vue2-best-practices 是开发规范类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描已通过,按安装量在开发规范类的 1,265 个 Skill 里排第 927。

总安装 333周安装 14GitHub Stars 公开资料未说明下载 116核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

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

请帮我安装这个 Agent Skill:vue2-best-practices(vue2 最佳实践)
来源仓库:https://github.com/protagonistss/ithinku-plugins
仓库路径:skills/vue2-best-practices
安装命令:
npx skills add https://github.com/protagonistss/ithinku-plugins --skill vue2-best-practices
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

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

skills.shnpx skills
npx skills add https://github.com/protagonistss/ithinku-plugins --skill vue2-best-practices

这个 Skill 是做什么的

开发规范类 Skill 用来统一代码风格、目录结构和评审口径,产出多为检查清单或改写建议。

用于 Vue 2 开发最佳实践的参考与支持。vue2-best-practices 属于开发规范类 Skill,可作为该场景下的辅助能力补充。适合查找 Vue 2 项目的编码规范和优化建议。可协助获取组件设计、状态管理和性能优化的方案。建议结合实际项目规模和技术需求选择适用实践。

安装方式:通过 GitHub 仓库安装,适用于 Claude 等工具。

来源仓库内路径:skills/vue2-best-practices

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/protagonistss/ithinku-plugins --skill vue2-bes…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

vue2-best-practices 怎么安装?

在终端执行 npx skills add https://github.com/protagonistss/ithinku-plugins --skill vue2-best-practice…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

vue2-best-practices 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

vue2-best-practices 需要什么权限?

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

vue2-best-practices 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

vue2-best-practices 用的人多吗?

公开数据是累计安装 333 次,近一周安装 14 次,下载 116 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

vue2-best-practices 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理开发规范类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

开发规范类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
vercel-react-best-practices

Vercel React 最佳实践 · Codex、Claude

8,490,72025,918操作浏览器MIT通过
web-design-guidelines

网页设计指南 · Codex、Claude

6,686,01625,885需要联网MIT有提醒
remotion-best-practices

Remotion 最佳实践 · Codex、Claude

6,505,6323,027操作浏览器MIT有提醒
supabase-postgres-best-practices

Supabase Postgres 最佳实践 · Codex、Claude

3,175,5232,030需要联网MIT通过
next-best-practices

Next.js 最佳实践 · Codex、Claude

1,848,240841操作浏览器MIT通过
vue2-best-practices

vue2 最佳实践 · 本页

333—需要联网未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Vue 2 Best Practices (Legacy & Maintenance)

🌟 技能核心:稳定维护与平滑过渡

本技能旨在指导开发者维护现有的 Vue 2 项目,编写清晰、可预测的 Options API 代码,并为未来迁移到 Vue 3 做准备。 核心原则:规范化 Options API、谨慎使用 Mixins、组件解耦。

🧠 Core Principles (核心原则)

1. Options API 规范

  • Order of Options: 遵循一致的选项顺序:

1. name 2. components 3. props 4. data 5. computed 6. watch 7. lifecycle hooks (created, mounted, etc.) 8. methods

  • Data Function: data 必须始终是一个返回对象的函数,防止组件实例间状态污染。
  • Props Validation: 始终为 props 定义详细的类型验证和默认值。

2. 逻辑复用 (Logic Reuse)

  • Mixins:

- 警告: 尽量减少 Mixins 的使用。它们会导致命名冲突和隐式依赖,使代码难以理解。 - 替代: 如果必须复用逻辑,考虑使用 HOC (Higher Order Components) 或 Scoped Slots (作用域插槽)。 - 规范: 如果使用 Mixin,必须加上明确的前缀,并在组件注释中说明来源。

  • Utility Functions: 将纯逻辑提取为独立的 JS 文件导入使用。

3. 组件通信

  • Event Bus:

- 警告: 避免滥用全局 Event Bus (new Vue()) 进行通信,这会导致事件流难以追踪。 - 替代: 使用 Vuex 或 Props/Events 进行父子通信。

  • Props Down, Events Up: 严格遵守单向数据流原则。不要直接修改 prop。

🧩 状态管理 (Vuex)

  • Vuex 3:

- Modules: 始终使用 Namespaced Modules (namespaced: true) 来组织 Store。 - MapHelpers: 使用 mapState, mapGetters, mapActions 简化组件内的调用。 - Mutations: 必须是同步的。异步逻辑放在 Actions 中。 - Strict Mode: 在开发环境开启严格模式,确保状态只能通过 mutations 修改。

🚫 反模式 (Anti-Patterns)

  • ❌ Arrow Functions in Methods: 不要在 methods 或生命周期钩子中使用箭头函数,这会导致 this 指向错误。
  • ❌ Direct DOM Manipulation: 避免使用 jQuery 或直接操作 DOM,始终通过数据驱动视图。如果必须操作,使用 ref。
  • ❌ Over-reliance on Watchers: 优先使用 computed 属性来处理派生数据,而不是滥用 watch。
  • ❌ Implicit Global Variables: 避免直接在 Vue.prototype 上挂载过多全局变量。

🔄 迁移准备 (Migration Readiness)

  • Avoid Deprecated Features: 停止使用即将在 Vue 3 移除的特性(如 Filters, Inline Templates, $listeners)。
  • Composition API Plugin: 在 Vue 2.7+ 中,尝试引入 Composition API (<script setup>),以便逐步过渡到 Vue 3 的写法。

📝 代码示例

1. 规范的 Options API 组件

<template>
  <div class="user-card">
    <h3>{{ formattedName }}</h3>
    <p>{{ user.email }}</p>
    <button @click="handleEdit">编辑</button>
  </div>
</template>

<script>
// ✅ 遵循选项顺序规范
export default {
  name: 'UserCard', // 1. name

  components: { // 2. components
    EditButton
  },

  props: { // 3. props - 带类型验证
    user: {
      type: Object,
      required: true,
      validator: (value) => ['id', 'name', 'email'].every(key => key in value)
    }
  },

  data() { // 4. data - 必须是函数
    return {
      isEditing: false
    }
  },

  computed: { // 5. computed
    formattedName() {
      return this.user.name.toUpperCase()
    }
  },

  watch: { // 6. watch
    'user.id': {
      handler(newId) {
        this.fetchUserData(newId)
      },
      immediate: true
    }
  },

  created() { // 7. 生命周期钩子
    this.initializeComponent()
  },

  mounted() {
    this.setupEventListeners()
  },

  methods: { // 8. methods - 避免箭头函数
    handleEdit() {
      this.$emit('edit', this.user.id)
    },

    fetchUserData(id) {
      // 数据获取逻辑
    },

    initializeComponent() {
      // 初始化逻辑
    },

    setupEventListeners() {
      // 事件监听
    }
  }
}
</script>

2. Vuex 模块化 Store

// store/modules/user.js
// ✅ 使用命名空间模块
export default {
  namespaced: true,

  state: () => ({
    user: null,
    token: null,
    loading: false
  }),

  getters: {
    isLoggedIn: state => !!state.token,
    displayName: state => state.user?.name ?? '访客'
  },

  // Mutations 必须是同步的
  mutations: {
    SET_USER(state, user) {
      state.user = user
    },
    SET_TOKEN(state, token) {
      state.token = token
    },
    SET_LOADING(state, loading) {
      state.loading = loading
    }
  },

  // Actions 处理异步逻辑
  actions: {
    async login({ commit }, credentials) {
      commit('SET_LOADING', true)
      try {
        const { user, token } = await authService.login(credentials)
        commit('SET_USER', user)
        commit('SET_TOKEN', token)
        return { success: true }
      } catch (error) {
        return { success: false, error: error.message }
      } finally {
        commit('SET_LOADING', false)
      }
    },

    logout({ commit }) {
      commit('SET_USER', null)
      commit('SET_TOKEN', null)
    }
  }
}
<!-- 组件中使用 Vuex -->
<template>
  <div v-if="isLoggedIn">
    <p>欢迎, {{ displayName }}</p>
    <button @click="logout">退出</button>
  </div>
</template>

<script>
import { mapState, mapGetters, mapActions } from 'vuex'

export default {
  name: 'UserStatus',

  computed: {
    // ✅ 使用 map 辅助函数
    ...mapState('user', ['loading']),
    ...mapGetters('user', ['isLoggedIn', 'displayName'])
  },

  methods: {
    ...mapActions('user', ['logout'])
  }
}
</script>

3. 避免 Mixin,使用工具函数

// ❌ 避免 Mixin
const userMixin = {
  data() {
    return { user: null }
  },
  methods: {
    fetchUser() { /* ... */ }
  }
}

// ✅ 使用工具函数
// utils/user.js
export function createUserService() {
  return {
    user: null,
    async fetchUser(id) {
      this.user = await api.getUser(id)
      return this.user
    }
  }
}

// 组件中使用
import { createUserService } from '@/utils/user'

export default {
  data() {
    return {
      userService: createUserService()
    }
  },
  async created() {
    await this.userService.fetchUser(this.userId)
  }
}

4. Props 验证最佳实践

<script>
export default {
  props: {
    // ✅ 基础类型验证
    title: String,

    // ✅ 多种可能的类型
    value: [String, Number],

    // ✅ 必填字段
    userId: {
      type: [String, Number],
      required: true
    },

    // ✅ 带默认值
    size: {
      type: String,
      default: 'medium',
      validator: (value) => ['small', 'medium', 'large'].includes(value)
    },

    // ✅ 对象/数组默认值使用工厂函数
    config: {
      type: Object,
      default: () => ({
        theme: 'light',
        locale: 'zh-CN'
      })
    },

    // ✅ 自定义验证
    email: {
      type: String,
      validator: (value) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)
    }
  }
}
</script>

5. Vue 2.7+ Composition API 迁移准备

<template>
  <div>
    <p>计数: {{ count }}</p>
    <button @click="increment">+1</button>
  </div>
</template>

<script>
// Vue 2.7+ 可以使用 Composition API
import { ref, computed, onMounted } from 'vue'

export default {
  name: 'Counter',

  // ✅ 渐进式迁移:setup 函数
  setup() {
    const count = ref(0)
    const doubled = computed(() => count.value * 2)

    function increment() {
      count.value++
    }

    onMounted(() => {
      console.log('Counter mounted')
    })

    return {
      count,
      doubled,
      increment
    }
  }
}
</script>

🎨 常用指令示例

# 规范化 Options 顺序
/vue-coder 重新排列这个组件的选项顺序,使其符合最佳实践。

# 移除 Mixin
/vue-coder 分析这个组件使用的 Mixin,尝试将其重构为普通的函数导入或 HOC。

# Vuex 模块化
/vue-coder 将这个庞大的 Vuex store 拆分为独立的命名空间模块。

平台分布

Codex

35.06%
按下载量换算41

Claude

31.27%
按下载量换算36

Cursor

18.75%
按下载量换算22

Gemini CLI

9.52%
按下载量换算11

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

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

安装前确认

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

继续浏览同类 Skills