Vue基础语法

1 什么是Vue

1.1 概念

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式的JavaScript框架

它的作者尤雨溪,于2015年发布1.0.0版本,2016年4月发布2.0版本,2020年9月发布3.0版本

1.2 特点

Vue是一个遵循MVVM模式的渐进式框架

Vue比较易学,体积更小,灵活,高效

Vue的本身只关注UI视图,可以更简单的导入Vue插件和第三方库

Vue通过Vue对象把数据和视图完全分离开来,对视图的改变无需在操作DOM元素,只需要操作对

应的数据,即可改变对应的视图结构,也就是通过双向数据绑定把View层和Model层连接了起

来,通过对数据的操作就可以完成对页面视图的渲染

2 数据渲染

2.1 vue.js引入

<script src="" target="_blank">https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

2.2 数据绑定

<!-- 视图层 -->

<div id="app">

{{ msg }}

</div>

2.3 Vue语法

data:所有要展示的数据都要放在data属性中

el:指定了元素的挂载点

// 1. 创建一个Vue实例

const vm = new Vue({

el: "#app", // 指定了数据所要渲染的视图

// 数据层

data: {

msg: "hello world"

}

});

3 指令

Vue中的指令是一个特殊的HTML标签属性,以 v- 开头,它可以绑定一个表达式,并且把一些特性

作用到DOM结构上去

可以把Vue中的指令理解为是对HMTL标签属性的扩展

3.1 v-cloak

作用:防止页面加载时出现闪烁的问题

<html>

<style type="text/css">

/*

1、通过属性选择器 选择到 带有属性 v-cloak的标签 让他隐藏

*/

[v-cloak]{

/* 元素隐藏 */

display: none;

}

</style>

<body>

<div id="app">

<!-- 2、 让带有插值语法的添加 v-cloak 属性,在数据渲染完成之后,v-cloak 属性会被自动去

除,

v-cloak一旦移除也就是没有这个属性了,属性选择器就选择不到该标签也就是对应的标签会变

为可见

-->

<div v-cloak >{{msg}}</div>

</div>

<script type="text/javascript" src="js/vue.js"></script>

<script type="text/javascript">

var vm = new Vue({

// el 指定元素 id 是 app 的元素

el: '#app',

// data 里面存储的是数据

3.2 v-text

v-text指令用于将数据填充到标签中,作用于插值表达式类似,但是没有闪动问题

v-text指令不解析HTML标签

注意:此处为单向绑定,数据对象上的值改变,插值会发生变化;但是当插值发生变化并不会影响

数据对象的值

<div id="app">

<!--

注意:在指令中不要写插值语法 直接写对应的变量名称;在 v-text中赋值的时候不要在写插值语法

在属性中不加 {{}} 直接写对应的数据名

-->

<p v-text="msg"></p>

<p>

<!-- Vue 中只有在标签的 内容中 才用插值语法 -->

{{msg}}

</p>

</div>

<script>

new Vue({

el: '#app',

data: {

msg: 'Hello Vue.js'

}

});

</script>

3.3 v-html

用法和v-text 相似 但是他可以将HTML片段填充到标签中

可能有安全问题, 一般只在可信任内容上使用 v-html ,永不用在用户提交的内容上

它与v-text区别在于v-text输出的是纯文本,浏览器不会对其再进行html解析,但v-html会将其当

html标签解析后输出。

<div id="app">

<p v-html="html"></p> <!-- 输出:html标签在渲染的时候被解析 -->

<p>{{message}}</p> <!-- 输出:<span>通过双括号绑定</span> -->

<p v-text="text"></p> <!-- 输出:<span>html标签在渲染的时候被源码输出</span> -->

</div>

<script>

let app = new Vue({

el: "#app",

data: {

message: "<span>通过双括号绑定</span>",

html: "<span>html标签在渲染的时候被解析</span>",

3.4 v-pre

显示原始信息跳过编译过程

跳过这个元素和它的子元素的编译过程。

一些静态的内容不需要编译加这个指令可以加快渲染

<div id="app">

<span v-pre>{{ this will not be compiled }}</span>

<!-- 显示的是{{ this will not be compiled }} -->

<span v-pre>{{msg}}</span>

<!-- 即使data里面定义了msg这里仍然是显示的{{msg}} -->

</div>

<script>

new Vue({

el: '#app',

data: {

msg: 'Hello Vue.js'

}

});

</script>

3.5 v-once

执行一次性的插值【当数据改变时,插值处的内容不会继续更新】

<div id="app">

<!-- 即使data里面定义了msg 后期我们修改了 仍然显示的是第一次data里面存储的数据即 Hello

Vue.js -->

<span v-once>{{ msg}}</span>

</div>

<script>

new Vue({

el: '#app',

data: {

msg: 'Hello Vue.js'

}

});

</script>

3.6 v-on

v-on这个指令是用来绑定事件的,可以简写成@

<div id="app">

<!-- 绑定点击事件数量进行自增或者自减 -->

<button v-on:click="num++">自增</button>

<!-- 简写 -->

<button @click="num--">自减</button>

<p>数量:{{ num }}</p>

3.7 v-show

v-show用来控制元素的显示与隐藏,如果值为true,元素显示;值为false,元素隐藏

<div id="app">

<div v-show="true">我是div元素</div>

</div>

<script>

const vm = new Vue({

el: "#app"

})

</script>

4 双向数据绑定

4.1 v-model指令

v-model实现数据和视图的双向绑定,即数据变了,视图会更新;视图更新了,数据会改变

注意:v-model指令只能用在表单元素上

<div id="app">

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

<div>{{ msg }}</div>

</div>

<script>

const vm = new Vue({

el: "#app",

data: {

msg: "hello world2"

}

})

</script>

5 Vue中的事件

5.1 事件的基本用法

vue中使用v-on指令来绑定事件,可以简写成@

在vue中所有的方法(函数)都要写在 methods 属性中

</div>

<script>

new Vue({

el: "#app",

data:{

num:1

}

})

</script>

5.2 事件函数传参

1. 传参

<div id="app">

<button @click="fn(3, 4)">点击</button>

</div>

<script>

const vm = new Vue({

el: "#app",

methods: {

fn(a, b) {

alert(a+b)

}

}

})

</script>

2. 事件对象

如果不传参数,事件处理函数的第一个参数就是事件对象

<div id="app">

<button @click="fn">点击</button>

</div>

<script>

const vm = new Vue({

el: "#app",

methods: {

fn(ev) { // 事件处理函数

// ev: 事件对象

console.log(ev)

}

}

})

</script>

如果传递参数,事件处理函数的最后一个参数就是事件对象,需要使用$event来接收

<div id="app">

<button @click="fn(3, 4, $event)">点击</button>

</div>

<script>

const vm = new Vue({

el: "#app",

methods: {

fn(a, b, ev) {

console.log(a, b, ev)

}

}

})

</script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值