frontend-vue-development
Installation
SKILL.md
前端 Vue 开发
Quick Reference
技术栈:Vue 2.7 + Vuex 3.6 + Vue Router 3.6 + bk-magic-vue 2.5
文件命名:kebab-case.vue(如 group-table.vue)
缩进:4 空格 | 无分号 | 无拖尾逗号 | HTML 双引号
API 调用:vue.$ajax.get/post/put/delete
最简示例
<template>
<div class="pipeline-list">
<bk-table :data="pipelines" v-loading="isLoading">
<bk-table-column prop="name" label="名称"></bk-table-column>
</bk-table>
</div>
</template>
<script>
export default {
data() {
return {
pipelines: [],
isLoading: false
}
},
created() {
this.fetchPipelines()
},
methods: {
async fetchPipelines() {
this.isLoading = true
try {
const res = await this.$ajax.get('/api/user/pipelines')
this.pipelines = res.data || []
} finally {
this.isLoading = false
}
}
}
}
</script>
<style lang="scss" scoped>
.pipeline-list {
padding: 20px;
}
</style>
When to Use
- 开发 Vue 组件
- 管理 Vuex 状态
- 调用后端 API
- 处理页面交互
When NOT to Use
- 后端 API 开发 → 使用
01-backend-microservice-development - 构建机 Agent → 使用
05-go-agent-development
前端应用结构
src/frontend/
├── devops-pipeline/ # 流水线应用
├── devops-atomstore/ # 研发商店应用
├── devops-manage/ # 管理应用
├── bk-pipeline/ # 流水线组件库
└── bk-permission/ # 权限组件库
ESLint 核心规则
{
'indent': ['error', 4], // 4 空格缩进
'semi': ['error', 'never'], // 禁用分号
'comma-dangle': ['error', 'never'], // 禁用拖尾逗号
'vue/html-quotes': ['error', 'double'],// HTML 双引号
'vue/no-v-html': 'error', // 禁止 v-html(防 XSS)
'no-console': 'error' // 禁止 console
}
组件选项顺序
export default {
components: { }, // 1. 组件注册
mixins: [ ], // 2. 混入
props: { }, // 3. Props
data() { }, // 4. 响应式数据
computed: { }, // 5. 计算属性
watch: { }, // 6. 侦听器
created() { }, // 7. 生命周期钩子
mounted() { },
methods: { } // 8. 方法
}
Props 定义
props: {
resourceType: {
type: String,
default: ''
},
options: {
type: Array,
default: () => [] // 对象/数组使用工厂函数
}
}
API 调用模式
// GET
this.$ajax.get(`${prefix}/user/pipelines`)
// POST
this.$ajax.post(`${prefix}/user/pipelines`, data)
// 错误处理
this.$ajax.get(url)
.then(res => this.data = res.data)
.catch(err => {
if ([404, 403].includes(err.code)) {
this.errorCode = err.code
}
})
.finally(() => this.isLoading = false)
Vuex 使用
// store/pipeline.js
export const actions = {
getPipelineList({ commit }, { projectId }) {
return vue.$ajax.get(`/api/user/projects/${projectId}/pipelines`)
}
}
// 组件中使用
import { mapActions } from 'vuex'
methods: {
...mapActions('pipeline', ['getPipelineList']),
async fetchData() {
this.list = await this.getPipelineList({ projectId: this.projectId })
}
}
方法命名约定
| 类型 | 命名模式 | 示例 |
|---|---|---|
| 事件处理 | handle* |
handleClick() |
| 初始化 | init* |
initData() |
| 格式化 | *Formatter |
statusFormatter() |
Checklist
开发组件前确认:
- 文件命名使用 kebab-case
- 遵循 ESLint 规则(4 空格、无分号)
- Props 使用完整定义(type + default)
- 对象/数组 Props 使用工厂函数
- 禁止使用 v-html
- 使用 scoped 样式
Related skills
More from tencentblueking/bk-ci
design-patterns
BK-CI 项目设计模式实践指南,涵盖工厂模式、策略模式、观察者模式、装饰器模式、模板方法等在项目中的实际应用。当用户学习设计模式、重构代码、设计可扩展架构或理解项目设计时使用。
62database-design
BK-CI 数据库设计规范与表结构指南,涵盖命名规范、字段类型选择、索引设计、分表策略、数据归档。当用户设计数据库表、优化索引、规划分表策略或进行数据库架构设计时使用。
53unit-testing
单元测试编写指南,涵盖 JUnit5/MockK 使用、测试命名规范、Mock 技巧、测试覆盖率要求、TDD 实践。当用户编写单元测试、Mock 依赖、提高测试覆盖率或进行测试驱动开发时使用。
53api-interface-design
API 接口设计规范,涵盖 RESTful 设计原则、URL 命名、HTTP 方法选择、请求响应格式、错误码定义、版本控制。当用户设计 API 接口、定义 Resource 类、编写接口文档或进行接口评审时使用。
51auth-module-architecture
Auth 权限认证模块架构指南,涵盖 IAM 集成、RBAC 权限模型、资源权限校验、权限迁移、OAuth 认证。当用户开发权限功能、配置 IAM 资源、实现权限校验或处理认证流程时使用。
44business-knowledge-workflow
业务知识获取与 Skill 文档编写工作流。当用户需要熟悉新业务模块、从 iWiki 获取文档、结合代码分析生成架构文档、或将业务知识沉淀为 Skill 时使用。
44