博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue2.5笔记:Vue中的模版
阅读量:6399 次
发布时间:2019-06-23

本文共 1939 字,大约阅读时间需要 6 分钟。

我们在上一篇说到如何把 Vue 实例中的数据显示到视图中,就会需要用到我们的模版,我们只是简单的使用了一些,模版其实还有很多其他的特性。今天我们就来看看模版的其他特性。

模版语法

Vue 中的模版是基于 HTML 的模版语法,所有的 Vue 模版都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析。这也非常符合 Vue 的易用的特点减少开发者的学习成本。

在底层实现上,Vue 将模版编译成虚拟 DOM 渲染函数,结合响应式系统,Vue 能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。

但是如果你是 React 的开发者或者你熟悉虚拟 DOM 并且偏爱原生 Javascript,你完全可以不使用模版,而是直接使用渲染函数(render)或者使用 JSX 语法。

超帅的 {
{name}}

可以看到我们想要的效果显示出来了,在这里我们用到了模版最常见的数据绑定形式 “Mustache”语法 (双大括号) 语法,Mustache 标签将会被数据中相对应的属性替换,并且绑定的对象的属性发生了改变,差值处的内容也会响应的改变。

开心一刻:Mustache 的中文意思是胡子,但是我怎么看 {
{ }} 这个也不像胡子啊,不知道老外怎么起的这个名字。

有人可能会想到 Mustache 语法是不是也可以绑定 HTML 元素的属性呢?

其实这里是不能这么做的,Mustache 语法不能用来绑定 HTML 元素的属性,那如果我们需要绑定元素的属性 Vue 给我们提供了一个指令方法 v-bind 利用这个我们可以进行元素属性的绑定。

上面说到只要修改我们绑定的数据差值绑定的内容也会跟着替换,不过 Vue 中给我们提供了一个指令可以改变这一特性,我们可以通过使用 v-once 指令当数据改变时我们的内容也不会被替换。

表达式

模版中不仅仅可以进行简单的数据绑定操作,我们还可以在模版中进行简单的 Javascript 表达式。

超帅的 {
{name}} 仅仅只有 {
{age + 1}} 岁

这里支持+、-、*、/ 四个运算方法;除了运算方法之外,我们还可以使用 三元表达式 我们来看看一个例子

超帅的 {
{name}} {
{ realAge > 18 ? '不是' : '是' }} 未成年

超帅的 {
{name}} {
{ fakeAge > 18 ? '不是' : '是' }} 未成年

既然我们用到了三元表达式 我们肯定会想到 if 语句,但是 Vue 只提供我们在模版中使用比较简单的表达式(单个表达式),如果你的逻辑比较复杂,你不应该在模版中进行,而且应该在我们的实例的方法内进行。

下面我们继续看一个例子,我们如何利用它进行字符的反转效果。

{
{ name }}

{
{ name.split("").reverse().join("") }}

我们可以看到 Mustache 语法非常的强大,上面的表达式我们只是使用了一个方面,我们还可以进行很多方面的应用。

Vue 中除了使用 Mustache 语法( {

{ }} )将数据插入到模版中,我们还可以使用两个指令 v-textv-html 进行数据到插入。

我们在使用模版的时候不仅仅只有数据的插入有时候我们也会根据一定的条件进行模版渲染,这时候我们就可以用 v-ifv-show,不仅如此我们还会经常进行列表和模版的循环我们会用到 v-for 指令。这些在后续的章节中我们会一一说到。

模版的渲染

在文章的一开始我们已经提到,Vue 的模版是基于 HTML 的,我们也可以使用虚拟 DOM 和 JSX 语法。

从上面的图中我们看到 Vue 的整个模版的渲染过程,首先我们的模版编译为AST(抽象语法树),再由 AST 生成渲染函数,由渲染函数结合数据生成 Virtual DOM 树,之后对Virtual DOM 进行 diffpath之后生成新的 UI

总结

本文主要进行来模版语法的介绍,我们不仅仅可以使用它将数据插入在模版中,还可以进行简单的表达式的计算。我们也简单的叙述了模版编译的整个流程。当然了模版渲染的过程中还有很多的细节我们没有说明,但是一点也不影响我们对于项目的开发与使用 Vue 如果你对整个渲染的细节非常感兴趣也可以自信查阅资料进行了解。

关注微信公众号:六小登登。领取全套学习资源

转载地址:http://ihyea.baihongyu.com/

你可能感兴趣的文章
九爷带你了解 nginx 日志配置指令详解
查看>>
Jenkins 自动化部署上线
查看>>
unittest框架执行用例
查看>>
简述ssl协议及利用openssl创建私有CA
查看>>
React Native——react-navigation的使用
查看>>
“二子乘舟”的故事很难讲
查看>>
Luhn(卢恩)算法,检测信用卡号的合法性
查看>>
邮件服务的基本理论
查看>>
第九章 性能监控诊断
查看>>
RESTful再理解
查看>>
大数据量下的集合过滤—Bloom Filter
查看>>
Wannafly挑战赛9
查看>>
《企业云桌面实施》-小技巧-02-使用ISO光驱安装esxi6.5
查看>>
Python从菜鸟到高手(4):导入Python模块
查看>>
实战:Windows 2008 WDS使用参考计算机创建安装映像
查看>>
利用缓存来提高网站的性能(Caching to Improve the Performance of Your Website )
查看>>
Android应用程序注册广播接收器(registerReceiver)的过程分析
查看>>
对代理ARP技术的误读、无法完成代理ARP实验的故障分析
查看>>
详解网络流量监控
查看>>
可视化日志分析工具Gltail的安装与使用
查看>>