【Vue3学习笔记1】一个清单应用帮你入门Vue.js

news2025/1/19 19:26:45

Vue 目前已经是国内最流⾏的前端框架之⼀,Vue 3 带来的诸多优化更是让前端圈迎来了新的潮流,比如:

基于 Proxy 的全新响应式实现;
Composition API + <script setup> 组织代码的更优方式;
更有料的 TypeScript 支持;
新的 VDOM diff 逻辑;
更小的体积 + 更高的性能;
生态中还多了 Vite 这个新⼀代工程化工具。
可以说,Vue 3 很好地拥抱了未来,并且在新手友好度上做到了极致。

本文涉及知识点:

  1. data()声明数据,v-model同步数据,{{title}}显示数据
  2. 渲染列表数据,用 v-for
  3. 执行的函数,放到 methods 配置
  4. @标记用户交互,监听到交互后,执行methods中配置的函数
  5. data()声明的数据, 可以是基本类型,也可以是对象–>
  6. 冒号":" 开头的属性是用来传递数据的,根据 todo.done 来决定是否有 done 这个 class
  7. 需要对数据进行计算的话,要配置一个computed属性 ,具有缓存能力,可以提升性能
  8. 计算属性要修改,这时候 computed 的配置,要变成一个对象,分别实现 get 和 set 函数
  9. v-if对元素进行条件渲染,v-else配合

下面代码可以保存成html,通过浏览器打开查看效果。

<!DOCTYPE html>
<html lang="en">
<body>
    <div id="app">  
        <h2>{{title}}</h2>  
        <input type="text" v-model="title" @keydown.enter="addToDo">
        <ul v-if="todos.length">
            <li v-for="todo in todos">
                <input type="checkbox" v-model="todo.done">
                <span :class="{done:todo.done}">{{todo.title}}</span>
            </li>
        </ul>
        <div v-else>
            暂无数据
        </div>
        <!-- 以下部分要放到id为app的div里面 -->
        <div>
            全选<input type="checkbox" v-model="allDone">
            <span>{{active}} / {{all}}</span>
        </div>
        <button v-if="active<all" @click="clear">清理</button>
    </div>
    <script type="text/javascript" src="/Users/chunming.liu/Downloads/vue.global.js"></script>
   <script>
        const App = {  
            data() {    
                return {      
                    title: "",
                    todos: [
                        {title:"吃饭",done:false},
                        {title:"睡觉",done:false}
                    ]
                }  
            },
            computed: {
                active() {
                    return this.todos.filter(v => !v.done).length
                },
                all() {
                    return this.todos.length
                },
                allDone:{
                    get: function(){
                        return this.active === 0
                    },
                    set: function(val){
                        this.todos.forEach(todo => {
                            todo.done = val
                        });
                    }
                }
            },
            methods:{
                addToDo(){
                    this.todos.push({
                        title: this.title,
                        done: false})
                    this.title = ""
                },
                clear(){
                    this.todos = this.todos.filter(v=>!v.done) //只过滤未完成的
                }
            }
        }
        Vue.createApp(App).mount("#app") 
    </script>
    <style>  
        .done{    
        color:gray;    
        text-decoration: line-through;  
        }
    </style>
</body>
</html>

参考资料
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/469482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于C++的线程操作 | 双检锁与智能指针接口使用

文章目录 thread对象的构造this_threadconstructmutexref 用lambda表达式构造thread线程串行比并行快&#xff1f;CAS&#xff08;atomic类&#xff09;timed_mutexlock_guard,unique_guard&#xff0c;手动控制生命周期,为什么要使用条件变量不用条件变量带来的问题&#xff1…

【python基础语法三】列表,元组,集合,字典相关操作

列表的相关操作 1. 列表的拼接 (同元组) lst1 ["hello","world"] lst2 ["hello","python"] res lst1 lst2 print(res) # ["hello","world","hello","python"]2. 列表的重复 (同元组) …

二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)

文章目录 二、搭建MyBatis采用xml方式&#xff0c;验证CRUD&#xff08;增删改查操作&#xff09;2.1 开发环境2.2 创建maven工程2.3 创建User实体2.4 创建MyBatis的核心配置文件2.5 创建mapper接口2.6 创建MyBatis的映射文件2.7 通过junit测试功能 二、搭建MyBatis采用xml方式…

三、MyBatis核心配置文件详解

文章目录 三、MyBatis核心配置文件详解 三、MyBatis核心配置文件详解 application.properties server.port8018 jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://192.168.31.20:3306/litemall jdbc.usernameroot jdbc.password123456详情请看mybatis-config.xml配置…

Linux Ansible-Jinjia2模板

目录 jinja2模板语法 部署jinja2模板 jinja2逻辑表达式 jinja2是基于Python书写的模块引擎&#xff0c;ansible通常会使用jinja2模块结合template模块来修改被管理主机的配置文件 一般使用ansible的事实变量或魔法变量编写一个jinja2模板文件&#xff0c;然后使用template模…

Navicat安装教程和评测

Navicat是一款功能强大的数据库管理软件&#xff0c;拥有丰富的功能和易于使用的界面&#xff0c;因此价格相对较高。此外&#xff0c;Navicat还提供了多种数据库类型的支持&#xff0c;包括MySQL、Oracle、PostgreSQL等&#xff0c;每种数据库类型都需要花费开发人员大量的时间…

Qt QWidget 独立窗口抗锯齿圆角的一个实现方案(支持子控件)

QWidget独立窗口抗锯齿圆角窗口的一个实现方案 由于 QWidget::setMask 接口设置圆角不支持抗锯齿&#xff0c;所以通常会使用透明窗口加圆角背景&#xff0c;但圆角背景不能满足对子控件的裁剪&#xff0c;子控件与圆角区域重叠的部分还是能显示出来。当然对于大多数窗口&…

使用Git和GitHub完成团队项目开发

前提 拥有自己的GitHub账号项目组组长已经创建好了 一个远程仓库能够科学上网安装了Git软件 基础步骤 该内容分为两个部分&#xff0c;分别为团队协作者&#xff08;项目成员&#xff09;和团队组织者&#xff08;项目组长&#xff09;&#xff0c;我们首先来介绍作为项目成员…

BitoAI:新型AI编码助手,支持GPT-4

在之前的文章中&#xff0c;小编带大家分享体验过OpenAI的Cursor代码生成器、Codeium编程助手、亚马逊的CodeWhisperer。大家也都非常踊跃的在评论区分享了体验的感受及遇到的问题。 而最近又出现了一款新型编程助手BitoAI。今天的主要内容就是给大家介绍它&#xff0c;号称 I…

栈的顺序存储结构与操作 题目编号:457

题目描述 请你定义一个顺序栈&#xff0c;可以对顺序栈进行“将某个元素入栈”、“弹出栈顶元素”、“取栈顶元素&#xff08;不删除&#xff09;”、“判断栈是否为空”、“清空栈”等操作。键盘输入一些命令&#xff0c;可以执行上述操作。本题中&#xff0c;顺序栈元素为字…

宝塔面板主题模板修改详细使用教程

宝塔面板主题模板修改详细使用教程 宝塔面板目前没有完善的主题、语言包功能&#xff0c;因此资源均采用覆盖的方式使用。 使用前请确保面板版本与资源包版本一致&#xff0c;新版本没有资源可以使用 降级版本 的方式使用。 原创资源均采用只修改少量静态文件的方式&#xff0c…

Portainer自定义设置默认的用户名密码

文章目录 Portainer介绍用户密码问题解决一半未完待续 Portainer介绍 Portainer是一款轻量级的Docker管理Web界面&#xff0c;它可以让用户方便地管理和部署Docker容器&#xff0c;管理Docker Swarm集群等用户可以通过Portainer轻松完成基于Docker的应用部署、镜像管理、容器监…

三台Windows服务器搭建RabbitMq集群及镜像队列

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、RabbitMq是什么&#xff1f;二、RabbitMq集群搭建步骤1.环境说明2.RabbitMQ 安装3.RabbitMQ 集群搭建4.RabbitMQ镜像队列 总结 前言 消息中间件-RabbitMq集…

Ubuntu 23.04 安装 Harbor

Ubuntu 23.04 安装 Harbor 安装 Docker CE配置 tls 证书配置 docker 信任自签名证书下载和安装 Harbor设置 Harbor 开机启动验证 安装 Docker CE sudo apt-get remove docker docker-engine docker.io containerd runcsudo apt-get update -y sudo apt-get install -y \ca-cer…

shell脚本----循环语句for

文章目录 一、echo命令二、for循环三、continue和break 一、echo命令 常见转义字符&#xff1a; 转义符号含义-n表示不换行输出\e输出转义字符&#xff0c;将转义后的内容输出到屏幕上\b转义后相当于按退格键&#xff0c;但前提是b后面存在字符: b表示删除前一个字符&#xf…

【Spring篇】IOC/DI配置管理第三方bean

&#x1f353;系列专栏:Spring系列专栏 &#x1f349;个人主页:个人主页 目录 一、案例:数据源对象管理 1.环境准备 2.实现Druid管理 3.实现C3P0管理 二、加载properties文件 1.第三方bean属性优化 2.读取单个属性 3.注意事项 三、核心容器 1.环境准备 2.容器 1.容器的创建…

linux|进程间通信如何加锁

进程间通信有一种[共享内存]方式&#xff0c;大家有没有想过&#xff0c;这种通信方式中如何解决数据竞争问题&#xff1f;我们可能自然而然的就会想到用锁。但我们平时使用的锁都是用于解决线程间数据竞争问题&#xff0c;貌似没有看到过它用在进程中&#xff0c;那怎么办&…

【Linux】进程概念与fork初识——if与else竟然能够同时执行?!

文章目录 &#x1f490;专栏导读&#x1f490;文章导读&#x1f337;进程是什么&#x1f337;进程的描述——PCB&#x1f337;进程的组织&#x1f337;如何查看进程&#x1f337;如何通过系统调用查看进程PID&#x1f337;通过系统调用创建进程&#x1f33a;认识fork&#x1f3…

TuGraph 开源数据库体验

TuGraph 开源数据库体验 文章目录 TuGraph 开源数据库体验1. 简单介绍2. 可视化界面体验&#xff1a;查询界面&#xff1a;数据建模&#xff1a;数据导入&#xff1a; 3. 体验心得&#xff1a; 1. 简单介绍 TuGraph 是蚂蚁集团自主研发的大规模图计算系统&#xff0c;提供图数…