vue.js介绍,常用指令,事件,以及制作简易留言版

时间:2023-03-08 22:16:04

一、vue是什么?

  一个mvvm框架(库)、和angular类似,比较容易上手、小巧,让我们的代码更加专注于业务逻辑,而不是去关注DOM操作

二、vue和angular之间的区别

  vue——简单易学

      指令以v-xx

      一片html代码配合上json,再new出来vue实例

      个人维护项目

      适合:移动端项目,小巧

  angular——上手难

      指令以ng-xxx

      所有属性和方法都挂在$scope身上

      angular由google维护

      适合:pc端项目

  共同点:不兼容低版本的IE

三、vue的基本使用

1、基本雏形

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue雏形1</title>
<script src="vue.js"></script>
<script>
window.onload=function () {
var c=new Vue({                //可以不定义这个对象直接new,或者也可以把变量名变为其他的都行:如abc
el:'#box',                //选择器:可以是id,class,tagName
data:{                  //数据
msg:'welcome vue'
}
}); };
</script>
</head>
<body>
<di id="box">
{{msg}}
</di>
</body>
</html>

运行结果:vue.js介绍,常用指令,事件,以及制作简易留言版

2、常用指令

  2.1v-model 一般表单元素(input) 双向数据绑定

  

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>常用指令</title>
<script src="vue.js"></script>
<script>
window.onload=function () {
var abc=new Vue({
el:'#box',
data:{
msg:'welcome vue',
msg2:,
msg3:true,
arr:['apple','pear','banana','orange'],
json:{a:'apple',b:'pear',c:'banana',d:'orange'}
}
}); };
</script>
</head>
<body>
<di id="box">
<input type="text" v-model="msg">            //当改变input的值时,下面{{msg}}的值也会改变同时下面的input也会同时改变
<!--一个input也行-->
<input type="text" v-model="msg">          
<br>
{{msg}}
<br>
{{msg2}}
<br>
{{msg3}}
<br>
{{arr}}
<br>
{{json}}
</di>
</body>
</html>

运行结果:

vue.js介绍,常用指令,事件,以及制作简易留言版

2.2、循环:v-for="变量名 in 对象"

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<title>循环</title>
<script src="vue.js"></script>
<script>
window.onload=function () {
var abc=new Vue({
el:'#box',
data:{
msg:'welcome vue',
msg2:,
msg:true,
arr:['apple','pear','banana','orange'],
json:{a:'apple',b:'pear',c:'banana',d:'orange'}
}
}); };
</script>
</head>
<body> <div id="box">
<ul>
<li v-for="value in arr">
{{value}} {{$index}}            //循环遍历出arr数组的值和当前值的索引
</li>
</ul>
<hr>
<ul>
<li v-for="value in json">
{{value}} {{$index}} {{$key}}      //循环遍历出json文件的值,索引以及当前值的键名
</li>
</ul> <hr>
<ul>
<li v-for="(k,v) in json">
{{k}} {{v}} {{$index}} {{$key}}      //一件键值对的形式进行便利
</li>
</ul>
</div> </body>
</html>

  运行结果:

vue.js介绍,常用指令,事件,以及制作简易留言版

2.3、事件

  2.3.1:v-on:click="函数"

  v-on:click/mouseout/mouseover/dblclick/mousedown.....

  

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
<script>
window.onload=function () {
var c=new Vue({
el:'#box',
data:{//数据
msg:'welcome vue',
msg2:,
msg:true,
arr:['apple','pear','banana','orange'],
json:{a:'apple',b:'pear',c:'banana',d:'orange'}
},
methods:{//方法
add:function () {
this.arr.push('tomato');    //this指的是当前的对象c }
}
}); };
</script>
</head>
<body>
<div id="box">
<input type="button" value="按钮" v-on:click="add()" >      //事件
<ul>
<li v-for="vaule in arr">
{{vaule}}
</li>
</ul>
</div>
</body>
</html>

运行结果:当点击按钮会添加一个tomato在数组里

vue.js介绍,常用指令,事件,以及制作简易留言版

2.3.2:显示与隐藏:v-show="true/false"

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>点击按钮div消失</title>
<script src="vue.js"></script>
<script>
window.onload=function () {
var c=new Vue({
el:'#box',
data:{//数据
a:true,                          //将a的值初始化为true,设置为显示
msg:'welcome vue',
msg2:,
msg:true,
arr:['apple','pear','banana','orange'],
json:{a:'apple',b:'pear',c:'banana',d:'orange'}
} }); };
</script>
</head>
<body>
<div id="box">
<input type="button" value="按钮" v-on:click="a=false">                   //点击之后将a的值变为false,设置为隐藏
<div style="width: 100px;height: 100px;background-color: red" v-show='a' >      //设置为显示 </div>
</div>
</body>
</html>

运行结果:点击按钮div消失

3、简易留言版:实现添加数据删除数据

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>简易留言板</title>
<link rel="stylesheet" href="lib/bootstrap.min.css"> <script src="lib/jquery-1.7.2.js"></script>
<script src="lib/bootstrap.js"></script>
<script src="vue.js"></script>
<script>
window.onload=function () {
new Vue({
el:'#box',                           //选择器
data: {                            //数据
myData: [],
username: '',
age:'',
nowIndex:-100                     //一定要将nowIndex设置为不可能的数
},
methods:{
add:function () {                   //向数组添加对象,属性为name和age,值分别是username和age
this.myData.push({                //this指向的是当前的new出来的vue对象
name:this.username,              //将第一个input框的值赋给name
age:this.age                  //将第二个input框的值赋给age
});
this.username='';                //将当前对象的username的值置为空
this.age='';                    //当前对象的age的值置为空 },
deleteMsg:function (n) {
if(n==-){
this.myData=[];              //将数组置为空
}else{
this.myData.splice(n,);        //删除当前项
}
}
}
});
};
</script>
</head>
<body>
<div class="container" id="box">
<form role="form">
<div class="form-group">
<label for="username">用户名:</label>
<input type="text" id="username" v-model="username" class="form-control" placeholder="输入姓名">
</div>
<div class="form-group">
<label for="age">年 龄:</label>
<input type="text" id="age" v-model="age" class="form-control" placeholder="输入年龄">
</div>
<div class="form-group">
<input type="button" value="添加" class="btn btn-primary" v-on:click="add()">      //点击添加,触发add()函数,向数组添加数据
<input type="reset" value="重置" class="btn btn-danger">                  //将input框置为空
</div>
</form>
<hr>
<table class="table table-bordered table-hover">
<caption class="h2 text-info">
用户信息表
</caption>
<tr>
<th class="text-center">序号</th>
<th class="text-center">名字</th>
<th class="text-center">年龄</th>
<th class="text-center">操作</th>
</tr>
<tr class="text-center" v-for="item in myData">
<td>{{$index+}}</td>
<td>{{item.name}}</td>
<td>{{item.age}}</td>
<td>
<button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer" v-on:click="nowIndex={{$index}}">删除</button>//点击按钮触发模态框,将当前数组值的索引赋给nowIndex
</td>
</tr> <tr v-show="myData.length!=0">                          //如果数组的长度不等于零,”删除全部“显示出来
<td colspan="" class="text-right">
<button class="btn btn-danger btn-sm"data-toggle="modal" data-target="#layer" v-on:click="nowIndex=-2">
删除全部
</button>
</td>
</tr>
<tr v-show="myData.length==0">                    //如果数组长度等于零,”暂无数据“显示出来
<td colspan="" class="text-center text-muted" >
<p>暂无数据....</p>
</td>
</tr>
</table>
<!--模态框 弹出框-->
<div role="dialog" class="modal" id="layer">          //模态声明 <div class="modal-dialog">                  //窗口声明
<div class="modal-content">               //内容声明
<div class="modal-header">              //声明标题
<button type="button" class="close" data-dismiss="modal">    //data-dismiss表示点击X这个模态框消失
<span>&times;</span>
</button>
<h4 class="modal-title">
确认删除吗?
</h4>
</div>
<div class="modal-body text-right">
<button class="btn btn-primary btn-sm" data-dismiss="modal">取消</button>      //点击取消,模态框消失
<button class="btn btn-danger btn-sm" data-dismiss="modal" v-on:click="deleteMsg(nowIndex)">确认</button>  //点击确定删除当前数据,并且模态框消失
</div>
</div>
</div>
</div>
</div> </body>
</html>

运行结果:

vue.js介绍,常用指令,事件,以及制作简易留言版