首页 > 其他 > 详细

Vue基础

时间:2021-05-28 11:33:48      阅读:15      评论:0      收藏:0      [点我收藏+]

1.概述

Vue: 渐进式JavaScript框架

渐进式:声明式渲染 --> 组件系统 --> 客户端路由 --> 集中式状态管理 --> 项目构建

  • 易用 :熟悉HTML、CSS、JavaScript知识后,可快速上手Vue

  • 灵活:在一个库和一个完整框架之间自如伸缩

  • 高效:20kb运行大小,超快虚拟DOM

2. 基本使用

2. 1 传统开发吗模式对比

原生JS :

 <div id="msg"></div>
 <script>
     var msg = Hello Word;
     var div = document.getElementById(msg);
     div.innerHtml = msg;
 </script>

 

jQuery:

 <div id="msg"></div>
 <script type="text/javascript" src = "js/jQuery.js"></script>
 <script>
     var msg = Hello Word;
     $(#msg).html(msg);
    div.innerHtml = msg;

</script>

 

Vue:

 <div id="app">
     <div>{{msg}}</div>
 </div>
 <script type="text/javascript" src="js/vue.js"></script>
 <script>
     var vm = new Vue({
         el: #app,
         data:{
            msg:Hellow Word!
         }
     })
</script>

 

 

2.2 Vue的基本使用

1.Vue的基本使用步骤:

  1. 需要提供标签用于填充数据

  2. 引入vue.js 库文件

  3. 可以使用vue的语法做功能了

  4. 把vue提供的数据填充到标签里面

2.Vue实例参数分析:

  • el :元素的挂载位置(值可以是CSS选择器或者DOM元素)

  • data:模型数据(值是一个对象)

3. 插值表达式用法:

  • 将数据填充到 HTMl

  • 插值表达式支持基本的计算操作

4. Vue代码运行原理分析:

  • 概述编译过程的概念(Vue语法 --> 原生语法)

Vue代码 --> Vue框架 --> 原生js代码

3.Vue模板语法

3.1 前端渲染方式

  • 原生js拼接字符串:就是将数据以字符串的方式拼接到HTMl标签中

    • 缺点:不同开发人员的代码风格差别很大,随着业务的复杂,后期维护变得逐渐困难起来

  • 使用前端模板引擎

    • 优点:有了代码规则,代码的可读性提高了,方便后期的维护

    • 缺点:没有专门提供事件机制

  • 使用Vue特有的模板语法

前端渲染 就是将数据填充到HTMl页面中

3.2 Vue模板语法概览

  • 差值表达式

  • 指令

  • 事件绑定

  • 属性绑定

  • 样式绑定

  • 分支循环结构

3.3 指令

1. 什么是指令

指令的本质就是自定义属性,指令的格式:以v-开始(比如:v-cloak)

2. v-cloak 指令用法

用来隐藏未编译的 Mustache 标签直到实例准备完毕,编译完成后在显示

  1. 提供样式

    [v-cloak]{
        display:none;
    }

     

  2. 在插值表达式所在的标签中添加v-cloak指令

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

     

3. 数据绑定指令

  • v-text:填充纯文本

    • 相比插值表达式更加简洁

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

     

     

  • v-html :填充HTML片段

    • 存在安全问题

    • 本网站内部数据可以使用,来自第三方的数据不可以使用

    <div v-html="html"></div>

     

     

  • v-pre:填充原始信息

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

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

     

4.数据响应式

什么是响应式:

  • html5 中的响应式(屏幕尺寸的变化导致样式的变化)

  • 数据的响应式(数据的变化导致页面内容的变化)

什么是数据绑定:

  • 数据绑定:将数据填充到标签中

v-once只编译一次

  • 显示内容后不在具有响应式功能

  • 应用场景:如果显示的信息后续不需要在修改,就可以使用 v-once ,这样可以提高性能

5. 双向数据绑定

  • v-model:指令用法

    <input type=‘text‘ v-model=‘uname‘/>

     

  • MVVM设计思想

    • M(model)

    • V(view)

    • VM(View-Model)

6. 事件绑定

1. Vue处理事件的方法
  • v-on :指令

    <inpunt type="button" v-on:click=‘num++‘/>

     

  • v-on 简写形式:

    <inpunt type=‘button‘@click=‘num++‘/>

     

2.事件函数的调用方法
  • 直接绑定函数名称

    <button v-on:click=‘say‘>
        点击
    </button>

     

     

  • 调用函数

    <button v-on:click=‘say()‘>
        点击
    </button>

     

     

3.事件函数参数传递
  • 普通参数和事件对象

    <button v-on:click=‘say("hi,$event")‘>
        点击
    </button>

     

    事件绑定-参数传递

    1. 如果事件直接绑定函数名称,那么默认会传递事件对象作为事件函数的第一个参数

    2. 如果事件绑定函数调用,那么事件对象必须作为最后一个参数显示传递,并且事件对象的名称必须是$event

4.事件修饰符
  • .stop :阻止冒泡,调用  event.stopPropagation() 

    <a v-on:click.stop="handle">跳转</a>

     

     

  • .prevent:阻止默认行为,调用  event.preventDefault() 

    <a v-on:click.prevent="handle">跳转</a>
  • .left :只当点击鼠标左键时触发(2.2.0版本可用)。

    <a v-on:click.left="handle">跳转</a>
  • .right : 只当点击鼠标右键时触发(2.2.0版本可用)。

    <a v-on:click.right="handle">跳转</a>
  • .middle :只当点击鼠标中键时触发(2.2.0版本可用)。

    <a v-on:click.middle="handle">跳转</a>

     

     

5.按键修饰符
  • .enter: 回车键

    <input v-on:keyup.enter=‘submit‘/> 
  • .delete:删除键

    <input v-on:keyup.delete=‘submit‘/>

     

6. 自定义按键修饰符
  • 全局  config.keyCodes 对象

    //f1 :自定义按键名字
    //112:按键的标识
    Vue.config.keyCodes.f1 = 112

     

     

    可以使用下面代码得到按键的唯一标识:

    <div id="app">
        <input type="text" v-on:keyup="hander" v-model="info">
    </div>
    <script type="text/javascript" src="js/vue.js"></script>
    <script>
        var vm = new Vue({
            el: #app,
            data:{
                info:‘‘
            },
            methods: {
                hander: function(event){
              //在控制台打印出按键的唯一标识
                    console.log(event.keyCode)
                }
            }
         })
    </script>

     

    自定义按键修饰符的规则:自定义按键修饰符名字是自定义的,但是对应的值必须是按键对应 event.keyCode 的值。

     

7. 动态处理属性
  • v-bind指令语法

    <a v-bind:href=‘url‘>跳转</a>

     

  • 缩写形式

    <a :href=‘url‘>跳转</a>

     

8.样式绑定
1.class 样式处理
  • 对象处理

    <div v-bind:class=" active: isActive "></div>

     

  • 数组语法

    <div v-bind:class= "[activeClass, errorClass]"></div>

     

样式绑定相关语法细节

  1. 对象绑定和数组绑定可以集合使用

    <div v-bind:class= "[activeClass, errorClass,{text:‘isText‘}]"></div>

     

  2. class绑定的值可以简化操作

  3. 默认的class如何处理?默认的class会保留

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style type="text/css">
            .active{
                border: 1px solid #000000;
                width: 100px;
                height: 100px;
            }
            .error{
                background-color: #004444;
            }
            .text{
                color: #ffff00;
            }
        </style>
    </head>
    <body>
        <div id="app">
            
            <div v-bind:class="{active:‘isActive‘,error:‘isError‘}">哈哈哈哈</div>
            
            <div v-bind:class="[activeClass,errorClass,{text:‘isText‘}]">哈哈哈哈</div>
            
            <div v-bind:class="mainClass">哈哈哈哈</div>
        </div>
        <script type="text/javascript" src="js/vue.js"></script>
        <script>
           var vm = new Vue({
                el: #app,
                data:{
                    isActive:true,
                    isError:true,
                    activeClass:active,
                    errorClass:error,
                    isText:text,
                    mainClass:[active,error]
                    
                }
                
            })
        </script>
    </body>
</html>
?

 

 

2. style样式处理
  • 对象语法

    <div v-binf:style="{color:activeColor,fontSize:fonSize}"></div>

     

     

  • 数组语法

    <div v-bind:style="[baseStyles,overridingStyles]"></div>

     

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <div id="app">
            
            <div v-bind:style="{border:borderStyle,color:colorStyle,width:widthStyle,height:heightStyle}">哈哈哈哈</div>
            <div v-bind:style="objectStyle"></div>
            <div v-bind:style="[baseStyles,objectStyle]">哈哈哈哈</div>
            
            
        </div>
        <script type="text/javascript" src="js/vue.js"></script>
        <script>
           var vm = new Vue({
                el: #app,
                data:{
                    colorStyle:#fff,
                    widthStyle:100px,
                    heightStyle:120px,
                    borderStyle:1px solid red,
                    objectStyle:{
                        border:1px solid blue,
                        width:120px,
                        height:100px
                    },
                    baseStyles:{
                        backgroundColor:#f4f444
                    }
                }   
            })
        </script>
    </body>
</html>
?

 

 

9. 分支循环结构
1.分支结构
  • v-if:根据表达式的值来有条件地渲染元素。

  • v-else:为 v-if 或者 v-else-if 添加“else 块”。

    <div v-if=" max > 0.5">
      Now you see me
    </div>
    <div v-else>
      Now you don‘t
    </div>

     

     

  • v-else-if :表示 v-if 的“else if 块”。可以链式调用.

    <div v-if="tapy === ‘A‘">
      A
    </div>
    <div v-else-if="tapy === ‘B‘">
      B
    </div>
    <div v-else-if="tapy === ‘C‘">
      C
    </div>
    <div v-else>
      Not A/B/C
    </div>

     

     

  • v-show:根据表达式之真假值,切换元素的 display控制元素样式是否显示

2.v-if 和 v-show 的区别
  • v-if 控制元素是否渲染到页面

  • v-show 控制元素是否显示(已经渲染到了页面)

10. 循环结构
  • v-for 遍历数组

    <li v-for=‘item in list‘>{{item}}</li>
    <li v-for=‘(item,index) in list‘> {{item}}+ ‘---‘{{index}} </li>
  • key的作用:帮助Vue区分不同的元素,从而提高性能

    <li :key=‘item.id‘ v-for=‘(item,index) in list‘>{{item}} + ‘---‘ + {{index}}</li>

     

  • v-for 遍历对象

    <div v-for=‘(value, key, index) in object‘> </div>

     

    使用原生js遍历对象

    var obj = {
     uname : ‘Laity‘,
     age : 12,
     gender : ‘male‘
    }
    for (var key in obj){
     console.log(key,obj[key]);
    }

    使用Vue遍历对象

    <div id="app">
        <div v-for="(value, key, index) in obj">
            {{ value + ‘---‘ + key + ‘---‘ + index}}
        </div>
    </div>
    <script type="text/javascript" src="js/vue.js"></script>
    <script>
    var vm = new Vue({
            el: #app,
            data:{
                obj:{
                    uname : Laity,
                    age : 16,
                    gender : male
                }
            }
        })
    </script>
     
  • v-ifv-for 结合使用

    <div v-if=‘value==12‘ v-for=‘(value, key, index) in object‘></div>

Vue基础

原文:https://www.cnblogs.com/laity0117/p/14820905.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!