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

一、vue是什么?

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

二、vue和angular之间的区别

  vue——简单易学

      指令以v-xx

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

      个人维护项目

      适合:移动端项目,小巧

  angular——上手难

      指令以ng-xxx

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

      angular由google维护

      适合:pc端项目

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

三、vue的基本使用

1、基本雏形

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>vue雏形1</title>
 6     <script src="vue.js"></script>
 7     <script>
 8         window.onload=function () {
 9             var c=new Vue({                //可以不定义这个对象直接new,或者也可以把变量名变为其他的都行:如abc
10                 el:‘#box‘,                //选择器:可以是id,class,tagName
11                 data:{                  //数据
12                     msg:‘welcome vue‘
13                 }
14             });
15
16         };
17     </script>
18 </head>
19 <body>
20     <di id="box">
21         {{msg}}
22     </di>
23 </body>
24 </html>

运行结果:

2、常用指令

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

  

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>常用指令</title>
 6     <script src="vue.js"></script>
 7     <script>
 8         window.onload=function () {
 9             var abc=new Vue({
10                 el:‘#box‘,
11                 data:{
12                     msg:‘welcome vue‘,
13                     msg2:12,
14                     msg3:true,
15                     arr:[‘apple‘,‘pear‘,‘banana‘,‘orange‘],
16                     json:{a:‘apple‘,b:‘pear‘,c:‘banana‘,d:‘orange‘}
17                 }
18             });
19
20         };
21     </script>
22 </head>
23 <body>
24 <di id="box">
25     <input type="text" v-model="msg">            //当改变input的值时,下面{{msg}}的值也会改变同时下面的input也会同时改变
26     <!--一个input也行-->
27     <input type="text" v-model="msg">          
28     <br>
29     {{msg}}
30     <br>
31     {{msg2}}
32     <br>
33     {{msg3}}
34     <br>
35     {{arr}}
36     <br>
37     {{json}}
38 </di>
39 </body>
40 </html>

运行结果:

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

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
 6     <meta name="apple-mobile-web-app-capable" content="yes">
 7     <meta name="apple-mobile-web-app-status-bar-style" content="black">
 8     <title>循环</title>
 9     <script src="vue.js"></script>
10     <script>
11         window.onload=function () {
12             var abc=new Vue({
13                 el:‘#box‘,
14                 data:{
15                     msg:‘welcome vue‘,
16                     msg2:12,
17                     msg:true,
18                     arr:[‘apple‘,‘pear‘,‘banana‘,‘orange‘],
19                     json:{a:‘apple‘,b:‘pear‘,c:‘banana‘,d:‘orange‘}
20                 }
21             });
22
23         };
24     </script>
25 </head>
26 <body>
27
28 <div id="box">
29     <ul>
30         <li v-for="value in arr">
31             {{value}}   {{$index}}            //循环遍历出arr数组的值和当前值的索引
32         </li>
33     </ul>
34     <hr>
35     <ul>
36         <li v-for="value in json">
37             {{value}}   {{$index}}  {{$key}}      //循环遍历出json文件的值,索引以及当前值的键名
38         </li>
39     </ul>
40
41     <hr>
42     <ul>
43         <li v-for="(k,v) in json">
44             {{k}}   {{v}}   {{$index}}  {{$key}}      //一件键值对的形式进行便利
45         </li>
46     </ul>
47 </div>
48
49 </body>
50 </html>

  运行结果:

2.3、事件

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

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

  

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <script src="vue.js"></script>
 7     <script>
 8         window.onload=function () {
 9             var c=new Vue({
10                 el:‘#box‘,
11                 data:{//数据
12                     msg:‘welcome vue‘,
13                     msg2:12,
14                     msg:true,
15                     arr:[‘apple‘,‘pear‘,‘banana‘,‘orange‘],
16                     json:{a:‘apple‘,b:‘pear‘,c:‘banana‘,d:‘orange‘}
17                 },
18                 methods:{//方法
19                     add:function () {
20                         this.arr.push(‘tomato‘);    //this指的是当前的对象c
21
22                     }
23                 }
24             });
25
26         };
27     </script>
28 </head>
29 <body>
30 <div id="box">
31     <input type="button" value="按钮" v-on:click="add()" >      //事件
32     <ul>
33         <li v-for="vaule in arr">
34             {{vaule}}
35         </li>
36     </ul>
37 </div>
38 </body>
39 </html>

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

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

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>点击按钮div消失</title>
 6     <script src="vue.js"></script>
 7     <script>
 8         window.onload=function () {
 9             var c=new Vue({
10                 el:‘#box‘,
11                 data:{//数据
12                     a:true,                          //将a的值初始化为true,设置为显示
13                     msg:‘welcome vue‘,
14                     msg2:12,
15                     msg:true,
16                     arr:[‘apple‘,‘pear‘,‘banana‘,‘orange‘],
17                     json:{a:‘apple‘,b:‘pear‘,c:‘banana‘,d:‘orange‘}
18                 }
19
20             });
21
22         };
23     </script>
24 </head>
25 <body>
26 <div id="box">
27     <input type="button" value="按钮" v-on:click="a=false">                   //点击之后将a的值变为false,设置为隐藏
28     <div style="width: 100px;height: 100px;background-color: red"  v-show=‘a‘ >      //设置为显示
29
30     </div>
31 </div>
32 </body>
33 </html>

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

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

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>简易留言板</title>
  6     <link rel="stylesheet" href="lib/bootstrap.min.css">
  7
  8     <script src="lib/jquery-1.7.2.js"></script>
  9     <script src="lib/bootstrap.js"></script>
 10     <script src="vue.js"></script>
 11     <script>
 12         window.onload=function () {
 13             new Vue({
 14                 el:‘#box‘,                           //选择器
 15                 data: {                            //数据
 16                     myData: [],
 17                     username: ‘‘,
 18                     age:‘‘,
 19                     nowIndex:-100                     //一定要将nowIndex设置为不可能的数
 20                 },
 21                 methods:{
 22                         add:function () {                   //向数组添加对象,属性为name和age,值分别是username和age
 23                             this.myData.push({                //this指向的是当前的new出来的vue对象
 24                                 name:this.username,              //将第一个input框的值赋给name
 25                                 age:this.age                  //将第二个input框的值赋给age
 26                             });
 27                             this.username=‘‘;                //将当前对象的username的值置为空
 28                             this.age=‘‘;                    //当前对象的age的值置为空
 29
 30                         },
 31                         deleteMsg:function (n) {
 32                             if(n==-2){
 33                                 this.myData=[];              //将数组置为空
 34                             }else{
 35                                 this.myData.splice(n,1);        //删除当前项
 36                             }
 37                         }
 38                 }
 39             });
 40         };
 41     </script>
 42 </head>
 43 <body>
 44 <div class="container" id="box">
 45     <form role="form">
 46         <div class="form-group">
 47             <label for="username">用户名:</label>
 48             <input type="text" id="username" v-model="username" class="form-control"  placeholder="输入姓名">
 49         </div>
 50         <div class="form-group">
 51             <label for="age">年 龄:</label>
 52             <input type="text" id="age" v-model="age" class="form-control" placeholder="输入年龄">
 53         </div>
 54         <div class="form-group">
 55             <input type="button" value="添加" class="btn btn-primary" v-on:click="add()">      //点击添加,触发add()函数,向数组添加数据
 56             <input type="reset" value="重置" class="btn btn-danger">                  //将input框置为空
 57         </div>
 58     </form>
 59     <hr>
 60     <table class="table table-bordered table-hover">
 61         <caption class="h2 text-info">
 62             用户信息表
 63         </caption>
 64         <tr>
 65             <th class="text-center">序号</th>
 66             <th class="text-center">名字</th>
 67             <th class="text-center">年龄</th>
 68             <th class="text-center">操作</th>
 69         </tr>
 70         <tr class="text-center" v-for="item in myData">
 71             <td>{{$index+1}}</td>
 72             <td>{{item.name}}</td>
 73             <td>{{item.age}}</td>
 74             <td>
 75                 <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer" v-on:click="nowIndex={{$index}}">删除</button>//点击按钮触发模态框,将当前数组值的索引赋给nowIndex
 76             </td>
 77         </tr>
 78
 79         <tr v-show="myData.length!=0">                          //如果数组的长度不等于零,”删除全部“显示出来
 80             <td colspan="4" class="text-right">
 81                 <button class="btn btn-danger btn-sm"data-toggle="modal" data-target="#layer" v-on:click="nowIndex=-2">
 82                     删除全部
 83                 </button>
 84             </td>
 85         </tr>
 86         <tr v-show="myData.length==0">                    //如果数组长度等于零,”暂无数据“显示出来
 87             <td colspan="4" class="text-center text-muted" >
 88                 <p>暂无数据....</p>
 89             </td>
 90         </tr>
 91     </table>
 92     <!--模态框 弹出框-->
 93     <div role="dialog" class="modal" id="layer">          //模态声明
 94
 95         <div class="modal-dialog">                  //窗口声明
 96             <div class="modal-content">               //内容声明
 97                 <div class="modal-header">              //声明标题
 98                     <button type="button" class="close" data-dismiss="modal">    //data-dismiss表示点击X这个模态框消失
 99                         <span>&times;</span>
100                     </button>
101                     <h4 class="modal-title">
102                         确认删除吗?
103                     </h4>
104                 </div>
105                 <div class="modal-body text-right">
106                     <button class="btn btn-primary btn-sm" data-dismiss="modal">取消</button>      //点击取消,模态框消失
107                     <button class="btn btn-danger btn-sm" data-dismiss="modal" v-on:click="deleteMsg(nowIndex)">确认</button>  //点击确定删除当前数据,并且模态框消失
108                 </div>
109             </div>
110         </div>
111     </div>
112 </div>
113
114 </body>
115 </html>

运行结果:

时间: 2024-11-07 15:24:49

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

Vue.js的常用指令

Vue.js的指令是以v-开头的,它们作用于HTML元素,指令提供了一些特殊的特性,将指令绑定在元素上时,指令会为绑定的目标元素添加一些特殊的行为,我们可以将指令看作特殊的HTML特性(attribute). Vue.js提供了一些常用的内置指令,如下: v-if指令 v-for指令 v-show指令 v-else指令 v-bind指令 v-on指令 1:v-if指令 v-if指令是条件渲染指令,它根据表达式的真假来删除和插入元素,它的基本语法如下: v-if="expression"

vue.js实战学习——指令与事件

注:此内容摘抄自:梁灏的<Vue.js实战> 1.指令是Vue.js模版中最常用的一项功能,它带有前缀 v- ,比如:v-if , v-html ,v-pre 等.指令的主要职责就是当其表达式的值改变时,相应的将某些行为应用到DOM上. <div class="app1"> <p v-if="show">哈喽?</p> </div> var app=new Vue({ el:'.app1', data:{

Vue.js介绍.

Vue.js 主要用简洁的模板语言声明式的把数据渲染进DOM 例如 <div id="app"> {{ message }} </div> var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' } }) Hello Vue! 还可以绑定DOM对象 <div id="app-2"> <span v-bind:title="message"

vue.js click点击事件获取当前元素对象

Vue.js可以传递$event对象 <body id="app"> <ul> <li v-on:click="say('hello!', $event)">点击当前行文本</li> <li>li2</li> <li>li3</li> </ul> <script> new Vue({ el: '#app', data: { message: 'He

Vue.js框架 v-model指令

v-model 指令在表单 <input> 及 <textarea> 元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.尽管有些神奇,但 v-model 本质上不过是语法糖.它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理. v-model 会忽略所有表单元素的 value.checked.selected 特性的初始值而总是将 Vue 实例的数据作为数据来源.你应该通过 JavaScript 在组件的 data选项中声明初始值. 对于需要使

序言vue.js介绍

vue.js :渐进式JavaScript框架 vue.js 优点 1.体积小 例如:压缩后 33k; 2.更高的运行效率 基于虚拟dom,一种可以预先通过JavaScript进行各种计算,把最终的DOM操作计算出来并优化的技术,由于这个DOM操作属于预处理操作,并没有真实的操作DOM,所有叫做虚拟DOM. 3.双向数据绑定 让开发者不用再去操作dom对象,把更多的精力投入到业务逻辑上: 4.生态丰富.学习成本低 拥有大量成熟.稳定的基于vue.js的UI框架.常用组件! 拿来即用实现快速开发

vue.js click点击事件获取当前元素对象及获取自定义属性

Vue.js可以传递$event对象 <body id="app"> <ul> <li :data-price="m.price" v-on:click="say('hello!', $event)">点击当前行文本</li> <li>li2</li> <li>li3</li> </ul> <script> new Vue({

docker基础——关于安装、常用指令以及镜像制作初体验

为什么使用docker docker就是一个轻量级的虚拟机,他解决的是服务迁移部署的时候环境配置问题.比如常见的web服务依赖于jdk.Tomcat.数据库等工具,迁移项目就需要在新的机器重新配置这些,不光麻烦,而且可能配错. 如果能够将整个服务连同他依赖的外部环境一同打包就好了,docker就是这么干的.他将配置好的软件打包成image,在新的机器里面启动这个image即可 当然我所理解的只是一小部分,docker还有提供弹性云服务.组建微服务架构等方面的应用 最后,相对于传统虚拟机,dock

Vue的十个常用指令

1.v-text:用于更新标签包含的文本,作用和{{}}的效果一样. 2.v-html:绑定一些包含html代码的数据在视图上. 3.v-show:用来控制元素的display属性,和显示隐藏有关.v-show指令的取值为true/false,当值为true时直接渲染,当值为false时渲染出来之后带有display:none属性. 4.v-if:控制元素是否被渲染出来.v-if指令的取值为true/false,当值为true时直接渲染,当值为false时直接不渲染.和v-show的区别为:如果