前端三大框架:Angular.js、React.js、Vue.js,目前最热的是Vue,并且使用的热度还在递增中。

Vue已经将操作页面的方法封装好,我们只需要对数据进行修改就可以完成页面的显示。Vue核心思想:只要改变数据,页面就会发生改变

Vue的Js源码库:https://v2.cn.vuejs.org/v2/guide/installation.html

一、导入VUE

<script src="https://unpkg.com/vue/dist/vue.js"></script>

vue实例

  • el:vue接管的div元素,注:只可以接管一个div,所有需要vue处理的,必须需要这个div内。
  • data:存放数据
  • methods:方法

二、标签关联Vue

1、div标签关联vue

<body>
<!-- VUE只能接管一个div-->
<div id="app"> <!--模板语言-->
{{msg}} </div>
<!--导入-->
<script src="../js/vue.js"></script> <!--编写VUE代码-->
<script>
//创建对象
new Vue({
// 接管的标签
el:'#app',
// 数据源
data:{
msg:'test'
}
})
</script>
</body>

展示:

已把msg的值渲染到了页面中

2、input标签关联vue中methods

<body>
<!-- VUE只能接管一个div-->
<div id="app"><input type="button" @click="login" value="登录">
</div>
<!--导入-->
<script src="../js/vue.js"></script> <!--编写VUE代码-->
<script> //创建对象
new Vue({
// 接管的标签
el:'#app',
// 数据源
data:{
msg:'test'
},
//存储所有的vue的方法
methods:{
login:function () {
//this代表Vue这个对象,下边是取到了data中的msg
alert(this.msg) } }
}) </script>
</body>

展示:

三、指令

带有v-的在vue中叫做指令,就是声明Vue中的指令,指令实际就是vue封装的一些Js操作方法,当数据值发生变更后,将其产生的影响,作用与DOM中,创建的指令v-bind、v-on、v-if、v-for

1、v-on(绑定事件)

  • 全写模式:v-on:click
  • 简写模式:@click(推荐使用)

click对应的方法是:methods中的方法

<body>
<!-- VUE只能接管一个div-->
<div id="app"> <!--模板语言-->
{{msg}}---{{count+1}} <input type="button" @click="login" value="登录"> </div>
<!--导入-->
<script src="../js/vue.js"></script> <!--编写VUE代码-->
<script> //创建对象
new Vue({
// 接管的标签
el:'#app',
// 数据源
data:{
msg:'test',
count:0
},
//存储所有的vue的方法
methods:{
login:function () {
//this代表Vue这个对象,下边是取到了data中的msg
this.msg='v-on方法'
}
}
}) </script>
</body>

点击【登录】前:

点击【登录】后:

2、v-bind(标签属性绑定)

  • 全写模式   v-bind:href
  • 简写模式   :href

可以绑定方法中的data的数据使用

在魔板语言中,我们可以通过 {{ data }} 的形式将data中的数据渲染到页面上,如果我们将data中的属性赋值给标签的属性时,就不能用 {{ data }} 格式来写了,而是需要用到属性来绑定:

<body>
<!-- VUE只能接管一个div-->
<div id="app">
<!-- 完整写法 -->
<a v-bind:href="url">百度</a> <!-- 缩写-->
<a :href="url">跳转到百度地址</a> </div>
<!--导入-->
<script src="../js/vue.js"></script> <!--编写VUE代码-->
<script> //创建对象
new Vue({
// 接管的标签
el:'#app',
// 数据源
data:{
msg:'test',
count:0,
url:'http://www.baidu.com'
},
//存储所有的vue的方法
methods:{
login:function () {
//this代表Vue这个对象,下边是取到了data中的msg
this.msg='v-on方法'
}
}
}) </script>
</body>

(1)class中数组的绑定方式

<head>
<meta charset="UTF-8">
<title>学无止境</title> <style>
.bg{
background-color: aqua;
width: 100px;
height: 100px;
}
.box{
border: 2px red solid;
}
</style> </head>
<body>
<!-- VUE只能接管一个div-->
<div id="app">
<!--动态的css绑定-->
<!--方式1:直接绑定-->
<div :class="['bg','box']"></div> <!--方式2:关联绑定-->
<div :class="classes"></div>
</div>
<!--导入-->
<script src="../js/vue.js"></script> <!--编写VUE代码-->
<script>
//创建对象
new Vue({
// 接管的标签
el:'#app',
// 数据源
data:{
classes:['bg','box']
},
//存储所有的vue的方法
methods:{
}
}) </script>
</body>

练习:

需求:通过点击【按钮】把上边图片的红色边框去掉

<head>
<meta charset="UTF-8">
<title>学无止境</title> <style>
.bg{
background-color: aqua;
width: 100px;
height: 100px;
}
.box{
border: 2px red solid;
}
</style> </head>
<body>
<!-- VUE只能接管一个div-->
<div id="app">
<!--关联绑定-->
<div :class="classes"></div>
<!--绑定方法,通过点击把【classes】替换成只有:bg属性-->
<input type="button" value="changeClass" @click="changeClass">
</div>
<!--导入-->
<script src="../js/vue.js"></script> <!--编写VUE代码-->
<script>
//创建对象
new Vue({
// 接管的标签
el:'#app',
// 数据源
data:{
classes:['bg','box']
},
//存储所有的vue的方法
methods:{
changeClass:function () {
this.classes = ['bg']
}
}
}) </script>
</body>

(2)绑定class,{}方式绑定(class属性字典的写法)

<head>
<meta charset="UTF-8">
<title>学无止境</title> <style>
.bg{
background-color: aqua;
width: 100px;
height: 100px;
}
.box{
border: 2px red solid;
}
</style> </head>
<body>
<!-- VUE只能接管一个div-->
<div id="app">
<!--关联绑定 bg、box为false时,也可引用变量is_bg、is_box,则不展示该属性 -->
<div :class="{bg:true,box:true}"></div>
</div>
<!--导入-->
<script src="../js/vue.js"></script> <!--编写VUE代码-->
<script>
//创建对象
new Vue({
// 接管的标签
el:'#app',
// 数据源
data:{
classes:['bg','box'],
is_bg:true,
is_box:true
},
//存储所有的vue的方法
methods:{
changeClass:function () {
this.classes = ['bg']
}
}
}) </script>
</body>

(3)绑定class(class属性数组的写法)

<!--数组的写法中,每个值代表一个样式,所以要写成字符串-->
<p v-bind:class="['blue','red']">蓝色字体红色背景色</p>
<!--如果isBlue为真,则blue显示,否则为空,则不显示-->
<p v-bind:class="[isBlue?'blue':'','red']">蓝色字体红色背景色</p

最新文章

  1. 区间dp总结篇
  2. qq
  3. python 协程
  4. 【转】c# 调用windows API(user32.dll)
  5. POJ 1659 Frogs&#39; Neighborhood(Havel-Hakimi定理)
  6. 巧用AWK处理二进制数据文件
  7. 一行 Python 实现并行化 -- 日常多线程操作的新思路
  8. 如果你只会JQuery的插件式开发, 那么你可以进来看看?
  9. Git坑点——remote: error: GH007: Your push would publish a private email address.
  10. JAVA并发编程——守护线程(Daemon Thread)
  11. linux 服务器安全加固和内核参数调优 nf_conntrack
  12. .net core 分布式配置中心
  13. Java系列笔记(0) - 目录和概述
  14. Leetcode题库——27.移除元素
  15. linux命令-grep+正则表达式用法
  16. Java Socket 编程之Socket与ServerSocket的区别
  17. php实现静态化
  18. cocos2d-x v3.0新特性及使用
  19. Element表单验证规则
  20. C++11中std::bind的使用

热门文章

  1. # HUAWEI--IPv6 over IPv4隧道配置(简单案例)
  2. spring boot No qualifying bean of type &#39;org.apache.catalina.core.ApplicationContext&#39; available
  3. css - content-visibility
  4. 在k8s中使用harbor仓库
  5. Kubernetes--Pod生命周期中的重要行为
  6. 大数据开源平台CDH 集群(CM6.3.1 + CDH 6.3.2)的部署
  7. android修改frameework与service,vendor分区需要替换的文件
  8. 网络负载均衡LVS
  9. js实现数字每三位加逗号
  10. JAVA学习笔记-06