当前位置: 首页 > news >正文

Vue.js - Vue 的安装 以及 常用的 Vue 指令 【0基础向 Vue 基础学习】

文章目录

  • Vue 快速上手
    • 1、Vue.js 官网 & Vue.js 的获取
    • 2、创建 Vue 实例,初始化渲染
    • 3、插值表达式
  • 安装 Vue 开发者工具:装插件调试 Vue 应用
  • Vue 指令
    • 1、v-show 指令
    • 2、v-if
    • 3、v-else & v-else-if
    • 4、v-on
      • v-on 调用传参
    • 5、v-bind
      • v-bind 对于样式控制的增强 - 操作class
    • 6、v-for
      • v-for 中的 key
    • 7、v-model

Vue 快速上手

1、Vue.js 官网 & Vue.js 的获取

​ Vue3 官网:Vue.js - 渐进式 JavaScript 框架 | Vue.js

​ Vue2 官网:Vue.js

​ 本系列将以如下的 Vue.js 版本为大家进行实例的演示与讲解

<!-- 引入的是开发版本包 - 包含完整的注释和警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>

2、创建 Vue 实例,初始化渲染

在这里插入图片描述

创建 Vue 实例,初始化渲染的核心步骤:

  1. 准备容器 (Vue所管理的范围)
  2. 引包 (开发版本包 / 生产版本包) 官网
  3. 创建实例
  4. 添加配置项 => 完成渲染

创建一个 vue 实例:

const app = new Vue({el: '#app',//el 指定挂载点,选择器指定控制的是哪个盒子data: {//data 提供数据message: '迪幻',count: 2386},})

完整的代码:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app">{{message}}{{count}}</div>
</body><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {message: '迪幻',count: 2386},})
</script></html>

3、插值表达式

插值表达式是一种 Vue 的模板语法

在这里插入图片描述

效果图

在这里插入图片描述

1. 作用:

利用表达式进行插值,渲染到页面中

表达式:是可以被求值的代码,JS引擎会将其计算出一个结果

money + 100
money - 100
money * 10
money / 10 
price >= 100 ? '真贵':'还行'
obj.name
arr[0]
fn()
obj.fn()

2. 语法:

{{ 表达式 }}

<h3>{{title}}<h3><p>{{nickName.toUpperCase()}}</p><p>{{age >= 18 ? '成年':'未成年'}}</p><p>{{obj.name}}</p><p>{{fn()}}</p>

3. 注意点:

(1)使用的数据必须存在(data)

(2)支持的是表达式,而非语句,比如:if for…

(3)不能在标签属性中使用{{ }} 插值

安装 Vue 开发者工具:装插件调试 Vue 应用

(1)通过谷歌应用商店安装 (国外网站)

(2)极简插件: 下载 → 开发者模式 → 拖拽安装 → 插件详情允许访问文件

下载地址:https://chrome.zzzmh.cn/index

在这里插入图片描述

打开 Vue 运行的页面,调试工具中 Vue 栏,即可查看修改数据,进行调试。

在这里插入图片描述

Vue 指令

1、v-show 指令

  • 作用: 控制元素显示隐藏
  • 语法: v-show = “表达式” 表达式值 true 显示, false 隐藏
  • 原理: 切换 display:none 控制显示隐藏
  • 场景: 频繁切换显示隐藏的场景

在这里插入图片描述

2、v-if

  • 作用: 控制元素显示隐藏(条件渲染)
  • 语法: v-if = “表达式” 表达式值 true 显示, false 隐藏
  • 原理: 基于条件判断,是否 创建 或 移除 元素节点
  • 场景: 要么显示,要么隐藏,不频繁切换的场景

在这里插入图片描述

注意:v-show 和 v-if 最大的区别:

  • v-show 只是控制元素的显示与隐藏,但是元素是一直存在的
  • v-if 是只有在其表达式为真时才会创建相应的标签,而为假时则不会创建此标签
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app"><div v-show="flag">这是v-show控制的盒子</div><div v-if="flag">这是v-if控制的盒子</div></div>
</body><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {flag: true}})
</script></html>

3、v-else & v-else-if

  • 作用: 辅助 v-if 进行判断渲染
  • 语法: v-else v-else-if = “表达式”
  • 注意: 需要紧挨着 v-if 一起使用

例如:

在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app"><p v-if="gender===1">男生</p><p v-else>女生</p><p v-if="score>90">grade-A</p><p v-else-if="score>80">grade-B</p><p v-else-if="score>70">grade-C</p><p v-else="score>60">grade-D</p></div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {gender: 1,score: 79}})
</script></html>

4、v-on

  • 作用: 注册事件
  • 语法: ① v-on:事件名 = “内联语句” ② v-on:事件名 = “methods中的函数名”
  • 简写:@事件名 = 添加监听 + 提供处理逻辑
  • 注意:methods函数内的 this 指向 Vue 实例

在这里插入图片描述

在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app"><button @click="login">{{message}}</button></div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {message: '迪幻登录',},methods: {login() {alert(this.message)}}})</script></html>

v-on 调用传参

在这里插入图片描述

例子

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app"><h1>余额:</h1>{{money}}</h1><button @click="buy(price1)">{{title1}}</button><button @click="buy(price2)">{{title2}}</button></div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {money: 100,price1: 5,price2: 10,title1: '可乐5元',title2: '蛋糕10元'},methods: {buy(price) {this.money -= price}},})
</script></html>

5、v-bind

  • 作用:动态的设置html的标签属性 → src url title …
  • 语法:v-bind:属性名=“表达式”
  • 注意:简写形式 :属性名=“表达式”

在这里插入图片描述

v-bind 对于样式控制的增强 - 操作class

语法 :class = “对象/数组”

① 对象 → 键就是类名,值是布尔值。如果值为 true,有这个类,否则没有这个类

<div class="box" :class="{ 类名1: 布尔值, 类名2: 布尔值 }"></div>

适用场景:一个类名,来回切换

在这里插入图片描述

② 数组 → 数组中所有的类,都会添加到盒子上,本质就是一个 class 列表

<div class="box" :class="[ 类名1, 类名2, 类名3 ]"></div>
:class="['pink', 'big']"

适用场景:批量添加或删除类

注意:如果没有 img 标签没有 v-bind 属性的话,src就会只会被认为是 url 这个字面量,而不是一个变量

实例

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app"><!-- v-bind:src   =>   :src --><img src="imgUrl" v-bind:title="msg" alt=""><img :src="imgUrl" :title="msg" alt=""></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {imgUrl: './imgs/10-02.png',msg: 'hello 迪幻'}})</script>
</body></html>

6、v-for

  1. 作用: 基于数据循环, 多次渲染整个元素

    • 遍历数组语法: v-for = “(item, index) in 数组”

    • item 每一项, index 下标

    • 省略 index: v-for = “item in 数组” → 数组、对象、数字…

在这里插入图片描述

v-for 中的 key

  • 语法:key属性 = “唯一标识”
  • 作用:给列表项添加的唯一标识。便于Vue进行列表项的正确排序复用。

在这里插入图片描述

v-for 的默认行为会尝试 原地修改元素 (就地复用)

  • key作用: 给元素添加的唯一标识,便于Vue进行列表项的正确排序复用。

  • 注意点:

    1. key 的值只能是 字符串 或 数字类型
    2. key 的值必须具有 唯一性
    3. 推荐使用 id 作为 key(唯一),不推荐使用 index 作为 key(会变化,不对应)

在这里插入图片描述

7、v-model

  1. 作用: 给 表单元素 使用, 双向数据绑定 ① 数据变化 → 视图自动更新 ② 视图变化 → 数据自动更新
  2. 语法: v-model = ‘变量’

在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div id="app"><input type="text" v-model="username"></div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {username: 'dihuan',},})
</script></html>

常见的表单元素都可以用 v-model 绑定关联 → 快速 获取 或 设置 表单元素的值

v-model 应用于其他表单元素

它会根据 控件类型 自动选取 正确的方法 来更新元素

在这里插入图片描述

本次分享就到这里,感谢大家的支持与观看,若有谬误请各位谅解与指出,我们下期再见

相关文章:

  • Pytorch-08 实战:手写数字识别
  • 力扣刷题---3146. 两个字符串的排列差
  • 开源内网穿透神器:中微子代理(neutrino-proxy)实现内网穿刺
  • python毕设项目选题汇总(全)
  • 27寸2K显示器 - HKC G27H2
  • ELK 日志监控平台(一)- 快速搭建
  • springboot 两个相同类型的Bean使用@Resouce加载
  • 数据库工具类
  • CHI dataless 传输——CHI(4)
  • 【图像超分】论文精读:Residual Non-local Attention Networks for Image Restoration(RNAN)
  • netty-socketio 集群随记
  • 如何在cPanel面板中开启盗链保护
  • 瑞芯微RV1126——人脸识别框架分析
  • Go语言的命名规范是怎样的?
  • 【数据结构】数据结构中的隐藏玩法——栈与队列
  • CSS 提示工具(Tooltip)
  • ECMAScript6(0):ES6简明参考手册
  • Invalidate和postInvalidate的区别
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Redis字符串类型内部编码剖析
  • Vue.js源码(2):初探List Rendering
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Windows Containers 大冒险: 容器网络
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 配置 PM2 实现代码自动发布
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 走向全栈之MongoDB的使用
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​人工智能书单(数学基础篇)
  • # 飞书APP集成平台-数字化落地
  • #include
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (day 12)JavaScript学习笔记(数组3)
  • (day6) 319. 灯泡开关
  • (floyd+补集) poj 3275
  • (Qt) 默认QtWidget应用包含什么?
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)C#调用WebService 基础
  • (转)Google的Objective-C编码规范
  • (转)setTimeout 和 setInterval 的区别
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • ./configure、make、make install 命令
  • .DFS.
  • .gitignore
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NetCore 如何动态路由
  • .NetCore+vue3上传图片 Multipart body length limit 16384 exceeded.
  • .net对接阿里云CSB服务
  • .NET基础篇——反射的奥妙
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构