vue 快速入门

文章目录

  • 一、插值表达式 {{}}
  • 二、Vue 指令
    • 2.1 v-text 和 v-html:
    • 2.2 v-if 和 v-show:
    • 2.3 v-on:
    • 2.4 v-bind 和 v-model:
    • 2.5 v-for:
  • 三、生命周期
  • 四、Vue 组件库 Element
  • 五、Vue 路由

本文章适用于后端人员,快速了解 vue。

一、插值表达式 {{}}

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

我们可以用插值表达式渲染出 Vue 提供的数据。

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

语法:

插值表达式语法:{{ 表达式 }}

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

错误用法:

1.在插值表达式中使用的数据 必须在data中进行了提供
<p>{{hobby}}</p>  //如果在data中不存在 则会报错2.支持的是表达式,而非语句,比如:if   for ...
<p>{{if}}</p>3.不能在标签属性中使用 {{  }} 插值 (插值表达式只能标签中间使用)
<p title="{{username}}">我是P标签</p>

二、Vue 指令

概念:指令(Directives)是 Vue 提供的带有v- 前缀的特殊标签属性

vue 中的指令按照不同的用途可以分为如下 6 大类:

  • 内容渲染指令(v-html、v-text)
  • 条件渲染指令(v-show、v-if、v-else、v-else-if)
  • 事件绑定指令(v-on)
  • 属性绑定指令 (v-bind)
  • 双向绑定指令(v-model)
  • 列表渲染指令(v-for)

接下来我们需要学习 vue 的常用指令,如下表所示:

指令作用
v-bind为HTML标签绑定属性值,如设置 href , css样式等
v-model在表单元素上创建双向数据绑定
v-on为HTML标签绑定事件
v-if条件性的渲染某元素,判定为true时渲染,否则不渲染
v-else辅助 v- if
v-else-if辅助 v-if
v-show根据条件展示某元素,区别在于切换的是display属性的值
v-for列表渲染,遍历容器的元素或者对象的属性
v-text内容渲染
v-html内容渲染

在创建 vue 对象时,有几个常用的属性:

  1. el: 用来指定哪些标签受 Vue 管理。

  2. data: 用来定义数据模型。

  3. methods: 用来定义函数。

2.1 v-text 和 v-html:

内容渲染指令用来辅助开发者渲染 DOM 元素的文本内容。常用的内容渲染指令有如下 2 个:

  1. v-text:

使用语法:<p v-text="uname">hello</p>,意思是将 uame 值渲染到 p 标签中,会覆盖标签原有内容。

  1. v-html:

使用语法:<p v-html="intro">hello</p>,意思是将 intro 值渲染到 p 标签中,会覆盖标签原有内容。

示例代码:

<body><div id="app"><h2>个人信息</h2><!-- 既然指令是vue提供的特殊的html属性,所以咱们写的时候就当成属性来用即可 --><p v-text="uname">姓名:</p> <p v-html="intro">简介:</p></div> 
</body>
<script>const app = new Vue({el:'#app',data:{uname:'张三',intro:'<h2>这是一个非常优秀的boy<h2>'}})
</script>

效果如下:

image-20241103104438293

2.2 v-if 和 v-show:

条件渲染指令,用来辅助开发者按需控制 DOM 的显示与隐藏。条件渲染指令有如下两个,分别是:

  1. v-show:

使用语法: v-show = “表达式”,表达式值为 true 显示, false 隐藏。

  1. v-if:

使用语法: v-if= “表达式”,表达式值 true显示, false 隐藏。

示例代码:

<body><div id="app"><div class="box" v-show="flag1">我是v-show控制的盒子flag1</div><div class="box" v-show="flag2">我是v-show控制的盒子flag2</div><div class="box" v-if="flag1">我是v-if控制的盒子flag1</div><div class="box" v-if="flag2">我是v-if控制的盒子flag2</div></div>
</body>
<script>const app = new Vue({el: '#app',data: {flag1: false,flag2: true}})
</script>

效果如下:

image-20241103112156006

二者的区别:

观察下面这张图片。

image-20241103112252720

可以发现,浏览器呈现的效果是一样的,但是浏览器中html源码不一样。v-if指令,不满足条件的标签代码直接没了,而v-show指令中,不满足条件的代码依然存在,只是添加了css样式来控制标签不去显示。

2.3 v-on:

v-on: 用来给 html 标签绑定事件的。需要注意的是如下2点

  • v-on 语法给标签的事件绑定的函数,必须是 vue 对象种声明的函数。
  • v-on 语法绑定事件时,事件名相比较 js 中的事件名,没有 on。
  • v-on 简写为 @

例如:在 js 中,事件绑定 demo 函数。

<input onclick="demo()">

vue 中,事件绑定 demo 函数。

<input v-on:click="demo()">

示例代码:

<body><div id="app"><input type="button" value="点我一下" v-on:click="handle()"><input type="button" value="点我一下" @click="handle()"></div>
</body>
<script>//定义Vue对象new Vue({el: "#app", //vue接管区域data:{},methods: {handle: function(){alert("你点我了一下...");}}})
</script>

效果如下:

image-20241103145446347

2.4 v-bind 和 v-model:

指令作用
v-bind为HTML标签绑定属性值,如设置 href , css 样式等
v-model在表单元素上创建双向数据绑定

其中 v-bind 可以简写为::

v-model 中双向的含义:

vue 对象的 data 属性中的数据变化,视图展示会一起变化。

视图数据发生变化,vue 对象的 data 属性中的数据也会随着变化。

双向绑定的作用:可以获取表单的数据的值,然后提交给服务器

示例代码如下:

<body><div id="app"><a v-bind:href="url">链接1</a><a :href="url">链接2</a><input type="text" v-model="url"></div>
</body>
<script>//定义Vue对象new Vue({el: "#app", //vue接管区域data:{url: "https://www.baidu.com"}})
</script>

效果如下:

如果对输入框里面的值进行修改,那么链接1和链接2就会访问到相应的网址。

image-20241103151015886

2.5 v-for:

v-for: 从名字我们就能看出,这个指令是用来遍历的。其语法格式如下:

<标签 v-for="变量名 in 集合模型数据">{{变量名}}
</标签>

有时我们遍历时需要使用索引,那么 v-for 指令遍历的语法格式如下:

<标签 v-for="(变量名,索引变量) in 集合模型数据"><!--索引变量是从0开始,所以要表示序号的话,需要手动的加1-->{{索引变量 + 1}} {{变量名}}
</标签>

示例代码如下:

<body><div id="app"><ul><li v-for="(item, index) in booksList" :key="item.id"><span>{{ item.name }}</span><span>{{ item.author }}</span><button @click="del(item.id)">删除</button></li></ul></div></body>
<script>const app = new Vue({el: '#app',data: {booksList: [{ id: 1, name: '《红楼梦》', author: '曹雪芹' },{ id: 2, name: '《西游记》', author: '吴承恩' },{ id: 3, name: '《水浒传》', author: '施耐庵' },{ id: 4, name: '《三国演义》', author: '罗贯中' }]}})
</script>

效果如下:

image-20241103153143957

  • v-for 中的 key:

语法: key=“唯一值”。

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

为什么加key:Vue 的默认行会尝试原地修改元素就地复用)。

注意:

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

三、生命周期

vue 的生命周期:指的是 vue 对象从创建到销毁的过程。vue 的生命周期包含 8 个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法,这些生命周期方法也被称为钩子方法。其完整的生命周期如下图所示:

状态阶段周期
beforeCreate创建前
created创建后
beforeMount挂载前
mounted挂载完成
beforeUpdate更新前
updated更新后
beforeDestroy销毁前
destroyed销毁后

下图是 Vue 官网提供的从创建 Vue 到效果 Vue 对象的整个过程及各个阶段对应的钩子函数:

image-20241102185201852

其中我们后端程序员需要重点关注的是 mounted, 其他的我们了解即可。

mounted:挂载完成,Vue初始化成功,HTML页面渲染成功。

示例代码如下:

<body><div id="app"></div>
</body>
<script>//定义Vue对象new Vue({el: "#app", //vue接管区域data:{},methods: {},mounted () {alert("vue挂载完成,发送请求到服务端")}})
</script>

效果如下:

image-20241103153826179

四、Vue 组件库 Element

Element:是饿了么公司前端开发团队提供的一套基于 Vue 的网站组件库,用于快速构建网页。

Element 提供了很多组件(组成网页的部件)供我们使用。例如 超链接、按钮、图片、表格等等。

image-20241102190013793

ElementUI 的学习方式和我们之前的学习方式不太一样,对于 ElementUI,我们作为一个后台开发者,只需要 学会如何从 ElementUI的官网拷贝组件到我们自己的页面中,并且做一些修改即可

其官网地址:一个 Vue 3 UI 框架 | Element Plus

五、Vue 路由

Vue 中的路由:路径(#号之后的内容)和组件映射关系。

在这里插入图片描述

  • 插件 VueRouter 的使用:

官网如下:https://v3.router.vuejs.org/zh/

一共 7 个步骤(5 个固定步骤 + 2 个核心步骤)。

固定5个固定的步骤(不用死背,熟能生巧):

  1. 下载 VueRouter 模块到当前工程,版本 3.6.5

    yarn add vue-router@3.6.5
    
  2. main.js 中引入 VueRouter

    import VueRouter from 'vue-router'
    
  3. 安装注册

    Vue.use(VueRouter)
    
  4. 创建路由对象

    const router = new VueRouter()
    
  5. 注入,将路由对象注入到 new Vue 实例中,建立关联

    new Vue({render: h => h(App),router:router
    }).$mount('#app')
    

当我们配置完以上 5 步之后就可以看到浏览器地址栏中的路由变成了/#/的形式。表示项目的路由已经被 Vue-Router 管理了。

image-20241103164257491

代码示例:

// 路由的使用步骤 5 + 2
// 5个基础步骤
// 1. 下载 v3.6.5
// yarn add vue-router@3.6.5
// 2. 引入
// 3. 安装注册 Vue.use(Vue插件)
// 4. 创建路由对象
// 5. 注入到new Vue中,建立关联import VueRouter from 'vue-router'
Vue.use(VueRouter) // VueRouter插件初始化const router = new VueRouter()new Vue({render: h => h(App),router
}).$mount('#app')

两个核心步骤:

  1. 创建需要的组件(views目录),配置路由规则:

在这里插入图片描述

  1. 配置导航,配置路由出口(路径匹配的组件,显示的位置):
<div class="footer_wrap"><a href="#/find">发现音乐</a><a href="#/my">我的音乐</a><a href="#/friend">朋友</a>
</div>
<div class="top"><!-- 匹配的组件所展示的位置 --><router-view></router-view>
</div>

结语:
其实写博客不仅仅是为了教大家,同时这也有利于我巩固知识点,和做一个学习的总结,由于作者水平有限,对文章有任何问题还请指出,非常感谢。如果大家有所收获的话,还请不要吝啬你们的点赞收藏和关注,这可以激励我写出更加优秀的文章。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/463165.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据建模圣经|数据模型资源手册卷2,探索数据库逻辑模型设计

在企业信息系统体系结构中&#xff0c;数据处于核心地位。数据模型是信息系统开发和应用的基本指南&#xff0c;在逻辑模型层面为数据在数据库中的存储提供蓝图&#xff0c;以及对宏观世界的抽象设计。 简介 《The Data Model Resource Book, Revised Edition, Volume2》&#…

形态学操作篇 原理公式代码齐活

一、腐蚀 腐蚀操作的核心原理是利用一个结构元素在图像上进行扫描&#xff0c;判断结构元素所覆盖的区域与前景像素的关系。如果结构元素完全被包含在前景像素区域内&#xff0c;那么结构元素中心对应的像素位置在腐蚀后的图像中被标记为前景像素&#xff1b;如果结构元素不完…

Unity引擎材质球残留贴图引用的处理

大家好&#xff0c;我是阿赵。   这次来分享一下Unity引擎材质球残留贴图引用的处理 一、 问题 在使用Unity调整美术效果的时候&#xff0c;我们很经常会有这样的操作&#xff0c;比如&#xff1a; 1、 同一个材质球切换不同的Shader、 比如我现在有2个Shader&#xff0c;…

Flarum:简洁而强大的开源论坛软件

Flarum简介 Flarum是一款开源论坛软件&#xff0c;以其简洁、快速和易用性而闻名。它继承了esoTalk和FluxBB的优良传统&#xff0c;旨在提供一个不复杂、不臃肿的论坛体验。Flarum的核心优势在于&#xff1a; 快速、简单&#xff1a; Flarum使用PHP构建&#xff0c;易于部署&…

数据结构-图

1. 感性的认识图 图是是数据结构中最复杂的一种。图的概念特别特别的多&#xff0c;相关的算法问题也很多。如果我们一开始就讲复杂的概念&#xff0c;可能很多同学都学不下去&#xff0c;太深奥&#xff0c;太枯燥。我们不妨先感性的认识图。 图看起来就像下图这样&#xff1…

普林斯顿微积分读本PDF(英文版原版)

普林斯顿微积分读本PDF英文版: https://caiyun.139.com/m/i?005Chb93yVHtQ 对于大多数学生来说&#xff0c;微积分或许是他们曾经上过的倍感迷茫且最受挫折的一门课程了. 而《普林斯顿微积分读本》 不仅让学生能有效地学习微积分&#xff0c;更重要的是提供了战胜微积分的必备…

Netty学习——NIO基础与IO模型

导学 Socket和NIO的区别 Socket和NIO是Java中用于网络编程的两个不同的API&#xff0c;具有不同的设计理念和用途。以下是它们的主要区别&#xff1a; 1. 定义 Socket: Socket是Java中用于实现网络通信的传统API&#xff0c;通常被称为Java I/O&#xff08;输入/输出&#…

Cesium基础-(Entity)-(ellipse)

里边包含Vue、React框架代码详细步骤、以及代码详细解释 6、ellipse 圆与椭圆 EllipseGeometry(椭圆几何体)是 Cesium 中用于在三维空间中创建椭圆形状的类。这种椭圆形状可以位于地球表面(或其他椭球体)上,也可以在地球表面上方或下方的一定高度。EllipseGeometry 允许你…

014:无人机遥控器操作

摘要&#xff1a;本文详细介绍了无人机遥控器及其相关操作。首先&#xff0c;解释了油门、升降舵、方向舵和副翼的概念、功能及操作方式&#xff0c;这些是控制无人机飞行姿态的关键部件。其次&#xff0c;介绍了美国手、日本手和中国手三种不同的操作模式&#xff0c;阐述了遥…

Java—— CompletableFuture

CompletableFuture 1、概述1.1、Future接口1.2、CompletionStage接口 2、CompletableFuture结构2.1、字段和常量2.2、内部类 3、CompletableFuture原理3.1、设计思想3.2、获取任务结果的实现不带参数的Get方法实现带超时参数的Get方法实现立即返回结果的GetNow方法实现 3.3、开…

uniapp使用uni.createInnerAudioContext()播放指定音频并且切换

uniapp使用uni.createInnerAudioContext()播放指定音频并且切换 因为做的小程序或者h5需要视频讲解或者音乐组件的 默认展示播放按钮&#xff0c;当点击播放的时候 显示暂停音乐这样的一个效果。 在unipp中我们直接只用uni.createInnerAudioContext()代替audio&#xff0c;使用…

《TCP/IP网络编程》学习笔记 | Chapter 2:套接字类型与协议设置

《TCP/IP网络编程》学习笔记 | Chapter 2&#xff1a;套接字类型与协议设置 《TCP/IP网络编程》学习笔记 | Chapter 2&#xff1a;套接字类型与协议设置套接字协议及其数据传输特性协议&#xff08;Protocol&#xff09;创建套接字协议族&#xff08;Protocol Family&#xff0…

小林渗透入门:burpsuite+proxifier抓取小程序流量

目录 前提&#xff1a; 代理&#xff1a; proxifier&#xff1a; 步骤&#xff1a; bp证书安装 bp设置代理端口&#xff1a; proxifier设置规则&#xff1a; proxifier应用规则&#xff1a; 结果&#xff1a; 前提&#xff1a; 在介绍这两个工具具体实现方法之前&#xff0…

举重场景哑铃图像分割系统:全面改进提升

举重场景哑铃图像分割系统源码&#xff06;数据集分享 [yolov8-seg-GhostHGNetV2&#xff06;yolov8-seg-EfficientHead等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AA…

【机器学习】连续属性离散化与sklearn.preprocessing.KBinsDiscretizer

1. KBinsDiscretizer的定义 KBinsDiscretizer是 scikit-learn 库中的一个类&#xff0c;用于将连续数据离散化成区间&#xff08;bins&#xff09;。这个类通过将特征值分配到 k 个等宽的区间&#xff08;bins&#xff09;来实现离散化&#xff0c;并且可以配置不同的编码方式…

OpenGL入门002——顶点着色器和片段着色器

文章目录 一些概念坐标转换阶段顶点着色器片段着色器VBOVAO 实战简介main.cppCMakeLists.txt最终效果 一些概念 坐标转换阶段 概述&#xff1a; 模型空间、世界空间、视图空间和裁剪空间是对象在3D场景中经历的不同坐标变换阶段。每个空间对应渲染管道的一个步骤&#xff0c;…

使用 Elastic、OpenLLMetry 和 OpenTelemetry 跟踪 LangChain 应用程序

作者&#xff1a;来自 Elastic Bahubali Shetti Langchain 应用程序的使用正在增长。构建基于 RAG 的应用程序、简单的 AI 助手等的能力正在成为常态。观察这些应用程序更加困难。考虑到现有的各种选项&#xff0c;本博客展示了如何将 OpenTelemetry 检测与 OpenLLMetry 结合使…

【Linux】从零开始使用多路转接IO --- select

碌碌无为&#xff0c;则余生太长&#xff1b; 欲有所为&#xff0c;则人生苦短。 --- 中岛敦 《山月记》--- 从零开始认识五种IO模型 1 前言2 认识多路转接select3 多路转接select等待连接4 完善代码5 总结 1 前言 上一篇文章我们讲解了五种IO模型的基本概念&#xff0c;并…

客户端与微服务之间的桥梁---网关

当我们创建好了N多个微服务或者微服务的实例之后&#xff0c;每个服务暴露出不同的端口地址&#xff0c;一般对于客户端请求&#xff0c;只需要请求一个端口&#xff0c;要隔离客户端和微服务的直接关系&#xff0c;保证微服务的安全性和灵活性&#xff0c;避免敏感信息的泄露。…

docker部署nginx+nacos+redis+java镜像和容器

nginx镜像制作 Dockerfile内容&#xff1a; # 基础镜像 FROM nginx # author MAINTAINER ruoyi# 挂载目录 VOLUME /home/ruoyi/projects/ruoyi-ui # 创建目录 RUN mkdir -p /home/ruoyi/projects/ruoyi-ui # 指定路径 WORKDIR /home/ruoyi/projects/ruoyi-ui # 复制conf文件到路…