• 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=" 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>

     运行结果:

  • 相关阅读:
    JAVA设计模式之单例模式
    JAVA设计模式之单例模式
    数据库连接池
    数据库连接池
    DbUtils操作数据库
    DbUtils操作数据库
    Hadoop 问题之 Linux服务器jps报process information unavailable
    echarts ——纵坐标赋值
    echarts ——div没有设置样式图表就展示不出来!
    Elasticsearch+spring boot(一)
  • 原文地址:https://www.cnblogs.com/15fj/p/8046137.html
Copyright © 2020-2023  润新知