VUE基础入门使用教程

简介: VUE基础入门使用教程

第一个Vue程序


.html

<!--view层 ${}  变成了一个模板-->
<div id="app">
    <ul>
        <li><span v-bind:title="m">鼠标悬停几秒查看此处动态绑定的提示信息!</span> </li>
        <li>{{name}}</li>
        <li>{{tit.name}}</li>
    </ul>
    <a v-bind:href="tit.url">b站链接</a>
</div>

.script

var vm =new Vue({
        el:"#app",  //元素的缩写 el
        data:{      //Model : 数据
            m:'Hello vue!',
            name:'Hello  框架',
            tit:{
                name:'Vue',
                url:'https://www.bilibili.com'
            }
        }
    });

07_事件处理-@click-@keyup

1.事件处理基本使用

事件的基本使用:
        1.使用v-on:xxx 或 @xxx 绑定事件,其中xxx是事件名;
        2.事件的回调需要配置在methods对象中,最终会在vm上
        3.methods中配置的函数,不需要箭头函数,否则this就不是vm了;
        4.methods中配置的函数,都是被vue所管理的函数,this指向的是vm 或者 组件实例对象;
        5.@click="demo" 和 @click="($event)"效果一致,但后者可以传参
==============================================================================
<div id="root">
      <button v-on:click="fn1()">点我提示信息1(不传参)</button>
      <button v-on:click="fn2($event,66)">点我提示信息2(传参)</button>
</div>
==============================================================================
    methods:{
             fn1(event){
             },
         fn2(event,number) {
             console.log(event,number)
             //console.log(event.target.innerText)
             //console.log(this)//此处的this是vm
             alert('同学你好');
         }
     }

2.事件修饰符

Vue中的事件修饰
  1. prevent : 阻止事件的默认行为 event.preventDefault() 常用
  2. stop : 停止事件冒泡 event.stopPropagation() 常用
  3. once : 事件只触发一次(常用)
==============================================================================
<!--阻止默认事件-->
      <a href="http://www.baidu.com" @click.prevent="showInfo">点击我提示信息</a>
      <!--阻止冒泡事件-->
      <div class="demo1" @click="showInfo">
          <button @click.stop="showInfo()">点击我提示信息</button>
      </div>
      <!--事件只触发一次(常用)-->
      <button  @click.once="showInfo">点击我提示信息</button>
==============================================================================
methods:{
    showInfo(e){
        // e.preventDefault();//阻止默认事件
        // e.stopPropagation();//阻止冒泡
        //e.onceProcessed(); //事件只触发一次
        alert('同学你好');
    }
}

3.键盘事件

<!-- 键盘事件
     1. keyup : 键盘弹起
     2. keydown : 按下键盘
 -->

08_计算属性- computed

1.姓名案例—用methods实现

因为methods没有缓存,所以只能反复调用,不建议使用这种方式

2.姓名案例—用计算属性去实现

一、计算属性:
       1.定义:要用的属性不存在,要通过已有属性计算得来。
       2.原理:底层借助了Objcet.defineproperty方法提供的getter和setter.
       3. get函数什么时候执行?
               (1).初次读取时会执行一次。
               (2).当依赖的数据发生改变时会被再次调用。
       4.优势:与methods实现相比, 内部有缓存机制(复用),效爷更高,调试方便。
       5.备注:
               (1).计算属性最终会出现在vm上,直接读取使用即可。
               (2).如果计算属性要被修改,那必须写set函数去响应修改,且set中 要引起计算时依赖的数据发生改变
<!--准备好一个容器-->
  <div id="root">
      姓:<input type="text" v-model="firstName"><br/>
      名:<input type="text" v-model="lastName"><br/>
      测试:<input type="text" v-model="x"><br/>
      全名:<span>{{fullName}}</span><br/> <!--这里get只调用了1次,因为computed有缓存,所以直接就给其他调用的赋值了-->
      全名:<span>{{fullName}}</span><br/>
      全名:<span>{{fullName}}</span><br/>
      全名:<span>{{fullName}}</span>
  </div>
const vm = new Vue({
   el:'#root',
   data:{
       firstName:'唐',
       lastName:'九',
       x:'你好'
   },
   computed:{//计算属性
        fullName:{
            //1.get有什么用?当有人在读取fullName时,get就会被调用,且返回值就作为,fullName的值
            //2.get什么是被调用?1.有人初次使用fullName的时候。2.fullName依赖数据发生改变的时候。
            get(){
                console.log('get被调用')
                //console.log(this);//此处的this是vm
                return this.firstName+'-'+this.lastName
            },
            //set什么是被调用? 当fullName被修改时
            set(value){
                console.log('set',value)
                let split = value.split('-');
                this.firstName=split[0];
                this.lastName=split[1]
            }
        }

3.data,methods,computed

二、data,methods,computed
data里面的属性,你写什么value,就是什么属性放在vm上
methods里面的方法,你写什么方法,就是什么方法放在vm上
computed里面,写的计算属性,他不是你写什么,vm上就放什么,
而是vm自动去找get的计算结果(返回值),放在vm身上了,
vm里面,放的计算结果的名字叫xxx

09_监视属性-watch

1.天气案例-监视属性

<!--准备好一个容器-->
  <div id="root">
      <h2 >今天天气很{{info}}</h2>
      <button @click="btn">切换天气</button>
  </div>
const vm = new Vue ({
    el:'#root',
     //添加属性,数据
    data:{
     isHot:true,
    },
     //计算属性
    computed:{
        info(){
            return this.isHot?'炎热':'凉爽';
        }
    },
    //方法,函数
     methods:{
        btn(){
             this.isHot= !this.isHot;
         }
     },
     //监视属性
     watch:{
        info:{
            //handler 什么时候被调用?isHot发生改变的时候
            handler(newValue,oldValue){
                console.log("isHot 被修改了",newValue,oldValue)
            },
            //立即执行,函数
            immediate:true, //初始化时,让handler,调用一下
        }
     }
})

2.天气案例-深度监视

深度监视:
(1)vue中的watch默认不检测对象内部值的改变(一层)。
(2)配置deep.true 可以监测对象内部值改变(多层)。
备注:
(1)vue自身可以监视对象内部值的改变,但是vue提供的watch默认不可以
(2)使用时watch根据数据的具体结构,决定是否采用深度监视。
==============================================================================
<!--准备好一个容器-->
  <div id="root">
      <h2 >a的值是:{{numbers.a}}</h2>
      <button @click="numbers.a++">点我a+1</button>
  </div>
==============================================================================
 const vm = new Vue ({
        el:'#root',
         //添加属性,数据
        data:{
         numbers:{
             a:1,
             b:1,
         }
        },
         //监视属性:一般默认,不提供多级化机构的监控
         watch:{
            info:{
                //handler 什么时候被调用?isHot发生改变的时候
                handler(newValue,oldValue){
                    console.log("isHot 被修改了",newValue,oldValue)
                },
                //立即执行,函数
                immediate:true, //初始化时,让handler,调用一下
            },
             numbers:{
                 //深度监视,监视多级化结构中所有属性变化
                 deep:true,
                 handler() {
                     console.log("number改变了")
                 }
             }
         }
    })

10_绑定样式-:class

绑定样式

<!--准备好一个容器-->
<div id="root" >
    <!--绑定class样式--字符串写法,适用于:样式的类名不确定,需要动态指定 -->
    <div class="basic" :class="mood" @click="btn">{{name}}</div><br>
    <!--绑定class样式--数组写法,适用于:要绑定的样式个数不确定,名字也不确定 -->
    <div class="basic" :class="classArr">{{name}}</div><br>
    <!--绑定class样式--对象写法,适用于:要绑定的样式个数确定,名字也确定,但要动态决定用不用 -->
    <div class="basic" :class="classObj">{{name}}
</div>
 ==============================================================================
    new Vue({
        el:'#root',
        data:{
            name:'肉肉',
        //字符串
            mood:'normal',
        //数组
            classArr:['atguigu1','atguigu2','atguigu3'],
        //对象
            classObj:{
                atguigu1:false,
                atguigu2:false,
            }
        }
 ==============================================================================    
    <style>
        .basic{
            width: 400px;
            height: 100px;
            border: 1px solid black;
        }
        .happy{
            background-color: #0093E9;
            background-image: linear-gradient(160deg, #0093E9 0%, #80D0C7 100%);
        }
        .sad{
            background-color: #D9AFD9;
            background-image: linear-gradient(0deg, #D9AFD9 0%, #97D9E1 100%);
        }
        .normal{
            background-color: #85FFBD;
            background-image: linear-gradient(45deg, #85FFBD 0%, #FFFB7D 100%);
        }
        .atguigu1{
        }
        .atguigu2{
            border-radius: 15px 50px 30px 5px
        }
        .atguigu3{
            background-color: cornflowerblue;
        }
    </style>

11_条件渲染-v-show : v-if

条件渲染

1.使用v-show,做条件渲染
   <h2 v-show="false">欢迎来到{{name}}</h2>
   <h2 v-show="1===1">欢迎来到{{name}}</h2>
  2.使用v-if做条件渲染
   <h2 v-if="1===1">欢迎来到{{name}}</h2>
   <h2 v-if="false">欢迎来到{{name}}</h2>
        v-show不安全,在网页源码,可以看见,v-if看不见,所以安全!
        但是频繁切换,最好使用show
        频率低的用v-if
==============================================================================     
        <!--准备好一个容器-->
  <div id="root">
      <h2 >当前n值是{{n}}</h2>
      <button @click="n++">点击+n</button>
      <!--
      <div v-show="n===1">Angular</div>
      <div v-show="n===2">React</div>
      <div v-show="n===3">Vue</div>
      -->
      <!--  v-else和v-else-if-->
      <div v-if="n===1">Angular</div>
      <div v-else-if="n===2">React</div>
      <div v-else-if="n===3">Vue</div>
      <div v-else>哈哈哈</div>
  </div>
相关文章
|
22天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
22天前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
21 1
|
22天前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
27 1
|
22天前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
22天前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
24天前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
26天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
31 1
vue学习第一章
|
26天前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
24 1
vue学习第三章
|
26天前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
35 1
vue学习第四章
|
26天前
|
JavaScript 前端开发 算法
vue学习第7章(循环)
欢迎来到瑞雨溪的博客,一名热爱JavaScript和Vue的大一学生。本文介绍了Vue中的v-for指令,包括遍历数组和对象、使用key以及数组的响应式方法等内容,并附有综合练习实例。关注我,将持续更新更多优质文章!🎉🎉🎉
23 1
vue学习第7章(循环)