第4讲:vue内置命令(文本插值,属性绑定,v-text,v-html)

news2024/11/27 1:41:09

MVVM

        什么是MVVM

         MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。

        View层:
视图层
在我们前端开发中,通常就是 DOM 层。
主要的作用是给用户展示各种信息。
Model层:
数据层
数据可能是我们固定的死数据,更多的是来自我们服务器,从网络上请求下来的数据。
在我们计数器的案例中,就是后面抽取出来的 obj ,当然,里面的数据可能没有这么简单。
ViewModel层:
视图模型层
视图模型层是 View Model 沟通的桥梁。
一方面它实现了 Data Binding ,也就是数据绑定,将 Model 的改变实时的反应到 View
另一方面它实现了 DOM Listener ,也就是 DOM 监听,当 DOM 发生一些事件 ( 点击、滚动、 touch ) 时,可以监听到,并在需要的情况下改变对应的 Data

options

  在上一章的HelloWorld中我们创建Vue实例的时候需要传入一个options对象。
  这个options对象可以包含哪些属性?
文档: https://cn.vuejs.org/v2/api/#%E9%80%89%E9%A1%B9-%E6%95%B0%E6%8D%AE
  目前,我们需掌握如下属性:
el:
类型:string | HTMLElement
作用:决定之后Vue实例会管理哪一个DOM。
data:
类型:Object | Function (组件当中data必须是一个函数)
作用:Vue实例对应的数据对象。
methods:
类型:{ [key: string]: Function }
作用:定义属于Vue的一些方法,可以在其他地方调用,也可以在指令中使用。
  而随着学习的深入,我们还需要掌握其它的属性,这些我们将在后面的学习中提及。

文本插值

在使用数据绑定前需在 Vue 组件对象内声明所需的变量
data() { msg: 'Hello Vue!'  }
数据绑定最基础的形式是文本插值,使用 “Mustache” 语法(双花括号)
<span>Message: {{ msg }}</span>
Mustache 标签会被相应数据对象的 msg属性的值替换。每当这个属性变化时它也会更新。
<template>
    <div>
        <h2 align="center">文本插值</h2>
        <hr>
        显示字符串的值<br>
        msg={{msg}}<br>
    </div>
</template>
<script>
    export default({
        name: 'Mustache',
        //全局变量,整个页面可以访问
        data(){
            return {
                msg: '这是一个字符串变量'
            }
        },
    })
</script>

绑定属性

        Vue.js 在数据绑定内支持全功能的 JavaScript 表达式,如下

{{ number + 1 }}
{{ age >= 18 ? '成年' : '未成年' }}
{{ message.split('').reverse().join('') }}

        表达式将在所属的 Vue 实例的作用域内计算。每个绑定只能包含单个表达式。

<!-- 这是一个语句,不是一个表达式: -->
{{ var a = 1 }}
<!-- 流程控制也不可以,可改用三元表达式 -->
{{ if (ok) { return message } }}

计算属性

在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作。
如果需要多于一个表达式的逻辑,应当使用计算属性。
示例:
<template>
    <div>
        <h2 align="center">文本插值</h2>
        <hr>
        显示字符串的值<br>
        msg={{msg}}<br>
        a={{a}},b={{b}}<br>

     
    </div>
</template>
<script>
    export default({
        name: 'Mustache',
        //全局变量,整个页面可以访问
        data(){
            return {
                msg: '这是一个字符串变量',
                a:1,
            }
        },
        /*
            计算属性:
            在computed里面定义的变量不允许在data里面定义,在compted里面定义的变量与在data里面定义的变量效果是一样的

            说明:
                computed计算属性内部必须定义函数
                b()相当于一个b变量的get方法;
                在data中定义的变量名称不能与computed中定义的函数同名,但可以当做data中定义的变量一样使用

        */
        computed:{
            //相当于变量b的get方法,既是定义变量b,同时也是定义变量b的get方法
            //不允许使用data中定义的变量对自己赋值
            b(){
                return this.a+1;
            }
           
        }

    })
</script>

果:a=1, b=2

说明:
computed 计算属性内部必须定义函
b() 相当于一个 b 变量的 get 方法;
data 中定义的变量 名称 不能与 computed 中定义的函数同名,但可以当做 data 中定义的变量一样使用

指令插值

v-text指令主要是防止页面首次加载时 {{}} 出现在页面上。将对象中数据变量值显示在绑定的标签内容上。
  <h1 v-text=”msg”></h1>  => <h1> {{ msg }} </h1>
  后者在页面首次加载时可能会出现 {{ msg }}

v-html指令

v-html 指令类似于 v-text 指令 ;
v-text 区别在于 v-text 输出的是纯文本,浏览器不会对其再进行 html 解析,但 v-html 会将其当 html 标签解析后输出
v-html 指令应尽量避免使用,否则会带来危险 (XSS 攻击 跨站脚本攻击 ), 一般只在可信任内容上使用 v-html ,永不用在用户提交的内容上 ;

<template>
    <div>
        <h2 align="center">文本插值</h2>
        <hr>
        显示字符串的值<br>
        msg={{msg}}<br>
        msg1={{msg1}}<br>
        number={{number}}<br>
        number={{number+1}}<br>
        你的年龄是{{this.age}}岁,你是{{age>18?'成年':'未成年'}}人。<br>
        a={{a}},b={{b}}<br>

        <!--
           v-html 指令类似于 v-text 指令;
            它与v-text区别在于v-text输出的是纯文本,浏览器不会对其再进行html解析,但v-html会将其当html标签解析后输出。
            v-html 指令应尽量避免使用,否则会带来危险(XSS攻击 跨站脚本攻击),一般只在可信任内容上使用 v-html,永不用在用户提交的内容上;
        -->
        <span v-text="test()"></span>
        <span v-html="test2()"></span>
    </div>
</template>
<script>
    export default({
        name: 'Mustache',
        //全局变量,整个页面可以访问
        data(){
            return {
                msg: '这是一个字符串变量',
                msg1: '这是字符串变量2',
                age:16,
                number:1,
                a:1,
                score:90
            }
        },
        /*
            计算属性:
            在computed里面定义的变量不允许在data里面定义,在compted里面定义的变量与在data里面定义的变量效果是一样的

            说明:
                computed计算属性内部必须定义函数
                b()相当于一个b变量的get方法;
                在data中定义的变量名称不能与computed中定义的函数同名,但可以当做data中定义的变量一样使用

        */
        computed:{
            //相当于变量b的get方法,既是定义变量b,同时也是定义变量b的get方法
            //不允许使用data中定义的变量对自己赋值
            b(){
                return this.a+1;
            }
           
        },
        //生命周期
        created(){

        },
        methods:{
            test(){
                return "<h2>使用-v-text属性返回函数值</h2>"
            },
            test2(){
                return "<h2>使用v-html属性的返回值</h2>"
            }
        }

    })
</script>

本人从事软件项目开发20多年,2005年开始从事Java工程师系列课程的教学工作,录制50多门精品视频课程,包含java基础,jspweb开发,SSH,SSM,SpringBoot,SpringCloud,人工智能,在线支付等众多商业项目,每门课程都包含有项目实战,上课PPT,及完整的源代码下载,有兴趣的朋友可以看看我的在线课堂

讲师课堂链接:https://edu.csdn.net/lecturer/893

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

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

相关文章

Error: Activity class {xxx.java} does not exist

git切换到不同的branch之后&#xff0c;报下面的错误&#xff1a; Error: Activity class {xxx.java} does not exist 解决方案&#xff1a; 首先clean 然后会删除build目录 然后点击&#xff1a;Invalidate Caches Android Studio重启&#xff0c;然后重新build即可。

四、2023.9.30.C++面向对象end.4

文章目录 49、 简述一下什么是常函数&#xff0c;有什么作用&#xff1f;50、 说说什么是虚继承&#xff0c;解决什么问题&#xff0c;如何实现&#xff1f;51、简述一下虚函数和纯虚函数&#xff0c;以及实现原理&#xff1f;52、说说纯虚函数能实例化吗&#xff0c;为什么&am…

Python实验二

1&#xff1a;编程计算 1&#xff5e;100 偶数的和。 要求&#xff1a;输出结果为整数&#xff0c;宽度为 8&#xff0c;居中对齐&#xff0c;空白处填充符号“*”。 提示&#xff1a; range(2,101,2)生成的整数列表从 2 开始到 100 结束&#xff0c;步长为 2&#xff0c;即 …

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Linux管理面板mdserver-web

华为云云耀云服务器L实例评测&#xff5c;云耀云服务器L实例部署Linux管理面板mdserver-webl 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点 二、mdserver-web介绍2.1 mdserver-web简介2.2 mdserver-web特点2.3 主要插件介绍 三、本次实践介绍…

高数:第二章:一元函数微分学

文章目录 一、导数与微分1.导数的概念(1)导数的定义(2)左右导数(3)定理&#xff1a;可导与左右导数的关系(4)可导三要素(5)用导数定义判断可导性 2.微分的概念(1)微分的定义(2)微分与可导的关系 3.导数与微分的几何意义(1)导数 f ′ ( x 0 ) f(x_0) f′(x0​)的几何意义&#x…

【LLM】Windows10环境部署阿里通义千问大模型(Qwen-14B-Chat-Int4)

文章目录 环境文件准备项目代码模型相关文件 运行准备工作运行demo Tips 环境 系统版本&#xff1a;Windows 10 企业版 版本号&#xff1a;20H2 系统类型&#xff1a;64 位操作系统, 基于 x64 的处理器 处理器&#xff1a;Intel Core™ i7-13700K CPU 3.40GHz 机带 RAM&#…

1340. 跳跃游戏 V;2039. 网络空闲的时刻;2767. 将字符串分割为最少的美丽子字符串

1340. 跳跃游戏 V 核心思想&#xff1a;动态规划记忆化搜索。定义dfs(i)&#xff0c;表示从i开始最多可以访问多少个下标&#xff0c;然后统计往左跳和往右边跳的最大值&#xff0c;思路其实比较简单&#xff0c;但是代码我感觉还是不太好想。 2039. 网络空闲的时刻 核心思想…

CH347读写SPI Flash

CH347读写SPI Flash 前面耽搁了几天&#xff0c;今天终于把CH347 SPI接口调试好了。 CH347动态库中SPI接口函数如下&#xff1a; typedef struct _SPI_CONFIG{UCHAR iMode; // 0-3:SPI Mode0/1/2/3UCHAR iClock; // 060…

数据分析方法:RFM模型

一、RFM基本原理 RFM是三个单词的缩写&#xff1a; 最近一次消费时间&#xff08;Recency&#xff09;&#xff0c;取数的时候一般取最近一次消费记录到当前时间的间隔&#xff0c;比如&#xff1a;7天、30天、90天未到店消费&#xff1b;直观上&#xff0c;一个用户太久不到…

Windows 下安装及配置 MySQL 8.1 (图文教程)

目录 下载 MySQL安装 MySQL配置 MySQL修改密码配置环境变量 卸载 MySQL开源项目微服务商城项目前后端分离项目 下载 MySQL 访问 MySQL 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 下载 MySQL 时&#xff0c;你可以选择 ZIP 包或 MSI 安装&#xff1a; ZIP包…

智能合约漏洞,Dyna 事件分析

智能合约漏洞&#xff0c;Dyna 事件分析 1. 漏洞简介 https://twitter.com/BlockSecTeam/status/1628319536117153794 https://twitter.com/BeosinAlert/status/1628301635834486784 2. 相关地址或交易 攻击交易 1&#xff1a; https://bscscan.com/tx/0x7fa89d869fd1b89e…

【Java 进阶篇】MySQL 事务详解

在数据库管理中&#xff0c;事务是一组SQL语句的执行单元&#xff0c;它们被视为一个整体。事务的主要目标是保持数据库的一致性和完整性&#xff0c;即要么所有SQL语句都成功执行&#xff0c;要么所有SQL语句都不执行。在MySQL中&#xff0c;事务起到了非常重要的作用&#xf…

【C++】map、set,multiset和multimap的使用及底层原理【完整版】

目录 一、map和set的使用 1、序列式容器和关联式容器 2、set的使用讲解 3、map的使用讲解 二、multiset和multimap 1、multiset和multimap的使用 2、OJ题&#xff1a;前k个高频单词 一、map和set的使用 1、序列式容器和关联式容器 序列式容器&#xff1a;vector/list/s…

java遇到的问题

java遇到的问题 Tomcat与JDK版本问题 当使用Tomcat10的版本用于springmvc借用浏览器调试时&#xff0c;使用JDK8浏览器会报异常。 需要JDK17&#xff08;可以配置多个JDK环境&#xff0c;切换使用&#xff09;才可以使用&#xff0c;配置为JAVA_HOME路径&#xff0c;否则&a…

Linux系统编程系列之进程间通信-消息队列

一、什么是消息队列 消息队列是system-V三种IPC对象之一&#xff0c;是进程间通信的一种方式。 二、消息队列的特性 允许发送的数据携带类型&#xff08;指定发送给谁&#xff09;&#xff0c;具有相同类型的数据在消息队列内部排队&#xff0c;读取的时候也要指定类型&#x…

STM32三种开发方式及标准库和HAL库的编程差异

三种开发方式 STM32基于标准库函数和HAL库编程差异_stm32库函数和hal库-CSDN博客本文目的是以串口通信来简要分析STM32使用标准库函数和HAL库函数编程的差异。目录&#xff08;一&#xff09;开发方式1.配置寄存器2.库函数3.HAL库&#xff08;二&#xff09;库函数与HAL库对比…

格点数据可视化(美国站点的日降雨数据)

获取美国站点的日降雨量的格点数据&#xff0c;并且可视化 导入模块 from datetime import datetime, timedelta from urllib.request import urlopenimport cartopy.crs as ccrs import cartopy.feature as cfeature import matplotlib.colors as mcolors import matplotli…

3D孪生场景搭建:模型区域摆放

前面介绍完了NSDT场景编辑器的线性绘制和阵列绘制&#xff0c;本章将讲述下编辑器的另一种绘制方式&#xff1a;区域绘制。 1、区域绘制功能简介 在场景中绘制资产时&#xff0c;除使用上述两个的方式外&#xff0c;NSDT 编辑器还支持使用区域绘制的方式进行绘制。先选取需要…

【C/C++笔试练习】——数组名和数组名、switch循环语句、数据在计算机中的存储顺序、字符串中找出连续最长的数字串、数组中出现次数超过一半的数字

文章目录 C/C笔试练习1.数组名和&数组名&#xff08;1&#xff09;数组名和&数组名的差异&#xff08;2&#xff09;理解数组名和指针偏移&#xff08;3&#xff09;理解数组名代表的含义&#xff08;4&#xff09;理解数组名代表的含义 2.switch循环语句&#xff08;6…