前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VUE基础入门使用教程

VUE基础入门使用教程

作者头像
JanYork_小简
发布2022-05-18 15:57:16
4350
发布2022-05-18 15:57:16
举报
文章被收录于专栏:小简技术栈

第一个Vue程序

.html

代码语言:javascript
复制
<!--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

代码语言:javascript
复制
    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.事件处理基本使用

代码语言:javascript
复制
事件的基本使用:
        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.事件修饰符

代码语言:javascript
复制
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.键盘事件

代码语言:javascript
复制
<!-- 键盘事件
     1. keyup : 键盘弹起
     2. keydown : 按下键盘
 -->

08_计算属性- computed

1.姓名案例—用methods实现

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

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

代码语言:javascript
复制
一、计算属性:

       1.定义:要用的属性不存在,要通过已有属性计算得来。

       2.原理:底层借助了Objcet.defineproperty方法提供的getter和setter.

       3. get函数什么时候执行?

               (1).初次读取时会执行一次。

               (2).当依赖的数据发生改变时会被再次调用。

       4.优势:与methods实现相比, 内部有缓存机制(复用),效爷更高,调试方便。

       5.备注:

               (1).计算属性最终会出现在vm上,直接读取使用即可。

               (2).如果计算属性要被修改,那必须写set函数去响应修改,且set中 要引起计算时依赖的数据发生改变
代码语言:javascript
复制
<!--准备好一个容器-->
  <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>
代码语言:javascript
复制
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

代码语言:javascript
复制
二、data,methods,computed

data里面的属性,你写什么value,就是什么属性放在vm上

methods里面的方法,你写什么方法,就是什么方法放在vm上

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

09_监视属性-watch

1.天气案例-监视属性

代码语言:javascript
复制
<!--准备好一个容器-->
  <div id="root">

      <h2 >今天天气很{{info}}</h2>
      <button @click="btn">切换天气</button>

  </div>
代码语言:javascript
复制
 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.天气案例-深度监视

代码语言:javascript
复制
深度监视:

(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

绑定样式

代码语言:javascript
复制
<!--准备好一个容器-->
<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

条件渲染

代码语言:javascript
复制
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>

来源:3309064415

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022 年 05 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一个Vue程序
  • 07_事件处理-@click-@keyup
    • 1.事件处理基本使用
      • 2.事件修饰符
        • 3.键盘事件
        • 08_计算属性- computed
          • 1.姓名案例—用methods实现
            • 2.姓名案例—用计算属性去实现
              • 3.data,methods,computed
              • 09_监视属性-watch
                • 1.天气案例-监视属性
                  • 2.天气案例-深度监视
                  • 10_绑定样式-:class
                    • 绑定样式
                    • 11_条件渲染-v-show : v-if
                      • 条件渲染
                      相关产品与服务
                      容器服务
                      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档