Vue 模板语法

模板语法概述
  • 如何理解前端渲染?
    把数据填充到HTML标签中。


  • 前端渲染方式
    (1)原生js拼接字符串
    (2)使用前端模板引擎
    (3)使用vue特有的模板语法
  • 原生js拼接字符串
    基本上就是将数据以字符串的方式拼接到 HTML 标签中,前端代码风格大体上如图所示。


  • 使用前端模板引擎
    右侧代码是基于模板引擎 art-template 的一段代码,与拼接字符串相比,代码明显规范了很多,它拥有自己的一套模板语法规则。

    优点:大家都遵循同样的规则写代码,代码可读性明显提高了,方便后期的维护。
    缺点:没有专门提供事件机制。
  • 模板语法概览
    (1)差值表达式
    (2)指令
    (3)事件绑定
    (4)属性绑定
    (5)样式绑定
    (6)分支循环结构
指令
  • 什么是指令?
    (1)什么是自定义属性
             HTML规范也允许我们自定义一些属性。(最新规范中,推荐以data-开头)注意,如果设置元素自定义属性,不会显示在标签里,想要显示在标签里,请使用 setAttribute 方法。
    (2)指令的本质就是自定义属性
    (3)指令的格式:以v-开始(比如:v-cloak)
  • v-cloak 指令用法
    (1)插值表达式存在的问题:“闪动”
    (2)如何解决该问题:使用v-cloak指令
    (3)解决该问题的原理:先隐藏,替换好值之后再显示最终的值



  • 数据绑定指令
    (1)v-text 填充纯文本
             ① 相比插值表达式更加简洁
    (2)v-html 填充HTML片段
             ① 存在安全问题
             ② 本网站内部数据可以使用,来自第三方的数据不可以用
    (3)v-pre 填充原始信息
             ① 显示原始信息,跳过编译过程(分析编译过程)


  • 数据响应式
    (1)如何理解响应式
             ① html5中的响应式(屏幕尺寸的变化导致样式的变化)
             ② 数据的响应式(数据的变化导致页面内容的变化)
    (2)什么是数据绑定
             ① 数据绑定:将数据填充到标签中
    (3)v-once 只编译一次
             ① 显示内容之后不再具有响应式功能


双向数据绑定指令
  • 什么是双向数据绑定?


  • 双向数据绑定分析
    (1)v-model 指令用法


  • MVVM设计思想



    ① M(model)
    ② V(view)
    ③ VM(View-Model)

事件绑定
  • Vue 如何处理事件?
    ① v-on 指令用法



    ② v-on 简写形式


  • 事件函数的调用方式
    ① 直接绑定函数名称



    ② 调用函数


  • 事件函数参数传递
    ① 如果事件直接绑定函数名称,那么默认会传递事件对象作为事件函数的第一个参数。
    ② 如果事件绑定函数调用,那么事件对象必须作为最后一个参数显示传递, 并且事件对象的名称必须是 $event。


  • 事件修饰符
    ① .stop 阻止冒泡
    ② .prevent 阻止默认行为



  • 按键修饰符
    ① .enter 回车键
    ② .esc 退出键



  • 自定义按键修饰符
    ① 全局 config.keyCodes 对象
    规则:自定义按键修饰符名字是自定义的,但是对应的值必须是按键对应event.keyCode值。


练习:简单计算器

需求:实现简单的加法计算,分别输入数值a和数值b,点击计算按钮,结果显示在下面。

  • 需求分析
    ① 通过 v-model 指令实现数值a和数值b的绑定
    ② 给计算按钮绑定事件,实现计算逻辑
    ③ 将计算结果绑定到对应位置
  • 参考代码
<body>
 <div id="app">
   <h1>简单计算器</h1>
   <div>
     <span>数值A:</span>
     <span>
       <input type="text" v-model='a'>
     </span>
   </div>
   <div>
     <span>数值B:</span>
     <span>
       <input type="text" v-model='b'>
     </span>
   </div>
   <div>
     <button v-on:click='handle'>计算</button>
   </div>
   <div>
     <span>计算结果:</span>
     <span v-text='result'></span>
   </div>
 </div>
 <script type="text/javascript" src="js/vue.js"></script>
 <script type="text/javascript">
   var vm = new Vue({
     el: '#app',
     data: {
       a: '',
       b: '',
       result: ''
     },
     methods: {
       handle: function(){
         // 实现计算逻辑
         this.result = parseInt(this.a) + parseInt(this.b);
       }
     }
   });
 </script>
</body>
属性绑定
  • Vue 如何动态处理属性?
    ① v-bind指令用法
    ② 缩写形式



  • v-model 的低层实现原理分析



样式绑定
  • class 样式处理
    ① 对象语法





    ② 数组语法





    ③ 样式绑定相关语法细节:
    (1)对象绑定和数组绑定可以结合使用
    (2)class绑定的值可以简化操作

    (3)默认的class如何处理?默认的class会保留




  • style 样式处理
    ① 对象语法
    ② 数组语法



分支循环结构
  • 分支结构
    ① v-if
    ② v-else
    ③ v-else-if
    ④ v-show
       控制元素样式是否显示 display:none。



  • v-if 与 v-show 的区别
    v-if控制元素是否渲染到页面
    v-show控制元素是否显示(已经渲染到了页面)
  • 循环结构
    ① v-for 遍历数组
    key的作用:帮助Vue区分不同的元素,从而提高性能




    ② v-for 遍历对象
    ③ v-if 和 v-for 结合使用


    原生JS遍历对象

    v-for遍历对象
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 175,490评论 5 419
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 74,060评论 2 335
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 124,407评论 0 291
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 47,741评论 0 248
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 56,543评论 3 329
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 43,040评论 1 246
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 34,107评论 3 358
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 32,646评论 0 229
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 36,694评论 1 271
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 32,398评论 2 279
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 33,987评论 1 288
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 30,097评论 3 285
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 35,298评论 3 282
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 27,278评论 0 14
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 28,413评论 1 232
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 38,397评论 2 309
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 38,099评论 2 314