ch3-模板语法

1 模板语法  Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。  所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析。

在底层的实现上, Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,在应用状态改变时,  Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。

如果你熟悉虚拟 DOM 并且偏爱 JavaScript 的原始力量,你也可以不用模板,  直接写渲染(render)函数,使用可选的 JSX 语法(语法糖写的xml语法通过jsx转换工具变成js代码)。

2 插值  2.1 插入文本      2.1.1 数据绑定的常用形式: 使用‘Mustache‘语法({{}})双大括号 插入文本数据
<div id="test1">{{str}}</div>

        <script>
            var app1 = new Vue({
                el: ‘#test1‘,
                data: {
                    str: ‘你好‘
                }
            })
        </script>
  //console修改数据 app1.str = ‘123‘ // 内容随着改变
      2.1.2 v-once指令也可以执行 一次性 的插值,当数据改变的时候,内容不会更新
<div id="test1">
              {{str}}
              <p v-once>{{str}}</p>
          </div>

          //console修改数据
          app1.str = ‘123‘; //v-once标签外部{{}}绑定的发生内容变化 v-once节点里面的不会变化
  2.2 插入纯html     2.2.1 输出html使用 v-html
<div id="test2" v-html="html">
            <p>{{html}}</p>
        </div>

        let app2 = new Vue({
                el: ‘#test2‘,
                data: {
                    html: ‘<h2><span>你好</span><h2>‘
                }
            });

   2.2.2 被插入的内容都会被当做 HTML —— 数据绑定会被忽略。      注意,你不能使用 v-html 来复合局部模板,因为 Vue 不是基于字符串的模板引擎。      组件更适合担任 UI 重用与复合的基本单元。

2.2.3 你的站点上动态渲染的任意 HTML 可能会非常危险,因为它很容易导致 XSS 攻击。      请只对可信内容使用 HTML 插值,绝不要对用户提供的内容插值。
2.3 插入属性         2.3.1 Mustache({{}}) 不能在 HTML 属性中使用,应使用 v-bind 指令
<style>
    #sub{
        color:red;
     }
</style>

<div id="test3">
   <div :id="sub">123</div> // :相当于v-bind,这是它的简写
</div>
   let app3 = new Vue({
        el: ‘#test3‘,
        data: {
           sub: ‘sub‘
        }
      });

  2.3.2 这对布尔值的属性也有效 —— 如果条件被求值为 false 的话该属性会被移除:
 <div id="test4">
         <button :disabled="canopt">按钮</button>
 </div>
 let app4 = new Vue({
             el: ‘#test4‘,
             data: {
                 canopt: true
             }
 })

<div id="test4">
         <button :disabled="canopt">按钮</button>
 </div>
 let app4 = new Vue({
             el: ‘#test4‘,
             data: {
                 canopt: false
             }
 })

2.4 使用js表达式      2.4.1 常见用法
<div id="test5">
              {{number+1}} <br>
              {{ok?‘yes‘:‘no‘}} <br>
              {{str.split(‘‘).reverse().join(‘‘)}} <br>
              <div :id="‘list-‘+id">son</div>
</div>

          let app5 = new Vue({
                      el: ‘#test5‘,
                      data: {
                          number: 1,
                          ok: true,
                          str: ‘hello Vuejs‘,
                          id: ‘son‘
                      }
          });

2.5 参数  一些指令能接受一个“参数”,在指令后以冒号指明。
   2.5.1 例如, v-bind 指令被用来响应地更新 HTML 属性:
<a id="test6" :href="url">
              百度一下
</a>

 let app6 = new Vue({
                  el: ‘#test6‘,
                  data: {
                      url: ‘http://www.baidu.com‘
                  }
})
      在这里 href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定。

2.5.2  v-on 指令,它用于监听 DOM 事件 参数是监听的事件名
<div id="test7">
              <button @click="clickMe">点击</button> //@ v-on:的简写
</div>
      let app7 = new Vue({
                  el: ‘#test7‘,
                  methods: {
                      clickMe: function () {
                          alert(‘hello world Vuejs‘);
                      }
                  }
      });
2.6 修饰符(Modifiers)是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。    2.6.1 .prevent 修饰符告诉 v-on 指令对于触发的事件调用 event.preventDefault():
<div id="test8">
            <form action="/xxx" method="get" @submit.prevent="onSubmit">
                <button type="submit">提交</button>
            </form>
    </div>
    let app8 = new Vue({
               el: ‘#test8‘,
    });
2.7 过滤器    Vue.js 允许你自定义过滤器,可被用作一些常见的文本格式化。    过滤器可以用在两个地方:mustache({{}}) 插值和 v-bind 表达式。
<div id="test9">
              {{str | firstUpper | lastUpper}} <br>
              {{str | uppercase}} <br>
              {{str | isUppercase(false)}}
</div>

          let app9 = new Vue({
                  ‘el‘: ‘#test9‘,
                  data: {
                      str: ‘jesonhu‘
                  },
                  filters: {
                      firstUpper: function (value) {  //自定义首字母大写函数
                          if(!value) return ‘‘; //value不存在返回‘‘
                          value = value.toString();
                          return value.charAt(0).toUpperCase()+value.slice(1);
                              //value.charAt(0).toUpperCase() 取得value字符串索引为0的字符并大写
                              //value.slice(1) 除首位之后该字符串剩下的部分
                      },
                      lastUpper: function (value) { //自定义末尾字母大写函数
                          if(!value) return ‘‘; //value不存在返回‘‘
                          value = value.toString();
                          let len = value.length;
                          return value.slice(0,(len-1)) + value.charAt(len-1).toUpperCase();
                      },
                      uppercase: function (value) {  //自定义字符大写函数
                          if(!value) return ‘‘; //value不存在返回‘‘
                          value = value.toString();
                          let newStr = ‘‘;
                          for(let i=0;i<value.length;i++){
                              newStr += value.charAt(i).toUpperCase();
                          }
                          value = newStr;
                          return value;
                      },
                      isUppercase: function (value, bool) {  //自定义是否字符大写函数
                          //默认第一个参数为筛选器的值 筛选器传递的第一个实参会作为过滤方法的第二个形参,以此对应
                          if(!value) return ‘‘; //value不存在返回‘‘
                          value = value.toString();
                          let newStr = ‘‘;
                          if(bool){
                              for(let i=0;i<value.length;i++){
                                  newStr += value.charAt(i).toUpperCase();
                              }
                              value = newStr;
                          }
                          return value;
                      }
                  }
              }) 

				
时间: 2024-10-06 13:39:17

ch3-模板语法的相关文章

Angular 2 模板语法与常用指令简介

一.模板语法简介 插值表达式 <div>Hello {{name}}</div> 等价于 <div [textContent]="interpolate(['Hello'], [name])"></div> 模板表达式 1.属性绑定 1.1输入属性的值为常量 <show-title title="Some Title"></show-title> 等价于 <show-title [titl

vue.js 学习之模板语法详解

本文和大家分享的主要是vue.js 的模板语法,希望对大家学习vue.js有所帮助,一起来看看吧. Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析. 在底层的实现上, Vue 将模板编译成虚拟 DOM 渲染函数.结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上. 如果你熟悉虚拟 D

django之定义模板语法08({{ string | truncatewords:&#39;2&#39; }})

#index页面代码: <html> <head> <title>DOcument</title> </head> <body> <h1>{{user}}</h1> </br> </br> <h1>过滤器</h1> <p>{{ string | truncatewords:'2' }}</p> //显示前2个字(非字母) </body

vue 模板语法

模板语法 Vue.js使用了基于HTML的模板语法,允许开发者声明式将DOM绑定至底层Vue实例的数据.所有Vue.js的模板都是合法的HTML,所以可以被遵循规范的浏览器和HTML解析器解析. 在底层的实现上,Vue将模板编译成虚拟DOM渲染函数.结合响应系统,在应用系统改变时,Vue能够智能计算出重新渲染组件的最小代价并应用到DOM操作上. 插值 #文本 数据绑定最常见的形式就是使用"Mustache"语法(双大括号)的文本插值: {{msg}} 通过使用v-once指令,你也能执

模板语法

Vue.js使用了基于HTML的模板语法,允许开发者声明式地将DOM绑定至底层Vue实例的数据.所有Vue.js的模板都是合法的HML,所以能被遵循规范的浏览器和HTML解析器解析. 在底层的实现上,Vue将模板编译成虚拟DOM渲染函数.结合响应系统,在应用状态改变时,Vue能够智能地计算出重新渲染组件的最小代价并应用到DOM操作上. 如果你熟悉虚拟DOM 并且偏爱JavaScript的原始力量,你也可以不用模板,直接写渲染(render)函数,使用可选的JSX语法. 插值: 文本: 数据绑定最

Vue常用模板语法

常用模板语法 本篇将在上一篇的基础上记录文本渲染.表达式.过滤器以及常用指令的简单用法. 一.文本渲染 Vue支持动态渲染文本,即在修改属性的同时,实时渲染文本内容.同时为了提高渲染效率,也支持只渲染一次,即第一次渲染出文本后,文本内容不再跟随属性值的变化而变化. 实时渲染 1 <div class="row"> 2 <h2>文本 - 实时渲染</h2> 3 <input type="text" v-model="

angular2的模板语法

Angular 应用管理着用户之所见和所为,并通过 Component 类的实例(组件)和面向用户的模板来与用户交互. 从使用模型-视图-控制器 (MVC) 或模型-视图-视图模型 (MVVM) 的经验中,很多开发人员都熟悉了组件和模板这两个概念. 在 Angular 中,组件扮演着控制器或视图模型的角色,模板则扮演视图的角色. 来看看写视图的模板都需要什么.本章将覆盖模板语法中的下列基本元素 HTML 是 Angular 模板的语言.快速起步应用的模板是纯 HTML 的: <h1>Hello

discuz门户首页-header文件模板语法详解和注释

header文件引用了跟多通用模板,所以整个文章会很长,现在比较忙,注释工作会不定期进行 首先开下门户首页的文件 portal里面的index.htm <!--{template common/header}--> //引用common文件下的header.htm这个也是引用模板文件的一种常用方法 <style id="diy_style" type="text/css"></style> //没什么用 <div class

angular2系列教程(二)模板语法

今天我们要讲的是angualr2的模板语法,官网写的很清楚,但我也用通俗易懂的讲法再罗列一下吧! 例子 源代码 运行方法: npm install npm run play 打开8080端口.这个例子是我写的小demo,介绍了常用的几种模板语法. 属性绑定 不需要特别的指令,只需要用[value]就可以了,并不只有value,[]里面可以是任何常用的html元素的属性! src/app.html <input [value]="firstName" [placeholder]=&

Django 模板语法取值

1.models.py class Business(models.Model):     prodline = models.CharField(max_length=32)     code =models.CharField(max_length=32,null=True,blank=True) class Host(models.Model):     nid = models.IntegerField(primary_key=True)     hostname = models.Ch