mirror of
https://gitee.com/java110/MicroCommunityWeb.git
synced 2026-02-23 21:36:37 +08:00
494 lines
8.8 KiB
Markdown
494 lines
8.8 KiB
Markdown
# HC物业管理系统 - 开发环境配置指南
|
||
|
||
## 🚀 环境搭建
|
||
|
||
### 1. 基础环境要求
|
||
|
||
#### Node.js 环境
|
||
```bash
|
||
# 推荐版本
|
||
Node.js >= 12.0.0
|
||
npm >= 6.0.0
|
||
|
||
# 检查版本
|
||
node --version
|
||
npm --version
|
||
```
|
||
|
||
#### 包管理器
|
||
```bash
|
||
# 使用 npm (推荐)
|
||
npm install
|
||
|
||
# 或使用 yarn
|
||
yarn install
|
||
|
||
# 或使用 pnpm
|
||
pnpm install
|
||
```
|
||
|
||
#### 开发工具
|
||
- **VS Code** (推荐)
|
||
- **WebStorm**
|
||
- **Chrome DevTools**
|
||
- **Vue DevTools**
|
||
|
||
### 2. 项目初始化
|
||
|
||
```bash
|
||
# 克隆项目
|
||
git clone [项目地址]
|
||
cd MicroCommunityWeb
|
||
|
||
# 安装依赖
|
||
npm install
|
||
|
||
# 启动开发服务器
|
||
npm run dev
|
||
```
|
||
|
||
## ⚙️ 配置文件详解
|
||
|
||
### 1. package.json
|
||
|
||
```json
|
||
{
|
||
"name": "property_web",
|
||
"version": "1.0.0",
|
||
"scripts": {
|
||
"dev": "vue-cli-service serve", // 开发环境
|
||
"build": "vue-cli-service build", // 生产构建
|
||
"lint": "vue-cli-service lint" // 代码检查
|
||
},
|
||
"dependencies": {
|
||
"vue": "^2.6.14", // Vue 2 核心
|
||
"element-ui": "^2.15.6", // UI 组件库
|
||
"vue-router": "^3.5.1", // 路由管理
|
||
"axios": "^0.21.1", // HTTP 客户端
|
||
"vue-i18n": "^8.26.7", // 国际化
|
||
"echarts": "^5.6.0" // 图表库
|
||
}
|
||
}
|
||
```
|
||
|
||
### 2. vue.config.js
|
||
|
||
```javascript
|
||
module.exports = {
|
||
devServer: {
|
||
port: 3000, // 开发服务器端口
|
||
open: true, // 自动打开浏览器
|
||
proxy: { // 代理配置
|
||
'/app': {
|
||
target: 'http://demo.homecommunity.cn/app',
|
||
changeOrigin: true,
|
||
pathRewrite: { '^/app': '' }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3. .eslintrc.js
|
||
|
||
```javascript
|
||
module.exports = {
|
||
root: true,
|
||
env: {
|
||
node: true
|
||
},
|
||
extends: [
|
||
'plugin:vue/essential',
|
||
'eslint:recommended'
|
||
],
|
||
rules: {
|
||
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
|
||
}
|
||
}
|
||
```
|
||
|
||
## 🔧 开发环境配置
|
||
|
||
### 1. VS Code 配置
|
||
|
||
#### 推荐扩展
|
||
```json
|
||
{
|
||
"recommendations": [
|
||
"Vue.volar", // Vue 2 支持
|
||
"Vue.vscode-typescript-vue-plugin",
|
||
"bradlc.vscode-tailwindcss", // Tailwind CSS
|
||
"esbenp.prettier-vscode", // 代码格式化
|
||
"ms-vscode.vscode-typescript-next",
|
||
"formulahendry.auto-rename-tag", // 自动重命名标签
|
||
"christian-kohler.path-intellisense", // 路径智能提示
|
||
"ms-vscode.vscode-json" // JSON 支持
|
||
]
|
||
}
|
||
```
|
||
|
||
#### 工作区设置
|
||
```json
|
||
{
|
||
"editor.formatOnSave": true,
|
||
"editor.tabSize": 2,
|
||
"editor.insertSpaces": true,
|
||
"files.autoSave": "afterDelay",
|
||
"emmet.includeLanguages": {
|
||
"vue-html": "html",
|
||
"vue": "html"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 2. 浏览器配置
|
||
|
||
#### Chrome DevTools
|
||
- 安装 Vue DevTools 扩展
|
||
- 启用网络面板监控
|
||
- 配置断点调试
|
||
|
||
#### 开发模式
|
||
```javascript
|
||
// 在 main.js 中
|
||
Vue.config.devtools = true
|
||
Vue.config.productionTip = false
|
||
```
|
||
|
||
### 3. 环境变量配置
|
||
|
||
#### .env 文件
|
||
```bash
|
||
# .env.development
|
||
NODE_ENV=development
|
||
VUE_APP_BASE_API=http://localhost:8008
|
||
VUE_APP_TITLE=物业管理系统(开发环境)
|
||
|
||
# .env.production
|
||
NODE_ENV=production
|
||
VUE_APP_BASE_API=https://api.example.com
|
||
VUE_APP_TITLE=物业管理系统
|
||
```
|
||
|
||
#### 使用环境变量
|
||
```javascript
|
||
// 在组件中使用
|
||
console.log(process.env.VUE_APP_BASE_API)
|
||
console.log(process.env.VUE_APP_TITLE)
|
||
```
|
||
|
||
## 🚨 常见问题解决
|
||
|
||
### 1. 依赖安装问题
|
||
|
||
#### 问题:npm install 失败
|
||
```bash
|
||
# 清除 npm 缓存
|
||
npm cache clean --force
|
||
|
||
# 删除 node_modules 和 package-lock.json
|
||
rm -rf node_modules package-lock.json
|
||
|
||
# 重新安装
|
||
npm install
|
||
|
||
# 或使用淘宝镜像
|
||
npm install --registry=https://registry.npmmirror.com
|
||
```
|
||
|
||
#### 问题:版本冲突
|
||
```bash
|
||
# 检查依赖版本
|
||
npm ls
|
||
|
||
# 强制安装
|
||
npm install --force
|
||
|
||
# 或使用 npm-check-updates 更新
|
||
npx npm-check-updates -u
|
||
npm install
|
||
```
|
||
|
||
### 2. 开发服务器问题
|
||
|
||
#### 问题:端口被占用
|
||
```bash
|
||
# 查看端口占用
|
||
netstat -ano | findstr :3000
|
||
|
||
# 杀死进程
|
||
taskkill /PID [进程ID] /F
|
||
|
||
# 或修改端口
|
||
# vue.config.js
|
||
devServer: {
|
||
port: 3001
|
||
}
|
||
```
|
||
|
||
#### 问题:代理不工作
|
||
```javascript
|
||
// 检查代理配置
|
||
devServer: {
|
||
proxy: {
|
||
'/api': {
|
||
target: 'http://localhost:8008',
|
||
changeOrigin: true,
|
||
pathRewrite: { '^/api': '' },
|
||
logLevel: 'debug' // 添加调试日志
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3. 构建问题
|
||
|
||
#### 问题:构建失败
|
||
```bash
|
||
# 清理构建缓存
|
||
npm run build -- --clean
|
||
|
||
# 检查构建日志
|
||
npm run build --verbose
|
||
|
||
# 或使用生产模式构建
|
||
NODE_ENV=production npm run build
|
||
```
|
||
|
||
#### 问题:文件过大
|
||
```javascript
|
||
// vue.config.js 配置代码分割
|
||
configureWebpack: {
|
||
optimization: {
|
||
splitChunks: {
|
||
chunks: 'all',
|
||
cacheGroups: {
|
||
vendor: {
|
||
name: 'chunk-vendors',
|
||
test: /[\\/]node_modules[\\/]/,
|
||
priority: 10,
|
||
chunks: 'initial'
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### 4. 代码质量问题
|
||
|
||
#### 问题:ESLint 错误
|
||
```bash
|
||
# 自动修复
|
||
npm run lint -- --fix
|
||
|
||
# 检查特定文件
|
||
npm run lint src/views/room/roomList.vue
|
||
|
||
# 忽略特定规则
|
||
// eslint-disable-next-line no-console
|
||
console.log('debug info')
|
||
```
|
||
|
||
#### 问题:Prettier 格式化
|
||
```bash
|
||
# 安装 Prettier
|
||
npm install --save-dev prettier
|
||
|
||
# 格式化代码
|
||
npx prettier --write "src/**/*.{js,vue,css,scss}"
|
||
```
|
||
|
||
## 🔍 调试技巧
|
||
|
||
### 1. 控制台调试
|
||
|
||
#### Vue 组件调试
|
||
```javascript
|
||
// 在组件中添加
|
||
mounted() {
|
||
console.log('组件挂载完成:', this.$data)
|
||
console.log('组件属性:', this.$props)
|
||
console.log('组件方法:', this.$options.methods)
|
||
}
|
||
```
|
||
|
||
#### 网络请求调试
|
||
```javascript
|
||
// 在 request.js 中添加
|
||
service.interceptors.request.use(
|
||
config => {
|
||
console.log('请求配置:', config)
|
||
return config
|
||
},
|
||
error => {
|
||
console.error('请求错误:', error)
|
||
return Promise.reject(error)
|
||
}
|
||
)
|
||
```
|
||
|
||
### 2. 断点调试
|
||
|
||
#### 浏览器断点
|
||
```javascript
|
||
// 在代码中添加 debugger
|
||
methods: {
|
||
handleSubmit() {
|
||
debugger; // 浏览器会在这里暂停
|
||
// 业务逻辑
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 条件断点
|
||
```javascript
|
||
// 只在特定条件下暂停
|
||
if (this.formData.id) {
|
||
debugger; // 只在编辑模式下暂停
|
||
}
|
||
```
|
||
|
||
### 3. 性能调试
|
||
|
||
#### 性能监控
|
||
```javascript
|
||
// 监控方法执行时间
|
||
methods: {
|
||
async fetchData() {
|
||
const startTime = performance.now()
|
||
|
||
try {
|
||
const data = await this.api.getData()
|
||
console.log('数据获取成功:', data)
|
||
} catch (error) {
|
||
console.error('数据获取失败:', error)
|
||
} finally {
|
||
const endTime = performance.now()
|
||
console.log(`方法执行时间: ${endTime - startTime}ms`)
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
## 📱 移动端开发
|
||
|
||
### 1. 响应式设计
|
||
|
||
#### 媒体查询
|
||
```scss
|
||
// 移动端样式
|
||
@media (max-width: 768px) {
|
||
.table-container {
|
||
overflow-x: auto;
|
||
}
|
||
|
||
.form-item {
|
||
margin-bottom: 15px;
|
||
}
|
||
}
|
||
```
|
||
|
||
#### Element UI 响应式
|
||
```vue
|
||
<template>
|
||
<el-row :gutter="20">
|
||
<el-col :xs="24" :sm="12" :md="8" :lg="6">
|
||
<!-- 响应式列 -->
|
||
</el-col>
|
||
</el-row>
|
||
</template>
|
||
```
|
||
|
||
### 2. 触摸优化
|
||
|
||
#### 触摸事件
|
||
```javascript
|
||
// 添加触摸支持
|
||
mounted() {
|
||
if ('ontouchstart' in window) {
|
||
this.isMobile = true
|
||
this.initTouchEvents()
|
||
}
|
||
},
|
||
|
||
methods: {
|
||
initTouchEvents() {
|
||
// 触摸事件处理
|
||
}
|
||
}
|
||
```
|
||
|
||
## 🚀 性能优化
|
||
|
||
### 1. 代码分割
|
||
|
||
#### 路由懒加载
|
||
```javascript
|
||
// 路由配置
|
||
{
|
||
path: '/room/list',
|
||
component: () => import('@/views/room/roomList.vue')
|
||
}
|
||
```
|
||
|
||
#### 组件懒加载
|
||
```javascript
|
||
// 组件注册
|
||
components: {
|
||
RoomTree: () => import('@/components/room/roomTree.vue')
|
||
}
|
||
```
|
||
|
||
### 2. 缓存策略
|
||
|
||
#### 数据缓存
|
||
```javascript
|
||
// 使用 localStorage 缓存
|
||
methods: {
|
||
getCachedData(key) {
|
||
const cached = localStorage.getItem(key)
|
||
if (cached) {
|
||
return JSON.parse(cached)
|
||
}
|
||
return null
|
||
},
|
||
|
||
setCachedData(key, data) {
|
||
localStorage.setItem(key, JSON.stringify(data))
|
||
}
|
||
}
|
||
```
|
||
|
||
#### 组件缓存
|
||
```vue
|
||
<template>
|
||
<keep-alive>
|
||
<router-view />
|
||
</keep-alive>
|
||
</template>
|
||
```
|
||
|
||
## 📚 学习资源
|
||
|
||
### 1. 官方文档
|
||
- [Vue 2 官方文档](https://v2.vuejs.org/)
|
||
- [Element UI 文档](https://element.eleme.cn/)
|
||
- [Vue Router 文档](https://router.vuejs.org/)
|
||
|
||
### 2. 社区资源
|
||
- [Vue.js 社区](https://vuejs.org/community/)
|
||
- [Element UI 社区](https://github.com/ElemeFE/element)
|
||
- [掘金 Vue 专栏](https://juejin.cn/tag/Vue.js)
|
||
|
||
### 3. 工具推荐
|
||
- [Vue DevTools](https://github.com/vuejs/devtools)
|
||
- [Vetur](https://marketplace.visualstudio.com/items?itemName=octref.vetur)
|
||
- [Vue Snippets](https://marketplace.visualstudio.com/items?itemName=sdras.vue-vscode-snippets)
|
||
|
||
---
|
||
|
||
**配置完成后,你就可以开始愉快的开发之旅了!** 🎉
|
||
|
||
如果遇到其他问题,请查看项目文档或联系团队成员。 |