初步了解(一)vue.js关于vue2.5

首先到官网https://cn.vuejs.org/下载,引入的vue.js最好放在head中 可以防止页面抖屏,怎么使用vue呢,那么就要创建一个实例 new vue({必须要有el,el表示我要vue去接管哪个元素,el就是element})给div加一个id=“test”,那么el:"#test"表示el去接管ID为test这个元素中的内容

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>vue入门</title>
    <script src="./vue.js"></script>
</head>

<body>
    <div id="test"><h1>输出{{msg}}</h1></div>
    <script>
        new Vue({
            el: "#test",
            data: {
                msg: "hello word"
            }
        })
    </script>
</body>

</html>

先讲一下挂载点 、模板、 实例之间的关系<div id="test"></div>这个通过el进行绑定就是vue的挂载点,有什么用呢,如果在下面<div id="test"></div>再输入<div>{{msg}}</div>,那么页面中只会原样输出显示{{msg}},vue只会处理挂载点下面的内容,挂载点就是实例vue后面的el属性后面id所对应的dom节点,如果在挂载点里面添加一个h1标签,<div id="test"><h1>输出{{msg}}</h1></div>,其中div里面中的所有标签都叫做模板,还可以这样编写,我把模板放在vue的实例中去编写,写上template:'<h1>输出{{msg}}</h1>'这样就不用在挂载点下面去写这个模板了,模板就是挂载点内部的内容,模板可以有两种写法,一种写在挂载点的内部,一种可以写在vue实例中的template属性中,实例中你只需要指定一个挂载点,把模板写上,vue就会结合你的数据和模板自动将你的内容放在挂载点之中
vue实例中的数据、事件和方法,在实例中的数据项中我们可以配置任意的数据名字,如number,那么我们就可以通过插值表达式{{number}}的形式来表示,也可以通过v-text来表示,这个是vue中的一个指令,后面跟的是一个变量,<div id="test"><h1 v-text="number"></h1></div>,换成v-html也是同样的效果,实例中data的数据

data: {
                msg: "hello word"
                number:123
            }

那么v-text和v-html中有什么不同呢,如,<div id="test"><div>{{content}}</div></div>

data: {
               content:"<h1>hello</h1>"
            }

v-text显示的内容是转义的内容:<h1>hello</h1>,v-html不会显示转义的内容:hello,说明v-text会将显示的内容进行一次转义,而v-html不会显示转义的内容
新的模板指令,v-on:表示的是绑定事件,这个也可以简写成@,v-on:click=“handleClick”表示点击事件,可简写成@click=“handleClick”,那么怎么实现这个绑定事件呢,就要写在vue实例中methods对象里面

methods:{
handleClick:function(){
alert(123)
}
}

如果我们想点击了这个事件我们想改变这个内容,那么可以通过this.来改变

new Vue({
            el: "#test",
            data: {
                content: "hello"
            },
            methods: {
                handleClick: function () {
                    this.content = "world"
                }
            }
        })

vue中的属性绑定和双向数据绑定,如果<div id="test"><div title="title"></div></div>

data:{
title:"this is title"

这样看似可以,但是还是会显示title,不会显示this is title,这样是因为没有将数据绑定,可以通过v-bind:title=“title”,这样就会显示this is title,这样绑定后title就是js表达式了,既然是表达式了,那么就可以在后面添加其他,如<div id="test"><div v-bind:title="'test'+title">hello</div></div>这样就会显示testthis is title,使用了模板指令,那么他后面就是js表达式了,在vue指令中v-bind:可以缩写成:这就是属性绑定了,接下来什么是双向绑定呢?比如:<input :value="content"/><div>{{content}}</div>

data:{
content:"this is content"
}

这样input框只会显示this is content,并不能输入什么就改变什么,这样vue提供了一个指令v-model可以来实现,这样<input v-model="content"/><div>{{content}}</div>如果input框中的内容改变的话,那么下面的div中的内容也会改变
vue中的计算属性和侦听器的使用,<input v-model="firstname"/><input v-model="lastname"/><div>{{firstname}}{{lastname}}</div>

data:{
firstname:'',
lastname:''
}

这样虽然可以拼接写成数据,但是这样会觉得代码冗余,这样我们怎么可以通过计算得到fullname呢,我们进行改写下<input v-model="firstname"/><input v-model="lastname"/><div>{{fullname}}</div>那么就需要在computed属性中这样写,

data:{
firstname:'',
lastname:''
},
computed:{
fullname:function(){
return this.firstname+' '+this.lastname
}
}

这样写有一个好处,就是如果两个没改变,就会显示上次的缓存值,只有当其中一个或是都改变了才会重新计算,侦听器的使用是通过watch的定义来使用的,侦听器的作用是侦听某一个数据的变化,一旦这个数据发生了变化,那么我们就可以在watch中去侦听我们的逻辑,如侦听fullname的变化

data:{
firstname:'',
lastname:''
},
computed:{
fullname:function(){
return this.firstname+' '+this.lastname
}
},
watch:{
fullname:function()
{
this.count ++
}
}

常见的三个指令:v-if v-show v-for<div>hello</div><button>test<button>怎么让点击这个按钮后显示或隐藏hello呢,通过v-if来控制,<div v-if="show">hello</div><button @click="handleClick">test<button>
data: {
show: true
},
methods: {
handleClick: function () {
this.show = !this.show;
}
}
如果把v-if换成v-show发现页面并没有什么区别,仔细看在控制台会发现不同,v-if表示当为false的时候,你会发现这个标签将会从dom节点中移除,v-show表示当为false的时候,你会发现虽然被隐藏,但不会从dom节点中移除,只是将div的属性改为隐藏(display=none),如果频繁点击的话,使用v-if好还是v-show好呢,当然是v-show,不会这样可以增加删除,提高性能,如果你只做一次的显示隐藏可以选择v-if是个更好的选择,v-for的使用

<ul>
<li v-for="item of list">{{item}}</li>
</ul>

item of list表示循环list中的数据项,每一次的循环中的内容会放到item这个变量中去

data: {
list:[1,2,3]
      }

使用v-for时最好加一个 :key=“”会提升每一项的性能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值