Vue 官方文档2.x教程学习笔记 1 基础 1.4 模板语法 1.4.1 插值

news2024/11/16 9:27:49

Vue 官方文档2.x教程学习笔记

文章目录

      • Vue 官方文档2.x教程学习笔记
      • 1 基础
        • 1.4 模板语法
          • 1.4.1 插值

1 基础

1.4 模板语法

【介绍】

Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。

所有 Vue.js 的模板都是合法的 HTML,所以能被遵循规范的浏览器和 HTML 解析器解析。

在底层的实现上,Vue 将模板编译成虚拟 DOM 渲染函数。

结合响应系统,Vue 能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。

如果你熟悉虚拟 DOM 并且偏爱 JavaScript 的原始力量【不了不了】,你也可以不用模板,直接写渲染 (render) 函数,使用可选的 JSX 语法。

1.4.1 插值

【文本】

数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <span>Message: {{msg}}</span>
</div>
<script src="../js/vue.js"></script>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            msg: "DingJiaxiong"
        }
    })
</script>
</body>
</html>

在这里插入图片描述

Mustache 标签将会被替代为对应数据对象上 msg property 的值。无论何时,绑定的数据对象上 msg property 发生了改变,插值处的内容都会更新。

在这里插入图片描述

通过使用 v-once 指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新。

但请留心这会影响到该节点上的其它数据绑定:

在这里插入图片描述

【原始HTML】

双大括号会将数据解释为普通文本,而非 HTML 代码。为了输出真正的 HTML,需要使用 v-html 指令:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <span v-once>Message不会改变: {{msg}}</span>
    <p>{{hobby}}</p>

    <p>Using mustaches: {{ rawHtml }}</p>
    <p>Using v-html directive: <span v-html="rawHtml"></span></p>
</div>
<script src="../js/vue.js"></script>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            msg: "DingJiaxiong",
            hobby: '羽毛球',
            rawHtml: '<h1 style="color: red">红色的文本</h1>'
        }
    })
</script>
</body>
</html>

浏览器效果

在这里插入图片描述

span 的内容将会被替换成为 property 值 rawHtml,直接作为 HTML——会忽略解析 property 值中的数据绑定。

注意,你不能使用 v-html 来复合局部模板,因为 Vue 不是基于字符串的模板引擎。反之,对于用户界面 (UI),组件更适合作为可重用和可组合的基本单位。

站点上动态渲染的任意 HTML 可能会非常危险,因为它很容易导致 XSS 攻击。请只对可信内容使用 HTML 插值,绝不要对用户提供的内容使用插值。

【Attribute】

Mustache 语法不能作用在 HTML attribute 上,遇到这种情况应该使用 v-bind 指令:

<div v-bind:id="dynamicId"></div>

在这里插入图片描述

对于布尔 attribute (它们只要存在就意味着值为 true),v-bind 工作起来略有不同,在这个例子中:

<button v-bind:disabled="isButtonDisabled">一个按钮</button>

在这里插入图片描述

补充:“disabled 属性是一个布尔属性。disabled 属性规定应该禁用的 元素。被禁用的 input 元素是无法使用和无法点击的。

如果 isButtonDisabled 的值是 nullundefinedfalse

在这里插入图片描述

disabled attribute 甚至不会被包含在渲染出来的 <button> 元素中。

【使用JavaScript 表达式】

之前的都是只绑定简单的property 键值

实际上,对于所有的数据绑定,Vue.js 都提供了完全的 JavaScript 表达式支持

    <p>{{number + 1}}</p>
    <p>{{ok ? 'YES' : 'NO'}}</p>
    <p>{{message.split('').reverse().join('')}}</p>

    <div v-bind:id="'list-' + id"></div>

</div>
<script src="../js/vue.js"></script>
<script>
    var vm = new Vue({
        el: '#app',
        data: {

            number:100,
            ok: true,
            message: 'Hello',
            id: 1,

在这里插入图片描述

这些表达式会在所属 Vue 实例的数据作用域下作为 JavaScript 被解析。

有个限制就是,每个绑定都只能包含单个表达式,所以下面的例子都不会生效。

<!-- 这是语句,不是表达式 -->
{{ var a = 1 }}

<!-- 流控制也不会生效,请使用三元表达式 -->
{{ if (ok) { return message } }}

模板表达式都被放在沙盒中,只能访问全局变量的一个白名单,如 MathDate 。你不应该在模板表达式中试图访问用户定义的全局变量。

【全局变量的一个白名单】

https://github.com/vuejs/vue/blob/v2.6.10/src/core/instance/proxy.js#L9

在这里插入图片描述

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

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

相关文章

Flink SQL管理平台flink-streaming-platform-web安装搭建-整理

目录 步骤 安装 第二步 下载flink 第三步 安装flink-streaming-patform-web 第四步 配置flink web平台 第五步 运行demo 在Flink学习的入门阶段&#xff0c;非常重要的一个过程就是Flink环境搭建&#xff0c;这是认识FLInk框架的第一步&#xff0c;也是为后续的理论学习和…

全栈性能测试教程之性能测试理论(一) mockserver应用

1、mockServer 1.1什么是mockServer moco替代 Server服务 mocoServer即为测试替身的服务 主要针对于单元测试的应用&#xff0c;主要应用于解除单元测试之间的依赖 1.2mocoServer使用的场景 前端程序员 前端已经写好页面&#xff0c;但是后端的接口没有写好&#xff…

[Android]Mac电脑Android Studio使用真机调试运行

一、Mac电脑连接Android真机 我这里是一台中兴手机 1. 手机打开USB调试 打开“设置”找到“关于手机”进入&#xff0c;连续点击版本号&#xff0c;直到提示“您已经进入开发者模式”。回到“设置”找到“系统与更新”进入&#xff0c;再进入“开发者选项”&#xff0c;打开…

Vue笔记_03组件_mavonEditor组件(基于vue)

目录下载mavonEditor导入并注册mavonEditor组件[1] 全局注册[2]局部注册使用mavonEditor属性修改举例说明1-不展示预览分屏工具栏修改举例说明-根据配置显示工具栏编辑器插槽举例说明-自定义工具栏按钮函数监听下载mavonEditor 使用命令 npm install mavon-editor --s 进行下载…

Koa 6 响应(Response)

Koa Koa 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 6 响应(Response) 文章目录Koa6 响应(Response)6.1 APIStringBufferStreamObjectKoa Response 对象是在 node 的原生响应对象之上的抽象&#xff0c;提供了诸多对 HTTP 服务器开发有用的功能。 6…

Linux系统移植一:移植U-BOOT 添加自己的板子并编译(非petalinux版)

Linux系统移植流程 之前一直用官方给的Linux系统文件&#xff0c;没有自己系统地移植过&#xff0c;故整理一遍 不使用petalinux工具&#xff0c;尽管它提升了开发效率&#xff0c;但是不利于学习移植过程 嵌入式Linux系统移植主要由四大部分组成&#xff1a; 搭建交叉开发环…

【计算机网络】实验四 应用层和传输层协议分析(PacketTracer)

一.实验目的 通过本实验&#xff0c;熟悉PacketTracer的使用&#xff0c;学习在PacketTracer中仿真分析应用层和传输层协议&#xff0c;进一步加深对协议工作过程的理解。 二.实验内容 研究应用层和传输层协议 从 PC 使用 URL 捕获 Web 请求&#xff0c;运行模拟并捕获通信…

健身用什么耳机比较好、五款适合健身房运动的耳机推荐

大家都运动本身是一件特别枯燥无味的事情&#xff0c;尤其是一个人在健身房沉浸式撸铁的时候&#xff0c;而听音乐是大多数人缓解枯燥的首选&#xff0c;不过在健身的过程中拥有一款既要音质好、又要适合运动佩戴防水防汗的耳机可就不那么容易了。今天给大家推荐几款最佳的运动…

如何在lnmp中实现PHP多版本共存

背景&#xff1a;one框架需要swool扩展&#xff0c;同时php版本需要7.3&#xff0c;目前服务器安装的是lnmp1.6其中php5.6. 所以觉得安装一个php7.3作为切换版本 &#xff0c;以下是安装步骤 1.查找lnmp的install.sh文件&#xff0c;一般在/root/lnmp1.5/install.sh 下执行命令…

【Docker】Compose容器编排:微服务实战

Docker-Compose是Docker官方的开源项目&#xff0c; 负责实现对Docker容器集群的快速编排。是一个工具软件&#xff0c;可以 管理多个 Docker 容器 组成一个应用。你需要 定义一个 YAML 格式的配置文件docker-compose.yml &#xff0c;写好多个容器之间的调用关系。然后&#x…

GeoTools快速入门

本文将帮助读者获取GeoTools的源代码并进行编译。下载源代码并进行编译有助于读者对GeoTools建立整体性的理解&#xff0c;帮助读者厘清GeoTools的模块划分。同时因为GeoTools是一个开源类库&#xff0c;读者在实际使用中遇到的一些问题可以通过直接阅读GeoTools源代码来进行解…

vue3+ts项目中封装3d单柱柱状图

vue3ts项目中封装单柱的柱状图 成品图 下载echarts npm i echarts 封装组件为Barchart.vue文件 <template> </template><script setup lang"ts"> import { nextTick, watch } from vue import echarts from /assets/ts/echarts; import useRes…

[附源码]计算机毕业设计在线项目管理Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

十三、Vue CLI(2)

本章概要 项目结构编写一个 Hello 组件package.json 13.4 项目结构 通过 Vue CLI 生成的项目的目录结构及各文件夹和文件的用途说明如下&#xff1a; |--node_modules //项目依赖的模块 |--public //该目录下的文件不会被 Webpack 编译压缩处理&…

Springboot社区疫情防控系统毕业设计,社区疫情防控管理系统设计与实现,毕设作品参考

功能清单 【后台管理员功能】 关于我们设置&#xff1a;设置学校简介、联系我们、加入我们、法律声明、学校详情 广告管理&#xff1a;设置小程序首页轮播图广告和链接 留言列表&#xff1a;所有用户留言信息列表&#xff0c;支持删除 会员列表&#xff1a;查看所有注册会员信…

【树莓派开发日记2 】树莓派安装Ubuntu22系统及启动黑屏等问题的踩坑记录

树莓派安装Ubuntu22系统及启动黑屏等问题的踩坑记录 在成功进行了组装后&#xff0c;就到了最为关键的部分了&#xff0c;进行树莓派的系统烧录。虽然树莓派有自己对应的系统&#xff0c;raspbian&#xff0c;但是绝大部分的开发者还是会选择Ubuntu系统作为主要的开发系统 Ub…

软件架构模式

如果有兴趣了解更多相关内容&#xff0c;欢迎来我的个人网站看看&#xff1a;瞳孔空间 创建软件系统基本结构的原则称为软件体系结构。软件结构由软件元素及其相互关系组成&#xff0c;这些元素起着蓝图的作用&#xff0c;规划了要执行的任务的模式。软件设计团队极大地依赖于…

【java】2-串行与并发分别将计数器从1累加到10亿

串行、并行、并发 串行是100个人的队伍从一条通道里顺序通行 并行是100个人从n(n>1)条通道分别通行 并发是只有一条通道&#xff0c;100个人排成n个队伍&#xff0c;每队依次派一个人从通道通行&#xff1b;或是有m条通道&#xff0c;100个人排成n个队伍&#xff0c;各个队…

[附源码]计算机毕业设计SpringBoot心理健康系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Spark3 AQE (Adaptive Query Execution) 一文搞懂 新特性

Spark 3 AQE (Adaptive Query Execution) 序 在搭建平台的过程中&#xff0c;我们使用 CDH 6.3.2 进行搭建&#xff0c;但 CDH 中阉割掉了 spark-sql 功能&#xff0c;所以我们外挂了 Spark 3&#xff0c;补充 spark-sql 功能&#xff0c;版本为 3.3。在使用的过程中&#xff…