使用 Vue.js 构建任务管理器

HTMLHTMLBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个项目中,你将学习如何使用Vue.js构建一个简单的任务管理器应用程序。任务管理器可让你创建、删除并跟踪日常任务,助你成为时间管理大师。

👀 预览

任务管理器应用演示

🎯 任务

在这个项目中,你将学习:

  • 如何设置Vue.js环境
  • 如何在页面加载时默认显示“无数据”
  • 如何向任务列表中添加任务
  • 如何从任务列表中删除任务
  • 如何显示任务总数
  • 如何清除整个任务列表

🏆 成果

完成此项目后,你将能够:

  • 从零开始创建一个Vue.js应用程序
  • 使用Vue.js指令和数据绑定
  • 实现基本的CRUD(创建、读取、更新、删除)功能
  • 处理用户交互并相应地更新用户界面

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL html(("HTML")) -.-> html/BasicStructureGroup(["Basic Structure"]) html(("HTML")) -.-> html/TextContentandFormattingGroup(["Text Content and Formatting"]) html(("HTML")) -.-> html/LayoutandSectioningGroup(["Layout and Sectioning"]) html(("HTML")) -.-> html/FormsandInputGroup(["Forms and Input"]) html(("HTML")) -.-> html/AdvancedElementsGroup(["Advanced Elements"]) html/BasicStructureGroup -.-> html/head_elems("Head Elements") html/TextContentandFormattingGroup -.-> html/lists_desc("Lists and Descriptions") html/LayoutandSectioningGroup -.-> html/layout("Layout Elements") html/LayoutandSectioningGroup -.-> html/doc_flow("Document Flow Understanding") html/FormsandInputGroup -.-> html/forms("Form Elements") html/AdvancedElementsGroup -.-> html/inter_elems("Interactive and Dynamic Elements") html/AdvancedElementsGroup -.-> html/templating("HTML Templating") subgraph Lab Skills html/head_elems -.-> lab-445783{{"使用 Vue.js 构建任务管理器"}} html/lists_desc -.-> lab-445783{{"使用 Vue.js 构建任务管理器"}} html/layout -.-> lab-445783{{"使用 Vue.js 构建任务管理器"}} html/doc_flow -.-> lab-445783{{"使用 Vue.js 构建任务管理器"}} html/forms -.-> lab-445783{{"使用 Vue.js 构建任务管理器"}} html/inter_elems -.-> lab-445783{{"使用 Vue.js 构建任务管理器"}} html/templating -.-> lab-445783{{"使用 Vue.js 构建任务管理器"}} end

设置项目结构

在这一步中,你将设置项目文件和结构。请按照以下步骤完成此步骤:

打开项目文件夹。目录结构如下:

├── css
│   └── style.css ## 页面样式文件
├── img
│   └── icon.png ## 页面所需的小图标
├── js
│    └── vue.js ## Vue.js 2.x 版本框架
└── index.html ## 页面布局和逻辑编码文件

点击WebIDE右下角的“Go Live”按钮来运行项目。

接下来,在虚拟机顶部打开“Web 8080”并手动刷新,你将看到页面。

图片描述

当前显示的只是一个静态布局,尚未实现特定功能。

初始显示“无数据”

在这一步中,你将在页面加载时默认显示“无数据”。

  1. index.html 文件中,在 el: "#box" 下添加来自Vue实例的 data 对象,使其包含一个 todoList 数组:
data: {
  todoList: [],
}
  1. 在HTML结构中,删除 <ul class="list"></ul> 中的所有代码。然后添加一个条件渲染,以便在 todoList 数组为空时显示“无数据”:
<ul class="list">
  <li v-if="!todoList.length">无数据</li>
  <!-- 待办事项:在此处添加任务列表项 -->
</ul>
  1. 保存 index.html 文件并刷新页面。你应该会看到显示“无数据”的消息。最终实现效果如下:
图片描述

向列表中添加任务

在这一步中,你将向任务列表中添加任务。

  1. index.html 文件中,在HTML结构里添加一个输入框和一个“确认”按钮:
<div class="input">
  <span>内容</span>
  <input type="text" v-model="search" placeholder="请输入你要做的事情" />
  <span id="add" @click="addTodo">确认</span>
</div>
  1. 在Vue实例中,添加一个 search 数据属性和一个 addTodo 方法:
data: {
  todoList: [],
  search: ""
},
methods: {
  addTodo() {
    this.todoList.push(this.search);
    this.search = "";
  },
}
  1. 保存 index.html 文件并刷新页面。你应该能够在输入框中输入文本,然后点击“确认”按钮,将新任务添加到列表中。最终实现效果如下:
图片描述

从列表中删除任务

在这一步中,你将添加从任务列表中删除任务的功能。

  1. index.html 文件中,为每个任务项添加一个“删除”图标:
<li v-if="!todoList.length">无数据</li>
<li v-if="todoList.length" v-for="(todo, index) in todoList" :key="index">
  <!-- 前面的序号 -->
  <span class="number">{{index + 1}}</span>
  <!-- 列表内容 -->
  <span>{{todo}}</span>
  <!-- 删除按钮 -->
  <span class="delete" @click="deleteTodo(index)"></span>
</li>
  1. 在Vue实例中,添加一个 deleteTodo 方法:
methods: {
  //...
  deleteTodo(index) {
    this.todoList.splice(index, 1);
  },
}
  1. 保存 index.html 文件并刷新页面。你应该能够点击“删除”图标从列表中移除任务。最终实现效果如下:
图片描述

显示任务总数

在这一步中,你将显示任务列表中的任务总数。

  1. 在HTML结构中,在任务列表底部添加一个“总数”部分:
<li v-if="todoList.length" v-for="(todo, index) in todoList" :key="index">
  <!--... -->
</li>
<li v-if="todoList.length">
  <b> 总数: {{todoList.length}} </b>
  <!--... -->
</li>
  1. 保存 index.html 文件并刷新页面。你应该会在列表底部看到显示的任务总数。

清空任务列表

在这一步中,你将添加清空整个任务列表的功能。

  1. 在Vue实例中,添加一个 clear 方法:
methods: {
  //...
  clear() {
    this.todoList = [];
    this.search = "";
  }
}
  1. 在HTML结构中,在“总数”部分添加一个“清空”按钮:
<!--... -->
<li v-if="todoList.length">
  <b> 总数: {{todoList.length}} </b>
  <b id="clear" @click="clear">清空</b>
</li>
  1. 保存 index.html 文件并刷新页面。你应该能够点击“清空”按钮从列表中移除所有任务。

恭喜!你已经使用Vue.js完成了时间管理大师项目。最终实现效果如下:

图片描述
✨ 查看解决方案并练习

总结

恭喜!你已经完成了这个项目。你可以在LabEx中练习更多实验来提升你的技能。