09 用Vue完成一个用户管理应用

让我们通过另一个案例来进一步展示 Vue.js 的能力:创建一个简单的用户管理应用。这个应用将允许用户查看用户列表、添加新用户、编辑现有用户信息以及删除用户。

项目结构

user-management-app/
|-- public/
|   |-- index.html
|-- src/
|   |-- components/
|   |   |-- UserForm.vue
|   |   |-- UserList.vue
|   |-- services/
|   |   |-- userService.js
|   |-- App.vue
|   |-- main.js
|-- package.json

1. index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>User Management App</title>
</head>
<body>
  <div id="app"></div>
  <script src="/src/main.js"></script>
</body>
</html>

2. main.js

import Vue from 'vue';
import App from './App.vue';
import userService from './services/userService';

Vue.config.productionTip = false;

new Vue({
  el: '#app',
  render: h => h(App),
  data: {
    users: [],
    currentUser: null
  },
  created() {
    this.loadUsers();
  },
  methods: {
    loadUsers() {
      userService.getAll().then(users => {
        this.users = users;
      });
    },
    addOrUpdateUser(user) {
      this.currentUser = user;
    },
    saveUser() {
      userService.save(this.currentUser).then(() => {
        this.loadUsers();
        this.currentUser = null;
      });
    },
    removeUser(id) {
      userService.remove(id).then(() => {
        this.loadUsers();
      });
    }
  }
});

3. App.vue

<template>
  <div>
    <h1>User Management</h1>
    <UserList :users="users" @remove="removeUser" />
    <UserForm :user="currentUser" @save="saveUser" />
  </div>
</template>

<script>
import UserList from './components/UserList.vue';
import UserForm from './components/UserForm.vue';

export default {
  components: {
    UserList,
    UserForm
  },
  data() {
    return {
      users: [],
      currentUser: null
    };
  },
  methods: {
    loadUsers() {
      // Load users from service
    },
    addOrUpdateUser(user) {
      // Open form with user data
    },
    saveUser() {
      // Save user data
    },
    removeUser(id) {
      // Remove user
    }
  }
};
</script>

4. UserList.vue

<template>
  <ul>
    <li v-for="user in users" :key="user.id">
      {{ user.name }} - {{ user.email }}
      <button @click="$emit('remove', user.id)">Delete</button>
      <button @click="$emit('edit', user)">Edit</button>
    </li>
  </ul>
</template>

<script>
export default {
  props: ['users'],
  methods: {
    // Methods can be added here if needed
  }
};
</script>

5. UserForm.vue

<template>
  <form @submit.prevent="saveUser">
    <input type="text" v-model="user.name" placeholder="Name" required>
    <input type="email" v-model="user.email" placeholder="Email" required>
    <button type="submit">Save</button>
  </form>
</template>

<script>
export default {
  props: ['user'],
  methods: {
    saveUser() {
      this.$emit('save', this.user);
    }
  }
};
</script>

6. userService.js

// A mock service for user management
export default {
  getAll() {
    return Promise.resolve([
      { id: 1, name: 'John Doe', email: 'john@example.com' },
      // ... other users
    ]);
  },
  save(user) {
    // Logic to save user
    return Promise.resolve();
  },
  remove(id) {
    // Logic to remove user
    return Promise.resolve();
  }
};

这个用户管理应用的案例展示了以下 Vue.js 的核心概念和高级特性:

  • 组件通信:父子组件之间通过 props 和事件 ($emit) 进行通信。
  • 表单处理:使用 v-model 进行双向数据绑定,处理表单输入。
  • 条件和列表渲染:使用 v-for 渲染用户列表,使用 v-if 根据条件渲染元素。
  • 数据流管理:通过 Vue 实例的 data 和方法管理应用状态。
  • 服务抽象:使用服务 (userService.js) 抽象 API 调用,模拟异步数据操作。
  • 生命周期钩子:使用 created 钩子在实例创建后立即加载用户列表。

这个案例是一个更完整的应用示例,它涵盖了用户界面和数据管理的更多方面,展示了如何使用 Vue.js 构建具有数据持久化和表单交互的应用程序。

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值