【愚公系列】《循序渐进Vue.js 3.x前端开发实践》008-Vue 模板与应用:实现待办任务列表应用

举报
愚公搬代码 发表于 2024/11/30 23:48:55 2024/11/30
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。博客内容.NET、...
标题 详情
作者简介 愚公搬代码
头衔 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
近期荣誉 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
博客内容 .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
欢迎 👍点赞、✍评论、⭐收藏

🚀前言

在日常生活中,待办任务列表是我们管理时间和提升效率的重要工具。而在前端开发中,实现这样一个功能简单而又有趣的应用,正是学习和熟悉Vue.js的绝佳机会。

Vue.js以其灵活的组件化设计和直观的数据绑定,使得构建动态应用变得轻而易举。在本篇文章中,我们将带您逐步实现一个待办任务列表应用,深入探讨Vue模板的使用和应用场景。通过实例化的讲解,您将学习到如何创建、修改和删除任务,并掌握如何利用Vue的响应式特性来提升用户体验。

无论您是Vue的新手,还是希望巩固基础的开发者,这篇文章都将为您提供实用的技巧和清晰的指导。让我们一同动手实践,打造属于自己的待办任务列表应用吧!

🚀一、实现待办任务列表应用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>待办任务列表</title>
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
    <div id="Application">
        <!-- 输入框元素,用来新建待办任务 -->
        <form @submit.prevent="addTask">
            <span>新建任务</span>
            <input 
            v-model="taskText"
            placeholder="请输入任务..."
            />
            <button>添加</button>
        </form>
        <!-- 有序列表,使用v-for来构建 -->
        <ol>
            <li v-for="(item, index) in todos">
                {{item}}
                <button @click="remove(index)">
                    删除任务
                </button>
                <hr/>
            </li>
        </ol>
    </div>
    <script>
        const {createApp, ref} = Vue
        const config = {
            setup() {
                const todos = ref([])
                const taskText = ref("")
                const addTask = () => {
                    if (taskText.value.length == 0) {
                        alert("请输入任务")
                        return
                    }
                    todos.value.push(taskText.value)
                    taskText.value = ""
                }
                const remove = (index) => {
                    todos.value.splice(index, 1)
                }
                return {todos, taskText, addTask, remove}
            }
        }
        createApp(config).mount("#Application") 
    </script>
</body>
</html>

这个代码是一个使用 Vue 3 创建的简单待办任务列表应用,用户可以通过输入框添加任务,并可以删除已添加的任务。

🔎1.HTML 结构

  • <!DOCTYPE html>:声明文档类型为 HTML5。
  • <html lang="en">...</html>:指定网页的语言为英语。
  • <meta charset="UTF-8">:声明文档使用的字符编码为 UTF-8。
  • <meta http-equiv="X-UA-Compatible" content="IE=edge">:用于确保在 Internet Explorer 浏览器中,以最新的渲染模式渲染页面。
  • <meta name="viewport" content="width=device-width, initial-scale=1.0">:设置视口,确保在移动设备上有更好的显示效果。
  • <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>:引入 Vue 3 的全局脚本。

🔎2.Vue 应用部分

🦋2.1 #Application div

这个 div 是 Vue 应用的根元素,Vue 实例会挂载在这个 id="Application" 的元素上。

🦋2.2 表单部分

<form @submit.prevent="addTask">
    <span>新建任务</span>
    <input v-model="taskText" placeholder="请输入任务..." />
    <button>添加</button>
</form>
  • 表单中有一个输入框和一个按钮,用于输入和添加任务。
  • v-model="taskText":将输入框的值与 taskText 绑定,输入的值会被实时保存到 taskText 中。
  • @submit.prevent="addTask":当表单提交时,调用 addTask 方法,并使用 .prevent 修饰符阻止页面刷新。

🦋2.3 任务列表

<ol>
    <li v-for="(item, index) in todos">
        {{item}}
        <button @click="remove(index)">删除任务</button>
        <hr/>
    </li>
</ol>
  • v-for="(item, index) in todos":遍历 todos 数组,每一项生成一个 li 列表项。
  • {{item}}:显示当前任务的内容。
  • @click="remove(index)":点击“删除任务”按钮时,调用 remove(index) 方法,删除当前任务。

🔎3.Vue 应用的 JavaScript 逻辑

const {createApp, ref} = Vue
  • 使用 Vue 3 的 createApp 来创建应用,ref 用于声明响应式数据。

🦋3.1 响应式数据

const todos = ref([])
const taskText = ref("")
  • todos:一个空数组,存储待办任务。
  • taskText:用于保存用户输入的任务文本。

🦋3.2 方法

const addTask = () => {
    if (taskText.value.length == 0) {
        alert("请输入任务")
        return
    }
    todos.value.push(taskText.value)
    taskText.value = ""
}
  • addTask:添加任务的方法。
    • 检查 taskText 的长度是否为 0,如果为空,则弹出提示“请输入任务”。
    • 如果不为空,则将 taskText 的内容添加到 todos 数组中,并将 taskText 清空。
const remove = (index) => {
    todos.value.splice(index, 1)
}
  • remove:删除任务的方法。
    • 使用 splice(index, 1) 删除 todos 数组中对应 index 的任务。

🦋3.3 创建 Vue 实例

createApp(config).mount("#Application")

通过 createApp(config) 创建 Vue 应用,并将其挂载到 #Application DOM 元素上。

🔎4.总结

在这里插入图片描述

  • 用户可以通过输入框添加任务,任务将被存储在 todos 数组中。
  • 用户还可以点击按钮删除相应的任务。
  • 整个应用是基于 Vue 3 的响应式系统构建的,通过 v-model 实现双向绑定,通过事件处理器如 @submit@click 实现交互。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。