VUE练习

使用new Vue()创建Vue实例,传入配置对象(el data)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="vue.js" type="text/javascript" charset="UTF-8"></script>
</head>

<body>
    <div id="root">
        {{ name }}
    </div>
    <script type="text/javascript">
        const x = new Vue({
            el: '#root',
            data: {
                name: 999
                // message: 888
            }
        })
    </script>
</body>

</html>

v-bind v-model

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="vue.js" type="text/javascript" charset="UTF-8"></script>
</head>

<body>
    <div id="app">
        <!-- v-hind 单向传输,将data中的数据传给输入框 -->
        <input type="text" v-bind:value="name">
        <!-- v-hind的缩写形式
        <input type="text" v-bind:value="name">  -->
        <!-- v-model 双向传输,data中的数据与输入框中的value值相互传递 -->
        <input type="text" v-model:value="name">
    </div>
    <script type="text/javascript">
        var app = new Vue({
            el: "#app",
            data: {
                name: '燕'
            }
        });
    </script>
</body>

</html>

效果:

Object.defineProperty

<!doctype html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>test</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <script type="text/javascript">
        number = 19;
        const person = {
            name: 'yan',
            school: '黑龙江大学',
            sex: '女'
        }
        Object.defineProperty(person, 'age', {
            // value: 19,
            // writable: false,//可重新赋值,默认false
            // enumerable: true//可枚举(可被遍历),默认false
            // configurable: true, //控制属性是否可以被删除 默认为false
            get: function () {
                //测试它的调用情况
                console.log('@@@ GET AGE');
                //此时age的值依赖number的值
                return number
            },
            //当修改person的age属性时set(setter)属性就会被调用,且会收到修改的具体值
            set(v) {
                //测试
                console.log('CHANGE AGE');
                number = v;
            }
        });
        // person.school = 'hhhh';//可以赋值
        console.log(person);
        //遍历对象person中的可枚举的属性
        for (let prop in person) {
            console.log(prop);
        }
        //Object.keys遍历对象person中的可枚举的属性,和for in 一样的功能
        console.log(Object.keys(person));

        // delete person.age;
        // console.log(person);

        console.log(person.age);//调用了get函数
        person.age = 16;//调用了set函数
        console.log(number);//此时number为16
    </script>
</body>

</html>

 键盘事件绑定:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <!--vue中键盘事件的绑定 一般用keyup(键松开的时候执行)(keydown键按下的时候执行)-->
    <!--
            1.Vue中常用的按键别名:
                        回车 => enter
                        删除 => delete (捕获“删除”和“退格”键)
                        退出 => esc
                        空格 => space
                        换行 => tab (特殊,必须配合keydown去使用)
                        上 => up
                        下 => down
                        左 => left
                        右 => right

            2.Vue未提供别名的按键,可以使用按键原始的key值去绑定,但注意要转为kebab-case(短横线命名)

            3.系统修饰键(用法特殊):ctrl、alt、shift、meta
                        (1).配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发。
                        (2).配合keydown使用:正常触发事件。

            4.也可以使用keyCode去指定具体的按键(不推荐)

            5.Vue.config.keyCodes.自定义键名 = 键码,可以去定制按键别名
    -->
    <div id="rooot">
        <h1>欢迎来到{{place}}</h1>
        <input type="text" @keyup.enter="showI" placeholder="回车控制台提示输入">
        <input type="text" @keyup.delete="showI" placeholder="删除或退格控制台提示输入">
        <input type="text" @keyup.space="showI" placeholder="空格控制台提示输入">
        <!-- Tab得搭配keydown使用,否则按下时会移动聚焦事件 -->
        <input type="text" @keydown.tab="showI" placeholder="Tab控制台提示输入">
        <!-- ctrl+任意键 -->
        <input type="text" @keyup.ctrl="showI" placeholder="按下ctrl任意键提示输入" />
        <input type="text" @keydown.p="showI" placeholder="按下p提示输入" />

    </div>

    <script>
        new Vue({
            el: '#rooot',
            data: {
                place: '哈尔滨'
            },
            methods: {
                //keyCode13为Enter键
                // <input type="text" @keyup.enter="showI" placeholder="回车控制台提示输入")>
                // if (a.keyCode === 13) {
                //     console.log(a.target.value);
                // }
                showI: function (a) {
                    console.log(a.target.value);//返回输入框的值
                    console.log(a.key);//返回最后按下的按键
                }
            }
        })
    </script>
</body>

</html>

姓名的显示:方法一:插值语法。方法二:methods定义函数后调用

实现效果:

代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="rooot">
        姓:
        <input type="text" V-model:value="firstname"><br><br>
        名:
        <input type="text" V-model:value="lastname"><br><br>
        <!-- 方法1:插值语法 -->
        <!-- <span>全名:{{firstname.slice(0,3)}} {{lastname}}</span> -->
        <!-- 方法2:methods方法调用之后进行插值 -->
        <span>全名:{{fullname()}}</span>
    </div>

    <script>
        const vm = new Vue({
            el: '#rooot',
            data: {
                firstname: 'yanyan',
                lastname: 'mengying'
            },
            methods: {
                fullname() {
                    return `${this.firstname.slice(0, 3)} + ${this.lastname}`
                }
            }
        })
    </script>
</body>

</html>

 姓名显示,方法三:计算属性(不是函数)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="rooot">
        姓:
        <input type="text" V-model:value="firstname"><br><br>
        名:
        <input type="text" V-model:value="lastname"><br><br>
        <!-- 方法3:计算属性 -->
        <!-- fullname后面不能加括号,否则会提示fullname不是函数(也就是说fullname不是函数) -->
        <span>全名:{{fullname}}</span>
    </div>

    <script>
        const vm = new Vue({
            el: '#rooot',
            data: {
                firstname: 'yanyan',
                lastname: 'mengying'
            },
            computed: {
                fullname: function () {
                    return this.firstname.slice(0, 3) + '-' + this.lastname;
                }
            }
        })
    </script>
</body>

</html>

天气案例,实现:

 方法1,自己写的,使用methods定义函数,当按钮点击时,切换温度

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="rooot">
        <h1>今天温度挺{{wendu}}</h1>
        <button @click="change()">切换</button>
    </div>
    <script>
        const vm = new Vue({
            el: '#rooot',
            data: {
                wendu: '高'
            },
            methods: {
                change() {
                    if (this.wendu == '高') {
                        this.wendu = '低'
                    }
                    else {
                        this.wendu = '高'
                    }
                }
            }
        })
    </script>
</body>

</html>

方法2:并进行数据监听

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/vue.js"></script>
</head>

<body>
    <div id="rooot">
        <h1>今天温度挺{{info}}</h1>
        <button @click="changeweather()">切换</button>
        <!--点击函数里面可以书写较为简单的语句-->
        <!--@xxx='yyyy' yyyy可以是一些简单的语句-->
        <!--    <button @click="isHot = !isHot">-->
        <!--        切换-->
        <!--    </button>-->
    </div>
    <script>
        const vm = new Vue({
            el: '#rooot',
            data: {
                ishot: true
            },
            //改变模版数据的方法
            methods: {
                changeweather() {
                    this.ishot = !this.ishot;
                }
            },
            //计算属性
            computed: {
                info() {
                    return this.ishot ? "高" : "低";
                }
            },

            //监听ishot值的变化
            watch: {
                ishot: {
                    // handler() {
                    //     console.log('ye!');
                    // }
                    handler(newValue, oldValue) {
                        console.log('从' + oldValue + '变成' + newValue);
                    }
                }

            }
        })
    </script>
</body>

</html>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

论文笔记3-XCube: Large-Scale 3D Generative Modeling using Sparse Voxel Hierarchies

目录 Abtract 相关工作 核心算法&#xff1a; 整体流程概述 具体流程解析 1. 输入&#xff08;Input&#xff09; 2. 稀疏结构 VAE&#xff08;Sparse Structure VAE&#xff09; 3.分层体素潜在扩散&#xff08;Hierarchical Voxel Latent Diffusion&#xff09;…

js.二叉搜索树中第K小的元素

链接&#xff1a;230. 二叉搜索树中第 K 小的元素 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 小的元素&#xff08;从 1 开始计数&#xff09;。 示例 1…

RabbitMQ 安装延迟队列插件 rabbitmq_delayed_message_exchange

前言&#xff1a; RabbitMQ 延迟队列插件&#xff08;rabbitmq_delayed_message_exchange&#xff09;是一个社区开发的插件&#xff0c;它为 RabbitMQ 添加了支持延迟消息的功能。通过这个插件&#xff0c;用户可以创建一种特殊的交换机类型 x-delayed-message&#xff0c;该…

Java安全—原生反序列化重写方法链条分析触发类

前言 在Java安全中反序列化是一个非常重要点&#xff0c;有原生态的反序列化&#xff0c;还有一些特定漏洞情况下的。今天主要讲一下原生态的反序列化&#xff0c;这部分内容对于没Java基础的来说可能有点难&#xff0c;包括我。 序列化与反序列化 序列化&#xff1a;将内存…

【人工智能】深入解析GPT、BERT与Transformer模型|从原理到应用的完整教程

在当今人工智能迅猛发展的时代&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域涌现出许多强大的模型&#xff0c;其中GPT、BERT与Transformer无疑是最受关注的三大巨头。这些模型不仅在学术界引起了广泛讨论&#xff0c;也在工业界得到了广泛应用。那么&#xff0c;G…

d3-contour 生成等高线图

D3.js 是一个强大的 JavaScript 库&#xff0c;用于创建动态、交互式数据可视化。d3-contour 是 D3.js 的一个扩展模块&#xff0c;用于生成等高线图&#xff08;contour plots&#xff09;。 属性和方法 属性 x: 一个函数&#xff0c;用于从数据点中提取 x 坐标。y: 一个函…

Apache Zeppelin:一个基于Web的大数据可视化分析平台

今天给大家推荐一下 Apache Zeppelin&#xff0c;它是一个基于 Web 的交互式数据接入、数据分析、数据可视化以及协作文档 Notebook&#xff0c;类似于 Jupyter Notebook。 Apache Zeppelin 支持使用 SQL、Java、Scala、Python、R 等编程语言进行数据处理和分析&#xff0c;同时…

使用 pycharm 新建不使用 python 虚拟环境( venv、conda )的工程

有时候我们发现一个好玩的 demo&#xff0c;想赶快在电脑上 pip install 一下跑起来&#xff0c;发现因为 python 的 venv、conda 环境还挺费劲的&#xff0c;因为随着时间的发展&#xff0c;之前记得很清楚的 venv、conda 的用法&#xff0c;不经常使用&#xff0c;半天跑不起…

计算机网络 实验八 应用层相关协议分析

一、实验目的 熟悉CMailServer邮件服务软件和Outlook Express客户端软件的基本配置与使用&#xff1b;分析SMTP及POP3协议报文格式和SMTP及POP3协议的工作过程。 二、实验原理 为了观察到邮件发送的全部过程&#xff0c;需要在本地计算机上配置邮件服务器和客户代理。在这里我…

vue 实现关键字高亮效果

vue 实现关键字高亮效果 这是啥子意思呢&#xff0c;就是类似于百度搜索&#xff0c;根据关键词搜索结果&#xff0c;搜索结果中&#xff0c;与关键词相同的字显示红色&#xff0c;仅此而已&#xff0c;没有什么大的功能。简单写一下demo。 环境 我使用的是 vue3 ts 的语法来…

【大数据学习 | Spark-Core】广播变量和累加器

1. 共享变量 Spark两种共享变量&#xff1a;广播变量&#xff08;broadcast variable&#xff09;与累加器&#xff08;accumulator&#xff09;。 累加器用来对信息进行聚合&#xff0c;相当于mapreduce中的counter&#xff1b;而广播变量用来高效分发较大的对象&#xff0c…

2024年11月24日Github流行趋势

项目名称&#xff1a;FreeCAD 项目维护者&#xff1a;wwmayer, yorikvanhavre, berndhahnebach, chennes, WandererFan等项目介绍&#xff1a;FreeCAD是一个免费且开源的多平台3D参数化建模工具。项目star数&#xff1a;20,875项目fork数&#xff1a;4,117 项目名称&#xff1…

零基础学安全--shell脚本学习(1)脚本创建执行及变量使用

目录 学习连接 什么是shell shell的分类 查看当前系统支持shell 学习前提 开始学习 第一种执行脚本方法 ​编辑 第二种执行脚本方法 第三种执行脚本方法 变量声明和定义 ​编辑 查看变量 删除变量 学习连接 声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣…

Java后端如何进行文件上传和下载 —— 本地版

简介&#xff1a; 本文详细介绍了在Java后端进行文件上传和下载的实现方法&#xff0c;包括文件上传保存到本地的完整流程、文件下载的代码实现&#xff0c;以及如何处理文件预览、下载大小限制和运行失败的问题&#xff0c;并提供了完整的代码示例。 大体思路 1、文件上传 …

Z2400024基于Java+SSM+mysql+maven开发的社区论坛系统的设计与实现(附源码 配置 文档)

基于SSM开发的社区论坛系统 1.摘要2.主要功能3.系统运行环境4.项目技术5.系统界面截图6.源码获取 1.摘要 本文介绍了一个基于SSM&#xff08;Spring、Spring MVC、MyBatis&#xff09;框架开发的社区论坛系统。该系统旨在打造一个高品质的开发者社区&#xff0c;为开发者提供一…

JAVA笔记 | 策略模式+枚举Enum简单实现策略模式(可直接套用)

本篇为更为简单的策略模式应用&#xff0c;使用枚举来进行策略分配 上一篇(链接如下)更像是策略工厂模式来分配策略 JAVA笔记 | 实际上用到的策略模式(可直接套用)-CSDN博客 先创建策略相关类 //策略类 public interface PetStrategy {/*** 执行动作 - 跑RUN*/String run(Str…

RabbitMQ 篇-深入了解延迟消息、MQ 可靠性(生产者可靠性、MQ 可靠性、消费者可靠性)

??博客主页&#xff1a;【_-CSDN博客】** 感谢大家点赞??收藏评论** 文章目录 ???1.0 RabbitMQ 的可靠性 ? ? ? ? 2.0 发送者的可靠性 ? ? ? ? 2.1 生产者重试机制 ? ? ? ? 2.2 生产者确认机制 ? ? ? ? 2.2.1 开启生产者确认机制 ? ? ? ? 2.2…

Redis(概念、IO模型、多路选择算法、安装和启停)

一、概念 关系型数据库是典型的行存储数据库&#xff0c;存在的问题是&#xff0c;按行存储的数据在物理层面占用的是连续存储空间&#xff0c;不适合海量数据存储。 Redis在生产中使用的最多的是用作数据缓存。 服务器先在缓存中查询数据&#xff0c;查到则返回&#xff0c;…

JAVA:Spring Boot 3 实现 Gzip 压缩优化的技术指南

1、简述 随着 Web 应用的用户量和数据量增加&#xff0c;网络带宽和页面加载速度逐渐成为瓶颈。为了减少数据传输量&#xff0c;提高用户体验&#xff0c;我们可以使用 Gzip 压缩 HTTP 响应。本文将介绍如何在 Spring Boot 3 中实现 Gzip 压缩优化。 2、配置 Spring Boot 3 对…

python期末复习

其他复习资料 Python期末复习-系列数据类型-CSDN博客 期末python复习-异常和函数-CSDN博客 期末Python复习-输入输出-CSDN博客 目录 一、面向对象程序设计 1.思维导图 2.基本概念 3.类对象和实例对象 3.1创建对象 3.2定义类中的成员变量 3.3类中属性的公有和私有 3.…