返回

从零开始打造 Vue3.x 任务清单实战教程

前端

掌控 Vue3.x 全家桶:构建你的任务清单管理系统

在现代前端开发的世界中,Vue.js 3.x 凭借其强大而轻量的特性,已经成为构建交互式 Web 应用程序的热门选择。本文将带你踏上使用 Vue3.x 全家桶构建一个功能齐全的任务清单管理系统的旅程,涵盖从项目初始化到测试和部署的各个方面。

1. Vue3.x 项目初始化

  • 安装 Node.js 和 Vue CLI:遵循官方文档中的步骤。
  • 创建新项目:vue create vue-task-list
  • 进入项目目录:cd vue-task-list
  • 安装项目依赖:npm install

2. Vuex 状态管理

Vuex 是 Vue.js 中用于集中化状态管理的工具。

  • 安装 Vuex:npm install vuex
  • 创建 store 目录,在其中创建 index.js 文件。
  • 定义 state(存储数据)、getters(获取派生数据)、mutations(修改 state)和 actions(处理异步操作)。
// store/index.js
import { createStore } from 'vuex'

export default createStore({
  state: {
    tasks: []
  },
  getters: {
    getTaskCount(state) {
      return state.tasks.length
    }
  },
  mutations: {
    addTask(state, task) {
      state.tasks.push(task)
    },
    removeTask(state, task) {
      const index = state.tasks.indexOf(task)
      if (index !== -1) {
        state.tasks.splice(index, 1)
      }
    }
  },
  actions: {
    addTaskAsync({ commit }, task) {
      setTimeout(() => {
        commit('addTask', task)
      }, 1000)
    }
  }
})

3. 组件开发

  • 创建 src/components 目录。
  • 创建 TaskList.vue 组件,用于显示任务列表。
  • 创建 TaskForm.vue 组件,用于添加和编辑任务。
// components/TaskList.vue
<template>
  <ul>
    <li v-for="task in tasks" :key="task.id">{{ task.name }}</li>
  </ul>
</template>

export default {
  props: ['tasks']
}
// components/TaskForm.vue
<template>
  <form @submit.prevent="addTask">
    <input v-model="newTaskName" />
    <button type="submit">Add Task</button>
  </form>
</template>

export default {
  data() {
    return {
      newTaskName: ''
    }
  },
  methods: {
    addTask() {
      this.$emit('addTask', { name: this.newTaskName })
      this.newTaskName = ''
    }
  }
}

4. 路由配置

Vue Router 用于管理应用程序中的导航。

  • 安装 Vue Router:npm install vue-router
  • 创建 router 目录,在其中创建 index.js 文件。
  • 定义路由规则并注册到 Router 实例上。
// router/index.js
import { createRouter, createWebHistory } from 'vue-router'

export default createRouter({
  history: createWebHistory(),
  routes: [
    {
      path: '/',
      component: Home
    }
  ]
})

5. 任务清单页面

  • 创建 src/views 目录。
  • 创建 Home.vue 组件,显示任务清单页面。
// views/Home.vue
<template>
  <div>
    <task-list :tasks="tasks"></task-list>
    <task-form @addTask="addTask"></task-form>
  </div>
</template>

export default {
  data() {
    return {
      tasks: []
    }
  },
  created() {
    // 获取任务列表
    this.getTasks()
  },
  methods: {
    addTask(task) {
      this.tasks.push(task)
    },
    getTasks() {
      // 使用 Vuex 的 getters 获取任务列表
      this.tasks = this.$store.getters.getAllTasks
    }
  }
}

6. 样式和图标

  • 安装 Font Awesome 图标库:npm install @fortawesome/fontawesome-free
  • 安装样式库:npm install @fortawesome/vue-fontawesome
  • 在 main.js 中导入样式库和图标库。
  • 在组件中使用图标和样式。

7. 测试和部署

  • 安装测试框架:npm install @vue/test-utils
  • 编写单元测试:npm run test:unit
  • 构建项目:npm run build
  • 部署项目:使用 GitHub Pages、Netlify 或 Vercel 等服务。

8. 常见问题解答

1. 如何使用 Vuex 状态管理?
Vuex 允许你集中管理应用程序状态,使用 getters、mutations 和 actions 来操作和修改状态。

2. 路由如何工作?
Vue Router 通过管理组件之间的导航来实现应用程序的路由功能,它定义了路由规则和视图组件之间的映射。

3. 如何添加和删除任务?
使用 TaskForm 组件添加任务,TaskForm 组件会发出一个事件,Home 组件会监听该事件并调用 Vuex 的 mutation 来更新状态。要删除任务,只需在 TaskList 组件中调用 Vuex 的 mutation。

4. 如何使用图标和样式?
安装 Font Awesome 图标库后,你可以在组件中使用 font-awesome-icon 组件来渲染图标。还可以在 main.js 中导入样式库来使用样式。

5. 如何部署 Vue3.x 项目?
可以使用 GitHub Pages、Netlify 或 Vercel 等服务轻松地部署 Vue3.x 项目。

结语

恭喜你!你现在已经掌握了 Vue3.x 全家桶,并构建了一个功能齐全的任务清单管理系统。通过这篇文章,你已经了解了 Vuex 状态管理、组件开发、路由配置、样式和图标集成,以及测试和部署的过程。

把握好这些工具,你将能够创建更强大、更具交互性的 Web 应用程序。