12 changed files with 13991 additions and 86 deletions
@ -0,0 +1,3 @@ |
|||
.vscode |
|||
.idea |
|||
.vite |
@ -1,9 +0,0 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<module type="JAVA_MODULE" version="4"> |
|||
<component name="NewModuleRootManager" inherit-compiler-output="true"> |
|||
<exclude-output /> |
|||
<content url="file://$MODULE_DIR$" /> |
|||
<orderEntry type="inheritedJdk" /> |
|||
<orderEntry type="sourceFolder" forTests="false" /> |
|||
</component> |
|||
</module> |
@ -1,7 +0,0 @@ |
|||
<component name="InspectionProjectProfileManager"> |
|||
<profile version="1.0"> |
|||
<option name="myName" value="Project Default" /> |
|||
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" /> |
|||
<inspection_tool class="Stylelint" enabled="true" level="ERROR" enabled_by_default="true" /> |
|||
</profile> |
|||
</component> |
@ -1,6 +0,0 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="ProjectRootManager"> |
|||
<output url="file://$PROJECT_DIR$/out" /> |
|||
</component> |
|||
</project> |
@ -1,8 +0,0 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="ProjectModuleManager"> |
|||
<modules> |
|||
<module fileurl="file://$PROJECT_DIR$/.idea/ElectronicLock.iml" filepath="$PROJECT_DIR$/.idea/ElectronicLock.iml" /> |
|||
</modules> |
|||
</component> |
|||
</project> |
@ -1,6 +0,0 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="VcsDirectoryMappings"> |
|||
<mapping directory="" vcs="Git" /> |
|||
</component> |
|||
</project> |
@ -1,47 +0,0 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<project version="4"> |
|||
<component name="ChangeListManager"> |
|||
<list default="true" id="211851b0-9ab0-4e5f-aa9e-26a8bc90bd1a" name="Changes" comment="" /> |
|||
<option name="SHOW_DIALOG" value="false" /> |
|||
<option name="HIGHLIGHT_CONFLICTS" value="true" /> |
|||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> |
|||
<option name="LAST_RESOLUTION" value="IGNORE" /> |
|||
</component> |
|||
<component name="Git.Settings"> |
|||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> |
|||
</component> |
|||
<component name="ProjectColorInfo"><![CDATA[{ |
|||
"associatedIndex": 0 |
|||
}]]></component> |
|||
<component name="ProjectId" id="31XXEBRCJdorsK3ASEM8ZJM1UA5" /> |
|||
<component name="ProjectViewState"> |
|||
<option name="hideEmptyMiddlePackages" value="true" /> |
|||
<option name="showLibraryContents" value="true" /> |
|||
<option name="showMembers" value="true" /> |
|||
</component> |
|||
<component name="PropertiesComponent"><![CDATA[{ |
|||
"keyToString": { |
|||
"RunOnceActivity.OpenProjectViewOnStart": "true", |
|||
"RunOnceActivity.ShowReadmeOnStart": "true", |
|||
"WebServerToolWindowFactoryState": "false", |
|||
"git-widget-placeholder": "master", |
|||
"last_opened_file_path": "C:/Users/admin/Desktop/xiangmu", |
|||
"vue.rearranger.settings.migration": "true" |
|||
} |
|||
}]]></component> |
|||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" /> |
|||
<component name="TaskManager"> |
|||
<task active="true" id="Default" summary="Default task"> |
|||
<changelist id="211851b0-9ab0-4e5f-aa9e-26a8bc90bd1a" name="Changes" comment="" /> |
|||
<created>1755671276644</created> |
|||
<option name="number" value="Default" /> |
|||
<option name="presentableId" value="Default" /> |
|||
<updated>1755671276644</updated> |
|||
<workItem from="1755671278263" duration="46000" /> |
|||
</task> |
|||
<servers /> |
|||
</component> |
|||
<component name="TypeScriptGeneratedFilesManager"> |
|||
<option name="version" value="3" /> |
|||
</component> |
|||
</project> |
@ -0,0 +1,11 @@ |
|||
# 电子锁 |
|||
|
|||
## 文档 |
|||
|
|||
【腾讯文档】电子锁 |
|||
<https://docs.qq.com/doc/DUW5TVWVLdmx6Zm9H> |
|||
|
|||
## 流程图 |
|||
|
|||
【腾讯文档】电子锁-流程图 |
|||
<https://docs.qq.com/flowchart/DUWdtVXBhZmtXR25F> |
File diff suppressed because one or more lines are too long
@ -0,0 +1,101 @@ |
|||
# 依赖目录 |
|||
node_modules/ |
|||
.pnpm-store/ |
|||
|
|||
# 构建输出 |
|||
dist/ |
|||
dist-ssr/ |
|||
build/ |
|||
*.local |
|||
|
|||
# 缓存文件 |
|||
.cache/ |
|||
.parcel-cache/ |
|||
.vite/ |
|||
.eslintcache |
|||
.stylelintcache |
|||
|
|||
# 日志文件 |
|||
*.log |
|||
npm-debug.log* |
|||
yarn-debug.log* |
|||
yarn-error.log* |
|||
pnpm-debug.log* |
|||
lerna-debug.log* |
|||
|
|||
# 运行时数据 |
|||
pids |
|||
*.pid |
|||
*.seed |
|||
*.pid.lock |
|||
|
|||
# 覆盖率目录 |
|||
coverage/ |
|||
*.lcov |
|||
.nyc_output |
|||
|
|||
# 依赖锁定文件 |
|||
package-lock.json |
|||
yarn.lock |
|||
pnpm-lock.yaml |
|||
|
|||
# 环境变量文件 |
|||
.env |
|||
.env.local |
|||
.env.development.local |
|||
.env.test.local |
|||
.env.production.local |
|||
|
|||
# IDE和编辑器 |
|||
.vscode/ |
|||
.idea/ |
|||
*.swp |
|||
*.swo |
|||
*~ |
|||
|
|||
# 操作系统生成的文件 |
|||
.DS_Store |
|||
.DS_Store? |
|||
._* |
|||
.Spotlight-V100 |
|||
.Trashes |
|||
ehthumbs.db |
|||
Thumbs.db |
|||
|
|||
# 临时文件 |
|||
*.tmp |
|||
*.temp |
|||
.tmp/ |
|||
.temp/ |
|||
|
|||
# 测试相关 |
|||
.nyc_output/ |
|||
coverage/ |
|||
*.test.js |
|||
*.spec.js |
|||
|
|||
# 自动生成的文件 |
|||
auto-*.d.ts |
|||
components.d.ts |
|||
auto-imports.d.ts |
|||
|
|||
# 历史记录 |
|||
.history/ |
|||
|
|||
# 调试文件 |
|||
.vscode/ |
|||
*.code-workspace |
|||
|
|||
# 本地配置文件 |
|||
.vscode/settings.json |
|||
.vscode/launch.json |
|||
.vscode/extensions.json |
|||
|
|||
# 包管理器文件 |
|||
.npmrc |
|||
.yarnrc |
|||
.yarnrc.yml |
|||
|
|||
# 其他 |
|||
*.tgz |
|||
*.tar.gz |
@ -0,0 +1,131 @@ |
|||
# 项目代码规范与最佳实践 |
|||
|
|||
## 技术栈 |
|||
- Vue 3 + Composition API |
|||
- TypeScript |
|||
- UnoCSS |
|||
- Element Plus |
|||
- Vite |
|||
- Pinia (状态管理) |
|||
- Vue Router |
|||
|
|||
## 代码规范 |
|||
|
|||
### Vue 组件规范 |
|||
- 使用 Composition API 和 `<script setup>` 语法 |
|||
- 组件名使用 PascalCase 命名 |
|||
- Props 必须定义类型,使用 `defineProps<T>()` 语法 |
|||
- Emits 必须定义类型,使用 `defineEmits<T>()` 语法 |
|||
- 组件文件使用 `.vue` 扩展名 |
|||
- 单文件组件结构:`<template>` -> `<script setup>` -> `<style>` |
|||
|
|||
### TypeScript 规范 |
|||
- 严格模式:启用 `strict: true` |
|||
- 类型定义完整,避免使用 `any` |
|||
- 接口命名使用 PascalCase,以 `I` 开头(如 `IUserInfo`) |
|||
- 类型别名使用 PascalCase |
|||
- 枚举使用 PascalCase |
|||
- 函数参数和返回值必须定义类型 |
|||
|
|||
### UnoCSS 使用规范 |
|||
- 优先使用 UnoCSS 原子类 |
|||
- 自定义规则在 `uno.config.ts` 中定义 |
|||
- 使用语义化的类名(如 `custom-hover`、`layout-border__left`) |
|||
- 响应式设计使用 UnoCSS 断点前缀 |
|||
|
|||
### 样式规范 |
|||
- 使用 SCSS 预处理器 |
|||
- 全局变量在 `@/styles/variables.scss` 中定义 |
|||
- 组件样式使用 scoped 或 CSS Modules |
|||
- 遵循 BEM 命名规范 |
|||
- 使用 CSS 变量(CSS Custom Properties) |
|||
|
|||
### 文件组织 |
|||
- 组件放在 `src/components/` 目录 |
|||
- 页面放在 `src/views/` 目录 |
|||
- 工具函数放在 `src/utils/` 目录 |
|||
- 类型定义放在 `src/types/` 目录 |
|||
- API 接口放在 `src/api/` 目录 |
|||
- 状态管理放在 `src/stores/` 目录 |
|||
|
|||
### 命名规范 |
|||
- 文件名使用 kebab-case |
|||
- 组件名使用 PascalCase |
|||
- 变量和函数使用 camelCase |
|||
- 常量使用 UPPER_SNAKE_CASE |
|||
- 私有属性使用下划线前缀 |
|||
|
|||
### 代码质量 |
|||
- 使用 ESLint + Prettier 进行代码格式化 |
|||
- 遵循 Vue 3 官方风格指南 |
|||
- 组件职责单一,避免过度复杂 |
|||
- 合理使用注释,复杂逻辑必须注释 |
|||
- 错误处理完善,使用 try-catch 和错误边界 |
|||
|
|||
### 性能优化 |
|||
- 合理使用 `v-memo` 和 `v-once` |
|||
- 避免在模板中使用复杂表达式 |
|||
- 使用 `shallowRef` 和 `shallowReactive` 优化大对象 |
|||
- 合理使用 `computed` 和 `watch` |
|||
- 图片懒加载和资源预加载 |
|||
|
|||
### 国际化 |
|||
- 使用 vue-i18n 进行国际化 |
|||
- 文本内容使用 `$t()` 函数 |
|||
- 语言包文件放在 `src/locales/` 目录 |
|||
|
|||
### 状态管理 |
|||
- 使用 Pinia 进行状态管理 |
|||
- Store 文件放在 `src/stores/` 目录 |
|||
- 使用 `defineStore` 定义 store |
|||
- 合理使用 `persist` 插件进行状态持久化 |
|||
|
|||
### 路由管理 |
|||
- 路由配置放在 `src/router/` 目录 |
|||
- 使用路由懒加载 |
|||
- 路由守卫统一管理 |
|||
- 动态路由权限控制 |
|||
|
|||
### API 接口 |
|||
- 使用 axios 进行 HTTP 请求 |
|||
- API 接口统一管理在 `src/api/` 目录 |
|||
- 请求和响应拦截器统一处理 |
|||
- 错误处理和重试机制 |
|||
|
|||
### 构建和部署 |
|||
- 使用 Vite 作为构建工具 |
|||
- 环境变量配置在 `.env.*` 文件中 |
|||
- 构建产物优化(代码分割、压缩等) |
|||
- 支持多环境部署(dev/test/prod) |
|||
|
|||
### 安全规范 |
|||
- 输入验证和 XSS 防护 |
|||
- CSRF 防护 |
|||
- 敏感信息不暴露在前端 |
|||
- 使用 HTTPS 协议 |
|||
|
|||
### 可访问性 |
|||
- 语义化 HTML 标签 |
|||
- ARIA 属性支持 |
|||
- 键盘导航支持 |
|||
- 屏幕阅读器友好 |
|||
|
|||
## 开发工具配置 |
|||
- 使用 VS Code 作为主要开发工具 |
|||
- 安装 Vue 3 相关插件 |
|||
- 配置 TypeScript 智能提示 |
|||
- 启用 ESLint 和 Prettier 自动格式化 |
|||
- 使用 Git 进行版本控制 |
|||
|
|||
## 提交规范 |
|||
- 使用 Conventional Commits 规范 |
|||
- 提交信息格式:`type(scope): description` |
|||
- 类型:feat, fix, docs, style, refactor, test, chore |
|||
- 每次提交前运行 lint 检查 |
|||
|
|||
## 注意事项 |
|||
- 遵循项目现有架构设计 |
|||
- 不破坏现有功能和组件复用性 |
|||
- 新功能开发前先了解相关代码结构 |
|||
- 遇到问题先查看文档和现有代码 |
|||
- 定期进行代码审查和重构 |
Loading…
Reference in new issue