zoukankan      html  css  js  c++  java
  • Vue-语法

    一、基本语法

      1. 每个 Vue 应用都需要通过实例化 Vue 来实现

      2. el 参数,它是 DOM 元素中的 id,意味着我们接下来的改动全部在以上指定的元素内,元素外部不受影响

      3. data用于定义属性

      4. methods 用于定义的函数,可以通过 return 来返回函数值。

      5. {{ }} 用于输出对象属性和函数返回值

      6. 除了数据属性,Vue 实例还提供了一些有用的实例属性与方法。它们都有前缀 $,以便与用户定义的属性区分开来。

    二、模板语法:

      1. 文本:数据绑定最常见的形式就是使用 {{...}}(双大括号)的文本插值

      2. html:使用 v-html 指令用于输出 html 代码

      3.属性:HTML 属性中的值应使用 v-bind 指令

      4. 表达式:Vue.js 都提供了完全的 JavaScript 表达式支持。例如:数字加、三木,字符反转。

      5. 指令:指令是带有 v- 前缀的特殊属性,例如:v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素

      6. 参数:参数在指令后以冒号指明。例如:href 是参数,告知 v-bind 指令将该元素的 href 属性与表达式 url 的值绑定;v-on 指令,它用于监听 DOM 事件

      7. 修饰符:修饰符是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。例如,.prevent 修饰符告诉 v-on 指令对于触发的事件调用 event.preventDefault()

      8. 用户输入:在 input 输入框中我们可以使用 v-model 指令来实现双向数据绑定;

        v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。

        按钮的事件我们可以使用 v-on 监听事件,并对用户的输入进行响应。

      9. 过滤器:Vue.js 允许你自定义过滤器,被用作一些常见的文本格式化。由"管道符"指示, 格式如下:

    <!-- 在两个大括号中 -->
    {{ message | capitalize }}
    <!-- 在 v-bind 指令中 -->
    <div v-bind:id="rawId | formatId"></div>

        过滤器函数接受表达式的值作为第一个参数。例如:对输入的字符串第一个字母转为大写;

        过滤器可以串联:{{ message | filterA('arg1', arg2) }},这里,message 是第一个参数,字符串 'arg1' 将传给过滤器作为第二个参数, arg2 表达式的值将被求值然后传给过滤器作为第三个参数。

      10. 缩写:Vue.js 为两个最为常用的指令提供了特别的缩写:

    <!-- 完整语法 -->
    <a v-bind:href="url"></a>
    <!-- 缩写 -->
    <a :href="url"></a>
    <!-- 完整语法 -->
    <a v-on:click="doSomething"></a>
    <!-- 缩写 -->
    <a @click="doSomething"></a>

    三、vue.js条件判断与循环:

      1. 条件判断:v-if、v-else、v-else-if、v-show

        条件判断使用 v-if 指令;v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素

        可以用 v-else 指令给 v-if 添加一个 "else" 块

        v-else-if 在 2.1.0 新增,顾名思义,用作 v-if 的 else-if 块。可以链式的多次使用:

        我们也可以使用 v-show 指令来根据条件展示元素:

      <div v-if="type === 'A'">A</div>
      <div v-else-if="type === 'B'">B</div>
      <div v-else-if="type === 'C'">C</div>
      <div v-else> Not A/B/c</div>
      <h1 v-show="ok">Hello!</h1>

      2. 循环语句:

        循环使用 v-for 指令。v-for 指令需要以 site in sites 形式的特殊语法, sites 是源数据数组并且 site 是数组元素迭代的别名。

        v-for 可以通过一个对象的属性来迭代数据:

    四、vue.js计算属性:

      计算属性关键词: computed。计算属性在处理一些复杂逻辑时是很有用的。例如:反转字符串

      可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。可以说使用 computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。

    五、vue.js监听属性:

       Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化。

      可以通过使用 watch 实现计数器;可以进行千米之间的换算:

    六、vue.js样式绑定:

        class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性。

        Vue.js v-bind 在处理 class 和 style 时, 专门增强了它。表达式的结果类型除了字符串之外,还可以是对象或数组。

      1. class 属性绑定:

        可以为 v-bind:class 设置一个对象,从而动态的切换 class;也可以在对象中传入更多属性用来动态切换多个 class ;也可以直接绑定数据里的一个对象;此外,我们也可以在这里绑定返回对象的计算属性。这是一个常用且强大的模式。

      2. 数组语法:

        可以把一个数组传给 v-bind:class ;还可以使用三元表达式来切换列表中的 class 

      3.vue.js style(内联样式):

        可以在 v-bind:style 直接设置样式;

        也可以直接绑定到一个样式对象,让模板更清晰;

        v-bind:style 可以使用数组将多个样式对象应用到一个元素上;

    七、vue.js事件处理器:

      1.   事件监听可以使用 v-on 指令;通常情况下,我们需要使用一个方法来调用 JavaScript 方法。

        v-on 可以接收一个定义的方法来调用。

        除了直接绑定到一个方法,也可以用内联 JavaScript 语句

      2. 事件修饰符:.stop、.prevent、.capture、.self、.once

        Vue.js 为 v-on 提供了事件修饰符来处理 DOM 事件细节,如:event.preventDefault() 或 event.stopPropagation()。

        Vue.js通过由点(.)表示的指令后缀来调用修饰符。

    <!-- 阻止单击事件冒泡 -->
    <a v-on:click.stop="doThis"></a>
    <!-- 提交事件不再重载页面 -->
    <form v-on:submit.prevent="onSubmit"></form>
    <!-- 修饰符可以串联  -->
    <a v-on:click.stop.prevent="doThat"></a>
    <!-- 只有修饰符 -->
    <form v-on:submit.prevent></form>
    <!-- 添加事件侦听器时使用事件捕获模式 -->
    <div v-on:click.capture="doThis">...</div>
    <!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
    <div v-on:click.self="doThat">...</div>
    
    <!-- click 事件只能点击一次,2.1.4版本新增 -->
    <a v-on:click.once="doThis"></a>

      3. 按键修饰符:.enter、.enter、.tab、.delete 、.esc、.space、.up、.down、.left、.right、.ctrl、.alt、.shift、.meta

        Vue 允许为 v-on 在监听键盘事件时添加按键修饰符

    八、 vue.js表单:

        可以用 v-model 指令在表单控件元素上创建双向数据绑定;v-model 会根据控件类型自动选取正确的方法来更新元素。

      1. input 和 textarea 元素中使用 v-model 实现双向数据绑定

      2. 复选框如果是一个为逻辑值,如果是多个则绑定到同一个数组

      3. 单选按钮的双向数据绑定

      4. 下拉列表的双向数据绑定

      5. 修饰符:

        .lazy:在默认情况下, v-model 在 input 事件中同步输入框的值与数据,但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步

        .number:如果想自动将用户的输入值转为 Number 类型(如果原值的转换结果为 NaN 则返回原值),可以添加一个修饰符 number 给 v-model 来处理输入值

        .trim:如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入

    <!-- 在 "change" 而不是 "input" 事件中更新 -->
    <input v-model.lazy="msg" >
    <input v-model.number="age" type="number">
    <input v-model.trim="msg">

    九、vue.js组件:

        组件(Component)是 Vue.js 最强大的功能之一。

        组件可以扩展 HTML 元素,封装可重用的代码。

        组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树

      注册一个全局组件语法格式如下:Vue.component(tagName, options),tagName 为组件名,options 为配置选项。注册后,我们可以使用以下方式来调用组件:<tagName></tagName>

      1. 全局组件:所有实例都能用全局组件。

      2. 局部组件:可以在实例选项中注册局部组件,这样组件只能在这个实例中使用。

      3. Prop:

        prop 是父组件用来传递数据的一个自定义属性。

        父组件的数据需要通过 props 把数据传给子组件,子组件需要显式地用 props 选项声明 "prop":

      4. 动态Prop:

        类似于用 v-bind 绑定 HTML 特性到一个表达式,也可以用 v-bind 动态绑定 props 的值到父组件的数据中。每当父组件的数据变化时,该变化也会传导给子组件

        注意: prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。

      5. Prop验证:

          组件可以为 props 指定验证要求。

          为了定制 prop 的验证方式,你可以为 props 中的值提供一个带有验证需求的对象,而不是一个字符串数组。

          当 prop 验证失败的时候,(开发环境构建版本的) Vue 将会产生一个控制台的警告。

        type 可以是下面原生构造器:String、Number、Boolean、Array、Object、Date、Function、Symbol

        type 也可以是一个自定义构造器,使用 instanceof 检测。

    Vue.component('my-component', {
      props: {
        // 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证)
        propA: Number,
    }

      6. 自定义事件:

        父组件是使用 props 传递数据给子组件,但如果子组件要把数据传递回去,就需要使用自定义事件!

        我们可以使用 v-on 绑定自定义事件, 每个 Vue 实例都实现了事件接口(Events interface),即:

          使用 $on(eventName) 监听事件

          使用 $emit(eventName) 触发事件

        另外,父组件可以在使用子组件的地方直接用 v-on 来监听子组件触发的事件。

    十、vue.js 自定义指令:

        除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令。

        我们可以注册一个全局指令 v-focus, 该指令的功能是在页面加载时,元素获得焦点;我们也可以在实例使用 directives 选项来注册局部指令,这样指令只能在这个实例中使用

      1. 钩子函数:

        指令定义函数提供了几个钩子函数(可选):

          bind: 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。

          inserted: 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于 document 中)。

          update: 被绑定元素所在的模板更新时调用,而不论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新(详细的钩子函数参数见下)。

          componentUpdated: 被绑定元素所在模板完成一次更新周期时调用。

          unbind: 只调用一次, 指令与元素解绑时调用。

      2. 钩子函数参数:

        el: 指令所绑定的元素,可以用来直接操作 DOM 。

        binding: 一个对象,包含以下属性:

          name: 指令名,不包括 v- 前缀。

          value: 指令的绑定值, 例如: v-my-directive="1 + 1", value 的值是 2

          oldValue: 指令绑定的前一个值,仅在 update 和 componentUpdated 钩子中可用。无论值是否改变都可用。

          expression: 绑定值的表达式或变量名。 例如 v-my-directive="1 + 1" , expression 的值是 "1 + 1"

          arg: 传给指令的参数。例如 v-my-directive:foo, arg 的值是 "foo"

          modifiers: 一个包含修饰符的对象。 例如: v-my-directive.foo.bar, 修饰符对象 modifiers 的值是 { foo: true, bar: true }

        vnode: Vue 编译生成的虚拟节点。

        oldVnode: 上一个虚拟节点,仅在 update 和 componentUpdated 钩子中可用。

  • 相关阅读:
    Centos7安装gitlab私服
    SpringBoot2.x开发WebSocket
    java中 DecimalFormat格式的定义
    Docker部署Reids实战单机、集群
    CCF地铁修建
    C题:A Water Problem(dp||搜索)
    A题:Common Substrings(KMP应用)
    HDU 1879 继续畅通工程(Prim||Kruscal模板题)
    魔兽世界之一:备战(模拟)
    F题:等差区间(RMQ||线段树)
  • 原文地址:https://www.cnblogs.com/luliang888/p/11279819.html
Copyright © 2011-2022 走看看