Vue基础知识总结

一、初识vue

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架

第一个vue页面

在这里插入图片描述
通过通过上面的 vue 案例,总结 vue 的使用方法如下:

  • 创建dom结构,作为vue实例挂载点,vue实例中的所有数据只能在此dom范围内使用
<div id="app"></div>
  • 通过 new Vue 创建 vue 实例
  • el 属性指定当前 vue 实例的挂载点
  • data 中是模型数据,这些数据依赖于当前的vue实例,可以在控制台中访问data数据
  • 可以通过插值表达式使用 data 中的数据

vue和原生js对比

案例需求:将文本框输入的内容实时显示到页面上
在这里插入图片描述
vue代码

<div id="app">
    <input type="text" v-model="message">
    <p>{{message}}</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            message: ''
        }
    });
</script>

原生js代码

<div>
    <input type="text">
    <p></p>
</div>
<script>
    var input = document.querySelector("input");
    var p = document.querySelector("p");
    input.addEventListener("keyup", () => {
        p.innerHTML = input.value;
    });
</script>

对比结果
vue 中不用操作 dom 元素,这可以让开发者将经历集中到数据处理及业务逻辑开发中

二、数据绑定

所谓数据绑定,就是将 vue 实例中的 data 属性中的变量显示到挂载点(dom结构)中

内容绑定

将 data 中的数据显示成内容(开始标签与结束标签之间)使用 {{}}

<div id="app">
   <p>{{title}}</p>
</div>

上面只能显示纯文本,如果要显示 html 内容,需要使用 v-html 指令

<p v-html="content"></p>

属性绑定

将data中的数据作为某个元素的属性的值,使用 v-bind:属性名称 指令,属性可以是内置,也可以是自定义的

<p v-bind:id="id">{{title}}</p>

v-bind: 可以缩写为 :

<p :id="id">{{title}}</p>

表单控件的值

可以用 v-model 指令在表单 、 及 元素上创建双向数据绑定,它会根据控件类型自动选取正确的方法来更新元素。

表单类型绑定的值
v-mode:text绑定的值是value
v-mode:textarea绑定的值是innerHTML
v-mode:radio绑定的值是value
v-mode:checkbox/select(单选)绑定的值是布尔值
v-mode:checkbox/select(多选)绑定的值是数组

循环遍历

v-for遍历数组

  • 作用:根据数组中的元素遍历指定模板内容生成内容
  • 语法:
<ul>
    <!-- item: 是每一项元素 index: 下标/索引 -->
    <li v-for="(item, index) in name">
       {{index+1}}.{{item}}
    </li>
</ul>

v-for遍历对象

  • 作用:根据数组中的元素遍历指定模板内容生成内容
  • 语法:
<ul>
    <!-- value:属性值  key:属性名  index:下标/索引 -->
    <li v-for="(value, key, index) in info">
       {{index+1}}.{{value}}
    </li>
</ul>

条件渲染

vi-f与v-else-if与v-else
Vue的条件指令可以根据表达式的值在DOM中渲染或销毁元素或组件

<h2 v-if="score>=90">优秀</h2>
<h2 v-else-if="score>=80">良好</h2>
<h2 v-else-if="score>=60">及格</h2>
<h2 v-else>不及格</h2>

v-show
v-show的用法和v-if非常相似,也用于决定一个元素是否渲染

<h2 v-show="isShow">{{message}}</h2>

v-if 和 v-show对比

  • v-if 当条件为false时,压根不会有对应的元素在DOM中
  • v-show 当条件为false时, 仅仅是将元素的 display 属性设置 none 而已
    开发中如何选择呢?
  • 当需要在显示与隐藏之间切换很频繁时,使用v-show
  • 当只有一次切换时,通过使用v-if

样式处理

操作元素的 class 列表和内联样式是数据绑定的一个常见需求。因为它们都是 attribute,所以我们可以用 v-bind 处理它们:只需要通过表达式计算出字符串结果即可
vue操作class

  • class 与 v-bind:class 可以共存,但是其实最终操作的都是元素的 class 属性
  • v-bind:class 的值可以是字符串、对象或者数组
  • 对象语法的含义是:class后面跟的是一个对象
<!-- 用法一:直接通过{}绑定一个类 -->
<h2 :class="{'active': isActive}">Hello World</h2>
<!-- 用法二:也可以通过判断,传入多个值 -->
<h2 :class="{'active': isActive, 'line': isLine}">Hello World</h2>
  • 数组语法的含义是:class后面跟的是一个数组
<!-- 1. ['active','news'] 当字符串使用 -->
<h2 class="title" :class="['active','news']">{{message}}</h2>
<!-- [active, new] 当变量使用 -->
<h2 class="title" :class="[active,news]">{{message}}</h2>
<!-- 3. 函数返回值使用 -->
<h2 class="title" :class="getClasses()">{{message}}</h2>

vue操作style

  • 对象语法
:style="{color: currentColor, fontSize: fontSize + 'px'}" 
  • 数组语法
<div v-bind:style="[baseStyles, fontColor]"></div>
//js
baseStyle: {background: 'lime'},
fontSize: {fontSize: '80px'}

事件绑定

  • js 中可以通过 addEventListener 的方式为元素注册各种事件类型
  • vue 中通过 v-on 指令为元素注册事件监听
<button v-on:click="greet">按钮</button>
<script>
    let app = new Vue({
        el: '#app',
        data: {
        },
        methods: {
            greet: function () {
                console.log('初辰')
            }
        }
    })
</script>

计算属性和选择器

计算属性

模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护
比如我们有firstName和lastName两个变量,我们需要显示完整的名称。但是如果多个地方都需要显示完整的名称,我们就需要写多个{{firstName}} {{lastName}},将上面代码转换成计算属性

/* html */ 
<h2>{{fullNmae}}</h2>
/* js */
computed: {
    fullNmae: function () {
        return this.firstNmae + ' ' + this.lastNmae;
    }
}

计算属性的缓存
methods和computed区别

  • methods不管数据发没发生变化都会调用函数
  • computed只有在依赖数据发生变化时才回调函数

侦听器

vue 中的计算属性是不支持异步操作的,只能计算一些同步的值,但是可以使用 vue-async-computed 插件实现这一点
侦听器的应用场景:数据变化时执行异步或开销较大的操作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初辰ge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值