Vue.js基础学习-1

Posted WEB学习小助手

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue.js基础学习-1相关的知识,希望对你有一定的参考价值。

简介

vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同,vue被设计为可以自底向上逐层应用。

vue的核心库只关注视图层,不仅易于上手还便于与第三方库或既有项目整合。

起步

<script ></script>

<div id="vue-app2">

    <h1>site:{{site}}</h1>

    <h1>url:{{url}}</h1>

    <h1>details:{{details()}}</h1>

</div>

<script>

var app2 = new Vue({ //每个Vue应用都需要通过实例化Vue来实现

el:'#vue-app2',  //Vue构造器中的el 是DOM元素中的id

data:{   //data 用于定义属性

site:"百度一下",

url:"www.baidu.com",

alexa:"10000"

},

methods:{ //methods:用来定义方法

details:function(){

return this.site+"-学的不是技术,更是梦想";

}

}

});

</script>

语法模板

1、vue.js的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进DOM系统。表达式{{..}}:是数据绑定最常用的形式;

v-html: 指令用于输出html代码;

v-bind: 指令绑定属性和数据,可以用来响应地更新HTML属性,v-bind:id 简写为:id;

2、指令

带有‘v-’前缀的特殊属性。指令用于在表达式的值改变时,将某些行为应用到DOM上。

v-if:z指令将根据表达式的结果来决定是否插入p元素。

例子:<p v-if="isRight">true为插入,false为不插入p元素。</p>

3、参数:

参数在指令后以‘:’冒号指明;

例子:<a v-bind:href="url">元素的href属性与表达式url的值绑定</a>

给元素绑定href属性的同时,还可以绑定target属性

v-on:指令用于监听DOM事件,参数是监听事件名。

<a v-on:click="doSomething">百度</a>

v-model: 在输入框中使用该指令来实现双向数据绑定;

4、过滤器:

由‘管道字符’表示

在表达式中:{{ message | capitalize }} 字符串第一个字母转为大写。

在v-bind指令中:<div v-bind:id="rawid | formatId"></div>

过滤器是javascript函数,因此可以接受参数

{{ message | filter('arg1',arg2) }} message是第一个参数,字符串‘arg1’将传给过滤器作为第二个参数,arg2表达式的值将被求值后传给过滤器作为第三个参数。

5、缩写

v-bind缩写:

<a v-bind:href="url"></a> ==><a :href="url"></a>

v-on缩写:

<a v-on:click="doSomething"></a> ==><a @:click="doSomething"></a>

vue.js条件与循环

<div id="vue-app1">

<p v-if="isSee">是否看得见</p>

    <template v-if="ok">

<h1>这里是标题</h1>

        <p>这里是模板文章</p>

</template>

</div>

<script>

  var app1 = new Vue({

 el:'#vue-app1',

 data:{

 isSee:true,

 ok:true

 }

 });

</script>

v-else :该指令给v-if指令添加‘else’块

<div id="vue-app2">

<div v-if="num > 0.5">

    是 number= {{num }}

    </div>

    <div v-else>

    否 number= {{num }}

    </div>

</div>//结果:是

<script>

var app2 = new Vue({

el:'#vue-app2',

data:{

num:Math.random() //给数据绑定到num

}

});

</script>

v-else-if:该指令用作‘else-if’块;

v-else和v-else-if必须跟在v-else或者v-else-if块之后

v-show: 指令根据条件展示元素
循环条件

v-for:可以绑定数据到数组来渲染一个列表,需要以site in sites 形式的特殊语法,sites是数据源数组并且site是数组元素迭代的别名。

<div id="vue-app3">

<ul>

<template v-for="site in sites"> //模板中使用v-for

    <li>{{site.name}}</li>

            <li>-------</li>

    </template>

    </ul>

</div>

<script>

var app3 = new Vue({

el:'#vue-app3',

data:{sites:[

{name:'lili1'},

{name:'lili2'},

{name:'lili3'}

]

}

});

</script>

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

提供第二个参数为键名:

Vue.js基础学习-1

提供第三个参数为索引:

Vue.js基础学习-1


Vue.js基础学习-1

v-for迭代整数:

Vue.js基础学习-1

v-for:还可以循环数组;

<li v-for="n in [1,3,5,10]">{{n}}</li>

注释:

①、在迭代属性输出的之前,v-for会对属性进行升序排序输出。

②、v-for默认行为试着不改变整体,而是替换元素。迫使其重新排序的元素,你需要提供一个key的特殊属性。

<div v-for="item in items" :key="item.id">  {{ item.text }}</div>

计算属性

计算属性用于处理一些复杂逻辑,关键词:computed

Vue.js基础学习-1

①、该实例声明了一个计算属性:reverseMessage,提供的函数将作用域app5.reverseMessage的getter。app5.reverseMessage的getter将依赖于app5.message,在app5.message发生改变时,app5.reverseMessage也将发生更新。

②、this指向app5实例

Vue.js基础学习-1

computed VS methods

效果一样,但是computed性能更好,computed是基于它的依赖缓存,只有相关的依赖发生改变时才会重新取值,而使用methods,在重新渲染的时候,函数总会重新调用执行。如果不想被缓存就是用methods属性。

监听属性

可以通过watch来响应数据变化;

watch是一个对象,有键,有值;

键:将要监控的名称,或者是data中的某个变量。

值:①、可以是函数,监控变化时要执行的函数,有两个参数,第一个是当前值,第二个是变化后的值;

       ②、可以是函数名,函数名要用单引号包裹;

       ③、包括选项的对象:

         a:handler:其值是一个回调函数,即监听到变化时应该执行的函数。

         b:deep:其值是true或false,确定是否深入监听(一般监听时时不能监听到对象属性值变化的,数组的值变化可以监听到。)

         c:immediate:其值是true或false,确定是否以当前的初始值执行handler函数。

Vue.js基础学习-1

实例一:实现数据绑定,当表单数据改变时执行函数功能。

<div id="app1">

<input type="text" v-model="text">

    <p>{{text}}</p>

</div>

<script>

var app1 = new Vue({

el:'#app1',

data:{  //定义数据

text:'请输入内容: '

},

                methods:{ //定义方法

showTip:function(){

alert(11);

}

},

watch:{

text:'showTip' //监听,值为函数名

}

});

</script>

实例二:

Vue.js基础学习-1

watch对象创建了两个方法kilomerters和meters,当我们在输入框输入数据时,watch会实时监听数据变化并改变自身的值,

样式绑定

class属性绑定:

1、为v-bind:class设置一个对象,从而动态切换class

Vue.js基础学习-1

该实例相当于<div class="active"></div>

2、也可以直接绑定数据里的一个对象

Vue.js基础学习-1

3、可以绑定返回对象的计算属性,这是一个常用而且强大的模式

Vue.js基础学习-1

4、数组语法

<div v-bind:class="[ activeClass,errorClass ]"></div>

5、用三元表达式切换列表中的class

<div v-bind:class="{ errorClass,isActive ? activeClass : '' }"></div>

style内联样式

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

<div id="vue-app1">

<div v-bind:style="{color:activeColor,fontSize:fontSize+'px'}">内容一</div>

</div>

<script>

new Vue({

el:'#vue-app1',

data:{

activeColor:'red',

fontSize:20

}

});

</script>

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

<div v-bind:style="styleObject"></div>

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

<div id="app">

    <div v-bind:sytle="[ baseStyle, extendStyle]">WEB学习小助手</div>

</div>

注:v-bind:动态绑定指令,默认情况下标签自带属性的值是固定的,在为了能够动态的给这些属性添加值,可以使用v-bind:你要动态变化的值=‘表达式’

事件处理器

v-on:事件监听指令

1、v-on接收一个定义的方法:

methods: 对象中定义方法;

this: 在当前的方法里指向Vue实例;

event: 是原生的DOM事件;

表单

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

①、双向数据绑定

<div id="app1">

<p>姓名</p>

    <input type="text" v-model="name">

    <p>信息:{{ name }}</p>

    <input type="text" v-model="pubNumber">

    <p>信息:{{ pubNumber }}</p>

</div>

<script>

new Vue({

el:'#app1',

data:{

name:'WEB学习小助手', 

pubNumber:'Webnetwork' 

}

});

</script>

②、复选框中的数据绑定

    <p>单个复选框:</p>

    <input type="checkbox" id="check" v-model="checked">

    <label for="check">{{checked}}</label>

    <p>多个复选框:</p>

    <input type="checkbox" id="check1" value="语文" v-model="checkNames">

    <labelfor="check1">语文</label>

     <input type="checkbox" id="check2"  value="数学" v-model="checkNames">

    <label for="check2">数学</label>

     <input type="checkbox" id="check3"  value="英语" v-model="checkNames">

    <label for="check3">英语</label>

    <p>您选择的值为:{{checkNames}}</p>

</div>

<script>

new Vue({

el:'#app1',

data:{

checked:false,

checkNames:[]

}

});

</script>

结果:

③、单选按钮中的数据绑定

    <p>单选按钮:</p>

    <input type="radio" id="radio1" value="语文" v-model="radioName">

    <label for="radio1">语文</label>

     <input type="radio" id="radio2"  value="数学" v-model="radioName">

    <label for="radio2">数学</label>

    <p>您选择的值为:{{radioName}}</p> 

</div>

<script>

new Vue({

el:'#app1',

                data:{

radioName:'语文'   //实现单选的功能

        }

});

</script>

④、下拉框中的数据绑定

<div id="app2">

<select v-model="selected" name="fruit">

    <option value="">请选择爱吃的水果:</option>

    <option value="西瓜">西瓜</option>

        <option value="香蕉" >香蕉</option>

        <option value="草莓" >草莓</option>

    </select>

    <p>您选择的水果是:{{selected}}</p>

</div>


<script>

new Vue({

el:'#app2',

data:{

selected:'' //在js中给selected赋初始值为空,实现数据绑定

}

});

</script>

修饰符:

①、.lazy: 转变为在change事件中同步;

②、.number : 自动将用户的输入值转为Number类型(如果原值的转换结果为NaN则返回原值);

③、.trim: 自动过滤用户输入的首尾空格;


以上是关于Vue.js基础学习-1的主要内容,如果未能解决你的问题,请参考以下文章

vue.js基础学习

Vue.js基础学习-1

vue.js入门基础的学习心得,体会,笔记

Vue.js 基础学习 v-on 指令

Vue.js 基础入门

node+webpack环境搭建 vue.js 2.0 基础学习笔记