引言
随着前端技术的发展,Vue.js 已经成为了构建用户界面的首选框架之一。在这个教程中,我们将通过一个实际的部门管理系统项目,帮助初学者和有经验的前端开发者轻松上手 Vue.js。我们将从项目搭建、功能实现到代码优化,一步步解析如何使用 Vue.js 开发一个完整的部门管理系统。
1. 项目搭建
1.1 环境准备
首先,确保你已经安装了 Node.js 和 npm。然后,通过以下命令创建一个新的 Vue.js 项目:
vue create dept-management-system
cd dept-management-system
1.2 安装依赖
项目创建后,我们需要安装一些必要的依赖,如 Vue Router 和 Vuex:
npm install vue-router vuex axios
1.3 目录结构
以下是项目的基本目录结构:
dept-management-system/
├── src/
│ ├── assets/
│ ├── components/
│ │ ├── DeptList.vue
│ │ ├── DeptForm.vue
│ │ └── ...
│ ├── router/
│ │ └── index.js
│ ├── store/
│ │ └── index.js
│ ├── App.vue
│ ├── main.js
│ └── ...
2. 功能实现
2.1 路由配置
在 src/router/index.js
中配置路由:
import Vue from 'vue';
import Router from 'vue-router';
import DeptList from '@/components/DeptList';
import DeptForm from '@/components/DeptForm';
Vue.use(Router);
export default new Router({
routes: [
{
path: '/',
name: 'dept-list',
component: DeptList
},
{
path: '/add',
name: 'dept-add',
component: DeptForm
},
{
path: '/edit/:id',
name: 'dept-edit',
component: DeptForm
}
]
});
2.2 Vuex 状态管理
在 src/store/index.js
中配置 Vuex:
import Vue from 'vue';
import Vuex from 'vuex';
import deptList from '@/services/dept';
Vue.use(Vuex);
export default new Vuex.Store({
state: {
depts: []
},
mutations: {
setDepts(state, depts) {
state.depts = depts;
}
},
actions: {
fetchDepts({ commit }) {
deptList.getDepts().then(depts => {
commit('setDepts', depts);
});
}
}
});
2.3 组件开发
2.3.1 DeptList.vue
在 src/components/DeptList.vue
中实现部门列表组件:
<template>
<div>
<h1>部门列表</h1>
<table>
<thead>
<tr>
<th>部门名称</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="dept in depts" :key="dept.id">
<td>{{ dept.name }}</td>
<td>
<router-link :to="{ name: 'dept-edit', params: { id: dept.id } }">编辑</router-link>
<button @click="deleteDept(dept.id)">删除</button>
</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default {
data() {
return {
depts: []
};
},
created() {
this.fetchDepts();
},
methods: {
fetchDepts() {
this.$store.dispatch('fetchDepts');
},
deleteDept(id) {
// 实现删除部门逻辑
}
}
};
</script>
2.3.2 DeptForm.vue
在 src/components/DeptForm.vue
中实现部门表单组件:
<template>
<div>
<h1>部门表单</h1>
<form @submit.prevent="submitForm">
<input type="text" v-model="dept.name" placeholder="部门名称" />
<button type="submit">保存</button>
</form>
</div>
</template>
<script>
export default {
data() {
return {
dept: {
name: ''
}
};
},
methods: {
submitForm() {
// 实现表单提交逻辑
}
}
};
</script>
2.4 API 接口
在 `src/services/de