--- description: globs: alwaysApply: false --- # 智慧生态项目编码规范 ## 代码风格 ### JavaScript/Vue 规范 1. 使用 ES6+ 语法特性 2. 变量命名: - 常量使用 UPPER_SNAKE_CASE - 变量和函数使用 camelCase - 组件名使用 PascalCase 3. 缩进使用 Tab 制表符 4. 字符串优先使用单引号 5. 语句末尾不加分号(遵循项目现有风格) ### Vue 组件规范 ```vue ``` ## API 接口规范 ### 接口定义示例 参考 [login.js](mdc:api/login.js) 的实现方式: ```javascript import request from '@/utils/request' // 登录方法 export function login(username, password, captchaVerification) { const data = { username, password, captchaVerification } return request({ url: '/system/auth/login', headers: { isToken: false }, 'method': 'POST', 'data': data }) } ``` ### 请求响应处理 1. 使用 [request.js](mdc:utils/request.js) 统一处理请求 2. 错误码定义在 [errorCode.js](mdc:utils/errorCode.js) 3. 统一的响应拦截和错误处理 ## 状态管理规范 ### Vuex Module 示例 ```javascript const state = { // 状态定义 } const mutations = { SET_STATE(state, value) { state.property = value } } const actions = { async fetchData({ commit }) { const res = await api.getData() commit('SET_STATE', res.data) } } export default { namespaced: true, state, mutations, actions } ``` ## 工具函数规范 ### 工具函数定义 参考 [common.js](mdc:utils/common.js) 和 [ruoyi.js](mdc:utils/ruoyi.js): 1. 单一职责原则 2. 函数命名清晰 3. 添加必要的注释 ## uni-app 特定规范 ### 条件编译 ```javascript // #ifdef MP-WEIXIN // 微信小程序特有代码 // #endif // #ifdef APP-PLUS // APP 特有代码 // #endif ``` ### 页面跳转 使用 uni-app 的路由 API: ```javascript // 保留当前页面,跳转到应用内的某个页面 uni.navigateTo({ url: '/pages/detail/detail' }) // 关闭当前页面,跳转到应用内的某个页面 uni.redirectTo({ url: '/pages/index/index' }) // 关闭所有页面,打开到应用内的某个页面 uni.reLaunch({ url: '/pages/login/login' }) ``` ### 数据存储 使用 [storage.js](mdc:utils/storage.js) 封装的方法: ```javascript import storage from '@/utils/storage' // 存储 storage.set('key', value) // 获取 const value = storage.get('key') // 删除 storage.remove('key') ``` ## 权限控制 ### 路由权限 参考 [permission.js](mdc:permission.js) 实现: 1. 定义白名单页面 2. 使用拦截器进行权限验证 3. 未授权自动跳转登录页 ### 接口权限 使用 [auth.js](mdc:utils/auth.js) 管理 Token: ```javascript import { getAccessToken } from '@/utils/auth' // 在请求头中携带 Token const token = getAccessToken() ``` ## 错误处理 ### 统一错误提示 ```javascript uni.showToast({ title: '操作失败', icon: 'none' }) // 或使用封装的提示方法 this.$modal.msg('操作成功') this.$modal.msgError('操作失败') ``` ### 异常捕获 ```javascript try { const res = await api.getData() // 处理成功响应 } catch (error) { console.error('请求失败:', error) this.$modal.msgError('获取数据失败') } ``` ## 性能优化 ### 小程序分包 1. 主包保持精简,只包含核心页面 2. 按功能模块进行分包 3. 在 [pages.json](mdc:pages.json) 中配置 subPackages ### 图片优化 1. 使用合适的图片格式 2. 控制图片大小 3. 使用懒加载 ### 数据缓存 1. 合理使用本地存储 2. 避免频繁请求相同数据 3. 设置合理的缓存过期时间