vue基础语法01

  • Post author:
  • Post category:vue


1. 模板语法

1.1 插值

1.1.1 插入文本内容

{

{msg}}、v-text

1.1.2 插入html代码

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

1.1.3 添加HTML属性.

通过v-bind:给标签添加HTML属性

1.1.4 表达式

Vue提供了完全的JavaScript表达式支持

{

{str.substr(0,6).toUpperCase()}}

{

{ number + 1 }}

{

{ ok ? ‘YES’ : ‘NO’ }}

1.2 指令

指的是带有“v-”前缀的特殊属性。

## demo2.html

1.2.1 核心指令

(v-if|v-else|v-else-if)/v-show/v-for/v-bind/v-on/v-model

v-if|v-else|v-else-if:根据其后表达式的bool值进行判断是否渲染该元素

他们只能是兄弟元素

v-else-if上一个兄弟元素必须是v-if

v-else上一个兄弟元素必须是v-if或者是v-else-if

v-show:与v-if类似,只是会渲染其身后表达式为false的元素,而且会给这样的元素添加css代码:style=”display:none”

案例:显示/隐藏 组件

v-for:类似JS的遍历,

遍历普通数组、遍历对象

v-bind

v-on

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

v-for/v-model一起绑定[多选]复选框和单选框

1.2.2 参数

一些指令能够接收一个“参数”,在指令名称之后以冒号表示,例如:

<a v-bind:href=”url”>…</a>

在这里href是参数,告知v-bind指令将该元素的href属性与表达式url的值绑定

<a v-on:click=”doSomething”>…</a>

在这里click参数是监听的事件名。


## demo4.html

1.2.3 动态参数

从2.6.0开始,可以用方括号括起来的JavaScript表达式作为一个指令的参数

<a v-bind:[attrname]=”url”> … </a>

同样地,你可以使用动态参数为一个动态的事件名绑定处理函数

<a v-on:[evname]=”doSomething”> … </a>

注1:动态参数表达式有一些语法约束,evName无效,evname有效,回避大写

1.2.4 简写

Vue为v-bind和v-on这两个最常用的指令,提供了特定简写

<a v-bind:href=”url”>…</a>

<a :href=”url”>…</a>

<a v-on:click=”doSomething”>…</a>

<a @click=”doSomething”>…</a>


## demo6.html

3. 过滤器

全局过滤器

Vue.filter(‘filterName’, function (value) {


// value 表示要过滤的内容

});

局部过滤器

new Vue({


filters:{‘filterName1’:function(value){}},

filters:{‘filterName2’:function(value){}}

});

vue允许你自定义过滤器,被用作一些常见的文本格式化,格式如下:

<!– 在两个大括号中 –>

{

{ name | capitalize }}

<!– 在 v-bind 指令中 –>

<div v-bind:id=”rawId | formatId”></div>

注1:过滤器函数接受表达式的值作为第一个参数

注2:过滤器可以串联

{

{ message | filterA | filterB }}

注3:过滤器是JavaScript函数,因此可以接受参数:

{

{ message | filterA(‘arg1’, arg2) }}

注4:js定义一个类

function Stu(){};

Stu.prototype.add(a,b){};//添加一个新的实例方法

案例:首字母大写/日期格式化


## demo7.html

4. 计算属性

计算属性可用于快速计算视图(View)中显示的属性。

这些计算将被缓存,并且只在需要时更新.

computed:{


xxx1:function(v){

},

xxx2:function(v){

}

}

xxx1和xxx2:是被监听的属性;

参数v同步被监听的属性。

注1:前端面试题:JS中的let和var的区别

{

var i = 9;

}

console.log(i);  // 9

ES6新增的let,可以声明块级作用域的变量

{

let i = 9;     // i变量只在 花括号内有效!!!

}

console.log(i);  // Uncaught ReferenceError: i is not defined

## demo8.html

5. 监听属性

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

xxx:代表被监听的属性,必须存在

watch:{


xxx:function(v){

}

}

小结:methods、computed、watch三者的区别及使用场景:

computed和watch是基于他的依赖进行缓存的,只有在他的的相关依赖发生改变的时候才会重新计算。如果他的相关依赖并没有发生改变,每次访问都是返回他的缓存的值。

methods则是每次触发重新渲染之后,调用方法会再次执行函数。

computed 和 watch 的相同和不同之处:

相同点:computed和watch 都是以vue的依赖追踪为基础的,都是希望当依赖发生改变的时候,发生改变;

不同点:watch一般是监听一个数据,从而影响多个数据;computed一般是计算一个属性,这个属性受多个数据影响。

一般使用computed,但是如果需要异步,或者数据开销太大的情况下,使用watch.

总结.

当我们不希望有缓存的时候,就使用methods

如果允许有缓存存在:computed>watch>methods;



版权声明:本文为m0_67514201原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。