Vue.js 中的简单待办事项列表应用程序分步指南
本指南将引导您使用 Vue.js 3 构建基本的待办事项列表应用程序。在本教程结束时,您将了解如何处理数据绑定、事件Vue.js 中的处理和动态渲染。
先决条件
HTML、CSS 和 JavaScript 的基本知识。
Node.js 和 npm 安装在您的计算机上。
Vue CLI 已安装。如果没有,您可以通过运行 npm install -g @vue/cli 来安装它。
第 1 步:设置项目
创建新的 Vue.js 项目:打开终端并运行以下命令来创建新的 Vue.js 3 项目:
vue create todo-app
导航到项目目录:
cd todo-app
运行开发服务器:启动Vue开发服务器:
npm run serve
这将在浏览器中打开默认的 Vue.js 入门模板,地址为 http://localhost:8080。
第 2 步:构建应用程序
清理默认模板:打开 src/App.vue 并删除默认模板、脚本和样式内容。将它们替换为以下代码:
<template> <div id="app"> <h1>Vue.js To-Do List</h1> <input v-model="newTask" placeholder="Add a new task" @keyup.enter="addTask" /> <button @click="addTask">Add Task</button> <ul> <li v-for="(task, index) in tasks" :key="index"> <input type="checkbox" v-model="task.completed" /> <span :class="{ 'completed-task': task.completed }">{{ task.text }}</span> <button @click="removeTask(index)">Delete</button> </li> </ul> </div> </template> <script> export default { name: 'App', data() { return { newTask: '', tasks: [] }; }, methods: { addTask() { if (this.newTask.trim() !== '') { this.tasks.push({ text: this.newTask, completed: false }); this.newTask = ''; } }, removeTask(index) { this.tasks.splice(index, 1); } } }; </script> <style> #app { font-family: Avenir, Helvetica, Arial, sans-serif; text-align: center; color: #2c3e50; margin-top: 60px; } .completed-task { text-decoration: line-through; color: grey; } input { margin-bottom: 10px; padding: 5px; } button { margin-left: 5px; padding: 5px; } ul { list-style-type: none; padding: 0; } li { display: flex; align-items: center; justify-content: center; margin: 5px 0; } </style>
第 3 步:理解代码
模板部分:
:该输入字段使用 v-model 绑定到 newTask 数据属性,从而实现双向数据绑定。 @keyup.enter="addTask" 监听 Enter 键来触发 addTask 方法。
添加任务按钮>
:该按钮点击时会触发addTask方法。
- :这个无序列表使用 v-for 循环遍历任务数组并渲染每个任务。 :key="index" 是每个项目的唯一标识符,Vue 需要它来有效地跟踪列表项目。
:切换任务完成状态的复选框。
{{ task.text }}; :span 元素显示任务文本。 :class 指令根据任务是否完成有条件地应用已完成任务 CSS 类。
<按钮@click="removeTask(index)">删除 :从列表中删除任务的按钮
脚本部分:
data() 方法:
newTask:一个字符串,保存要添加的新任务的值。
任务:保存所有任务的数组,每个任务表示为具有文本和已完成属性的对象。
方法对象:
addTask():此方法将 newTask 添加到任务数组中,然后清除 newTask 输入字段。
removeTask(index):此方法根据索引从任务数组中删除任务。
风格部分:
用于设置待办事项列表样式的基本 CSS,并使用 .completed-task 类来删除已完成的任务。
将任务保留在本地存储中:您可以通过将任务保存在浏览器的本地存储中来增强应用程序,以便它们在页面重新加载时保留下来。
mounted() { this.tasks = JSON.parse(localStorage.getItem('tasks')) || []; }, methods: { addTask() { if (this.newTask.trim() !== '') { this.tasks.push({ text: this.newTask, completed: false }); this.newTask = ''; localStorage.setItem('tasks', JSON.stringify(this.tasks)); } }, removeTask(index) { this.tasks.splice(index, 1); localStorage.setItem('tasks', JSON.stringify(this.tasks)); } }
编辑任务:
<template> <div id="app"> <h1>Vue.js To-Do List</h1> <input v-model="newTask" placeholder="Add a new task" @keyup.enter="addTask" /> <button @click="addTask">Add Task</button> <ul> <li v-for="(task, index) in tasks" :key="index"> <input type="checkbox" v-model="task.completed" /> <span v-if="!task.isEditing" :class="{ 'completed-task': task.completed }">{{ task.text }}</span> <input v-else v-model="task.text" @keyup.enter="saveTask(task)" @blur="saveTask(task)" /> <button v-if="!task.isEditing" @click="editTask(task)">Edit</button> <button @click="removeTask(index)">Delete</button> </li> </ul> </div> </template> <script> export default { name: 'App', data() { return { newTask: '', tasks: [] }; }, methods: { addTask() { if (this.newTask.trim() !== '') { this.tasks.push({ text: this.newTask, completed: false, isEditing: false }); this.newTask = ''; } }, removeTask(index) { this.tasks.splice(index, 1); }, editTask(task) { task.isEditing = true; }, saveTask(task) { task.isEditing = false; } } }; </script> <style> #app { font-family: Avenir, Helvetica, Arial, sans-serif; text-align: center; color: #2c3e50; margin-top: 60px; } .completed-task { text-decoration: line-through; color: grey; } input { margin-bottom: 10px; padding: 5px; } button { margin-left: 5px; padding: 5px; } ul { list-style-type: none; padding: 0; } li { display: flex; align-items: center; justify-content: center; margin: 5px 0; } </style>
安装真棒字体
首先,在您的项目中包含 Font Awesome。如果您使用 CDN,则可以将此链接添加到 HTML 文件中或直接添加到 index.html 的
部分中。
** 使用图标更新模板
**
现在,让我们添加一些 Font Awesome 图标,用于编辑、删除和完成任务。
<template> <div id="app" class="container"> <h1>Vue.js To-Do List</h1> <div class="input-container"> <input v-model="newTask" placeholder="Add a new task" @keyup.enter="addTask" /> <button @click="addTask" class="btn btn-add"><i class="fas fa-plus"></i></button> </div> <ul> <li v-for="(task, index) in tasks" :key="index" :class="{ completed: task.completed }"> <input type="checkbox" v-model="task.completed" id="checkbox" /> <span v-if="!task.isEditing" class="task-text">{{ task.text }}</span> <input v-else v-model="task.text" @keyup.enter="saveTask(task)" @blur="saveTask(task)" class="edit-input" /> <div class="actions"> <button v-if="!task.isEditing" @click="editTask(task)" class="btn btn-edit"><i class="fas fa-edit"></i></button> <button @click="removeTask(index)" class="btn btn-delete"><i class="fas fa-trash-alt"></i></button> </div> </li> </ul> </div> </template> <script> export default { name: 'App', data() { return { newTask: '', tasks: [] }; }, methods: { addTask() { if (this.newTask.trim() !== '') { this.tasks.push({ text: this.newTask, completed: false, isEditing: false }); this.newTask = ''; } }, removeTask(index) { this.tasks.splice(index, 1); }, editTask(task) { task.isEditing = true; }, saveTask(task) { task.isEditing = false; } } }; </script> <style> body { background-color: #f4f7f6; font-family: 'Roboto', sans-serif; margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; height: 100vh; } .container { background-color: #ffffff; border-radius: 10px; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2); padding: 20px; max-width: 400px; width: 100%; } h1 { color: #333; margin-bottom: 20px; } .input-container { display: flex; margin-bottom: 20px; } input { flex: 1; padding: 10px; border: 1px solid #ccc; border-radius: 5px; font-size: 16px; } .btn { background-color: #4caf50; color: white; border: none; padding: 10px; border-radius: 5px; cursor: pointer; margin-left: 5px; transition: background-color 0.3s; } .btn:hover { background-color: #45a049; } .btn-add { background-color: #28a745; } .btn-edit { background-color: #ffc107; } .btn-delete { background-color: #dc3545; } ul { list-style-type: none; padding: 0; } li { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; padding: 10px; border-radius: 5px; background-color: #f8f9fa; } li.completed .task-text { text-decoration: line-through; color: #888; } li:hover { background-color: #e9ecef; } .actions { display: flex; } .actions .btn { margin-left: 5px; } .edit-input { flex: 1; margin-right: 10px; } </style>
以上是Vue.js 中的简单待办事项列表应用程序分步指南的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

不同JavaScript引擎在解析和执行JavaScript代码时,效果会有所不同,因为每个引擎的实现原理和优化策略各有差异。1.词法分析:将源码转换为词法单元。2.语法分析:生成抽象语法树。3.优化和编译:通过JIT编译器生成机器码。4.执行:运行机器码。V8引擎通过即时编译和隐藏类优化,SpiderMonkey使用类型推断系统,导致在相同代码上的性能表现不同。

JavaScript是现代Web开发的核心语言,因其多样性和灵活性而广泛应用。1)前端开发:通过DOM操作和现代框架(如React、Vue.js、Angular)构建动态网页和单页面应用。2)服务器端开发:Node.js利用非阻塞I/O模型处理高并发和实时应用。3)移动和桌面应用开发:通过ReactNative和Electron实现跨平台开发,提高开发效率。

本文展示了与许可证确保的后端的前端集成,并使用Next.js构建功能性Edtech SaaS应用程序。 前端获取用户权限以控制UI的可见性并确保API要求遵守角色库

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

从C/C 转向JavaScript需要适应动态类型、垃圾回收和异步编程等特点。1)C/C 是静态类型语言,需手动管理内存,而JavaScript是动态类型,垃圾回收自动处理。2)C/C 需编译成机器码,JavaScript则为解释型语言。3)JavaScript引入闭包、原型链和Promise等概念,增强了灵活性和异步编程能力。

我使用您的日常技术工具构建了功能性的多租户SaaS应用程序(一个Edtech应用程序),您可以做同样的事情。 首先,什么是多租户SaaS应用程序? 多租户SaaS应用程序可让您从唱歌中为多个客户提供服务
