2,声明式渲染

199 阅读3分钟

模板字符串:

js语法

允许嵌入表达式的字符串字面量

反引号 ( ) 来代替普通字符串中的用双引号和单引号

形式:name: ${name}

Mustache:

前端模板引擎,用于html {{ }}

vue:

name: {{ name }}

常用指令:

v-if:组件销毁并重建

v-show: 切换display属性

v-for:
key是必须的
不要与v-if同时存在于一个元素上

当 Vue 正在更新使用 v-for 渲染的元素列表时,它默认使用“就地更新”的策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序,而是就地更新每个元素,并且确保它们在每个索引位置正确渲染。

这个默认的模式是高效的,但是只适用于不依赖子组件状态或临时 DOM 状态 (例如:表单输入值) 的列表渲染输出

v-bind:

:src

v-on:

@click

$event: DOM 事件

v-model:
实现表单输入与应用状态的双向绑定,
可通过v-bind: 和 v-on:实现

-   text 和 textarea 元素使用 `value` property 和 `input` 事件;
-   checkbox 和 radio 使用 `checked` property 和 `change` 事件;
-   select 字段将 `value` 作为 prop 并将 `change` 作为事件。

v-pre:
跳过这个元素和它的子元素的编译过程。
跳过大量没有指令的节点会加快编译。

v-once:
只渲染元素和组件一次。
随后的重新渲染,元素/组件及其子节点会当作静态内容并跳过。
用于性能优化,但是慎用。以防他人更改代码时注意不到改指令。

Vue几种常用的指令:

1、v-if: 组件被销毁并重建。

2、v-show:切换元素的 display CSS 属性。

3、v-for:vue 2.0以上必须需配合 key值 使用。且不要与v-if同时存在于一个元素上

4、v-bind:

5、v-on:

6、v-model:实现表单输入和应用状态之间的双向绑定。可通过v-bind:value 和 v-on:input实现

7、v-pre:跳过这个元素和它的子元素的编译过程。可以用来显示原始 Mustache 标签。跳过大量没有指令的节点会加快编译。

8、v-once:只渲染元素和组件一次。随后的重新渲染,元素/组件及其子节点会当作静态内容并跳过。用于性能优化,但是慎用。以防他人更改代码时注意不到改指令。

Vue常用的修饰符:

v-on 指令常用修饰符:

1、.stop -调用 event.stopPropagation(),禁止事件冒泡。

2、.prevent -调用 event.preventDefault(),阻止事件默认行为。

3、.capture -添加事件侦听器时使用 capture 模式。

4、.self -只当事件是从侦听器绑定的元素本身触发时才触发回调。

5、.{keyCode | keyAlias} -只当事件是从特定键触发时才触发回调。

6、.native -监听组件根元素的原生事件。

7、.once -只触发一次回调。

8、.left - (2.2.0)只当点击鼠标左键时触发。

9、.right - (2.2.0)只当点击鼠标右键时触发。

10、.middle - (2.2.0)只当点击鼠标中键时触发。

11、.passive - (2.3.0)以 { passive: true } 模式添加侦听器, 执行默认行为

(注意!) 如果是在自己封装的组件或者是使用一些第三方的UI库时,会发现并不起效果,这时就需要用其他的了

.native修饰符了,如:

//使用示例:

<el-input

  v-model="inputName"

placeholder="搜索你的文件"

  @keyup.enter.native="searchFile(params)"

 >

v-bind指令常用修饰符:

1、.prop -被用于绑定 DOM 属性 (property)。(差别在哪里?)

2、.camel - (2.1.0+)将 kebab-case 特性名转换为 camelCase. (从 2.1.0 开始支持)

3、.sync (2.3.0+)语法糖,会扩展成一个更新父组件绑定值的 v-on 侦听器。

v-model指令常用修饰符:

1、.lazy -取代 input 监听 change 事件

2、.number -输入字符串转为数字

3、.trim -输入首尾空格过滤

而且v-on可以监听多个方法,例如:

<input type="text" :value="name" @input="onInput" @focus="onFocus" @blur="onBlur" />

但是同一种事件类型的方法,只会响应第一个,例如:

<a href="javascript:;" @click="methodsOne" @click="methodsTwo">

只会响应methodsOne方法