VUE3学习---【一】【从零开始的VUE学习】

news2024/12/24 11:42:21

目录​​​​​​​

什么是Vue

渐进式框架

创建一个Vue应用

什么是Vue应用

使用Vue应用

根组件

挂载应用

模板语法

文本插值

原始HTML

Attribute绑定

简写

同名简写

布尔型Attribute

动态绑定多个值

使用JavaScript表达式

仅支持表达式

指令 Directives

指令名字Name

参数 Arguments

动态参数

动态参数值的限制

动态参数语法的限制

修饰符 Modifiers

什么是Vue

Vue是一款用于构建用户界面的JavaScript框架(渐进式框架)

Vue的两个核心功能:

  • 声明式渲染:Vue基于标准HTML拓展了一套模板语法,使得我们可以声明式地描述最终输出的HTMLJavaScript状态之间的关系
  • 响应式:Vue会自动追踪JavaScript状态并在其发生变化时响应式地更新DOM 

渐进式框架

渐进式框架的意思是:“可以根据用户的需求场景,用不同的方式使用Vue

  • 无需构建步骤,渐进式增强静态的HTML(CDN)
  • 在任何页面中作为Web Components嵌入(CDN)
  • 单页应用(构建)
  • 全栈 / 服务端渲染(SSR)
  • Jamstack / 静态站点生成(SSG)
  • 开发桌面端、移动端、WebGL界面

使用Vue的方法大致分为两种:“单文件组件(构建式)”、“API风格(CDN)

  • 单文件组件:使用Node.js等工具辅助构建Vue生产环境,在这个生产环境中我们可以使用一中和类似HTML格式的文件来书写Vue组件,它被称为单文件组件(*.vue文件,也叫SFC)
  • API风格:Vue的组件可以按两种不同的风格书写:“选项式API”、“组合式API
    • 选项式API(推荐新手):用包含多个选项的对象来描述组件的裸机,例如datamethods
    • 组合式API:使用导入的API函数来描述组件逻辑

注意:在本文章中将会使用无构建模式的选项式API

创建一个Vue应用

什么是Vue应用

Vue的世界,使用Vue我们需要创建一个Vue应用

这个应用包含了:

  • 应用数据:应用数据是动态更新
  • 应用行为:应用所做出的响应,例如鼠标点击行为等等

使用Vue应用

 使用Vue应用,我们一般有两个步骤

  • 创建Vue应用:定义Vue应用的数据、行为
  • 挂载Vue应用:指定这个Vue应用挂载到哪一个(多个)DOM对象上

Vue应用使用:“createApp”函数创建一个新的应用实例

语法:

createApp({ 根组件选项 })

一个例子:

import { createApp } from 'vue'

const app = createApp({
  /* 根组件选项 */
})

根组件

传入createApp的对象实际上是一个组件,每个应用都需要一个“根组件”,其它组件将作为其子组件

根组件创建有两种方式:

  • 创建一个根组件变量,随后传入根组件变量
  • 直接写入一个匿名根组件变量
<body>
	<div id="app">
		{{comment}}
	</div>
	<div id="app2">
		{{comment}}
	</div>
	<script>
		//创建一个根组件变量
		const root = {
			data() {
				return {
					comment:"Hello I am YangYang."
				}
			}
		};
		//将根组件变量作为参数传入
		const app = Vue.createApp(root).mount('#app');
		//直接传入匿名根组件
		const app2 = Vue.createApp({
			data() {
				return {
					comment:"Hello I am ZhaoYi."
				}
			}
		}).mount('#app2');
	</script>
</body>

挂载应用

成功创建一个应用后,我们还需要将这个应用挂载到某个DOM对象(容器)上,这个应用才会被渲染

语法:

应用.mount(CSS选择器)

  • 应用根组件的内容将会被渲染在容器元素里面,容器元素自己不会被视为应用的一部分
  • .mount()方法应该始终在整个应用配置和资源注册完成之后被调用,它的返回值是“根组件

一个例子:

//html
<div id="app"></div>
//js
app.mount('#app')

模板语法

Vue使用基于HTML的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的DOM

所有的Vue模板都是语法层面合法的HTML

文本插值

最基本的数据绑定形式是文本插值,它使用的是“Mustache”语法(即双大括号)

双大括号标签会被替换为相应组件实例中msg属性的值,同时msg属性更改时它也会同步更新

<span>Message: {{ msg }}</span>

原始HTML

双括号会将数据解释纯文本,而不是HTML,若想插入HTML需要使用“v-html”【指令

<span>的内容会被替换为rawhtml属性的值,插值为纯HTML --- 数据绑定将会被忽略,注意,不能使用v-html来拼接组合模板,因为Vue不是一个基于字符串的模板引擎

<body>
	<div id="app">
		<p>这是一个文本:{{rawhtml}}</p>
		<p>这是一个HTML:<span v-html="rawhtml"></span></p>
	</div>
	<script>
		const app = Vue.createApp({
			data(){
				return {
					rawhtml: '<span style="color:red">这是一个加粗的文本</span>'
				}
			}
		});
		app.mount('#app');
	</script>
</body>

效果:

Attribute绑定

双大括号不能在HTML attributes中使用,想要响应式地绑定一个attribute(属性),应该使用:“v-bind”【指令

<div v-bind:id="dynamicId"></div>

简写

因为v-bind非常实用,因此Vue提供了特定的简写语法

语法:

v-bind:参数” 相当于 “:参数

<div :id="dynamicId"></div>

同名简写

如果attribute(属性)的名称与绑定的JavaScript值的名称相同,那么可以进一步简化语法,省略attribute值

<!-- 与 :id="id" 相同 -->
<div :id></div>

<!-- 这也同样有效 -->
<div v-bind:id></div>

布尔型Attribute

布尔型attribute根据 ture / false值 来决定attribute是否应该存在于该元素上

disabled就是常见例子之一

<button :disabled="isButtonDisabled">Button</button>

isButtonDisabled为真值 或 一个空字符串(即 <button disabled="">)时,元素会包含这个disabled的属性而当其为其他假值时 attribute将被忽略(即该值不存在)

动态绑定多个值

如果你有一个包含多个attribute【属性】的JavaScript对象,那么我们可以直接绑定

data() {
  return {
    objectOfAttrs: {
      id: 'container',
      class: 'wrapper'
    }
  }
}

通过不带参数的v-bind,可以将它们一次性绑定到单个元素上

<div v-bind="objectOfAttrs"></div>

使用JavaScript表达式

Vue所有的数据绑定都支持完整的JavaScript表达式

{{ number + 1 }}

{{ ok ? 'YES' : 'NO' }}

{{ message.split('').reverse().join('') }}

<div :id="`list-${id}`"></div>

这些表达式都会被作为JavaScript,并且在执行过程中会被执行

JavaScript表达式的应用场景:

  • 文本插值{{双大括号}}
  • 任何Vue指令(以v-开头的)的值中

仅支持表达式

每个绑定仅支持单一表达式,也就是一段能够被求值的JavaScript代码

一个简单的判断方法:“是否可以被合法的写在return语句后面

下面的例子都是无效的:

<!-- 这是一个语句,而非表达式 -->
{{ var a = 1 }}

<!-- 条件控制也不支持,请使用三元表达式 -->
{{ if (ok) { return message } }}

指令 Directives

指令是带有v-前缀的特殊attributeVue提供了很多内置指令

指令attribute的期望值是一个JavaScript表达式,一个指令的任务是在表达式的值发生变化时响应式地更新DOM

语法:

Name:Arguments.prevent = 'value'

指令名字Name

指令名字其实就是指令

例如:

  • v-bind:绑定指令
  • v-if:选择指令
  • v-for:循环指令

参数 Arguments

某些指令需要一个参数,例如v-bind指令来响应式地更新一个HTML attribute 

<a v-bind:href="url"> ... </a>

<!-- 简写 -->
<a :href="url"> ... </a>

这里的“href”就是一个参数,它告诉“v-bind”指令将表达式“url”的值绑定到元素的“href”的attribute

动态参数

指令参数上可以使用一个JavaScript表达式,需要包含在一对方括号内,这时就叫做动态参数

<a v-bind:[attributeName]="url"> ... </a>

<!-- 简写 -->
<a :[attributeName]="url"> ... </a>

动态参数值的限制

动态参数中表达式的值应该是一个字符串,或者是null

null代表显式移除该绑定,其它非字符串的值会报错

动态参数语法的限制

动态参数表达式中不能使用“空格”和“引号

修饰符 Modifiers

修饰符是以点开头的特殊后缀,表明指令需要一些特殊的方式被绑定

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

COLORmap

在这段MATLAB代码中&#xff0c;surf(peaks)、map的定义以及colormap(map)的调用共同完成了以下任务&#xff1a; 1. **绘制曲面图**&#xff1a; - surf(peaks)&#xff1a;这个函数调用了MATLAB内置的peaks函数来生成数据&#xff0c;并使用surf函数将这些数据绘制成一个…

双向链表:实现、操作与分析【算法 17】

双向链表&#xff1a;实现、操作与分析 引言 双向链表&#xff08;Doubly Linked List&#xff09;是链表数据结构的一种重要形式&#xff0c;它允许节点从两个方向进行遍历。与单向链表相比&#xff0c;双向链表中的每个节点不仅包含指向下一个节点的指针&#xff08;或引用&…

蓝桥杯嵌入式的学习总结

一. 前言 嵌入式竞赛实训平台(CT117E-M4) 是北京国信长天科技有限公司设计&#xff0c;生产的一款 “ 蓝桥杯全国软件与信息技术专业人才大赛-嵌入式设计与开发科目 “ 专用竞赛平台&#xff0c;平台以STM32G431RBT6为主控芯片&#xff0c;预留扩展板接口&#xff0c;可为用户提…

数据结构篇--顺序查找【详解】

概念章 查找就是在数据集合中寻找某种条件的数据元素的过程。 查找表是指用于查找同一类型的数据元素集合。 找到了满足条件的数据元素&#xff0c;就是查找成功&#xff0c;否则就是称为查找失败。 关键字是指数据元素的某个数据项的值&#xff0c;可用于标识或者记录&…

【Java】线程暂停比拼:wait() 和 sleep()的较量

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持&#xff01; 在Java多线程编程中&#xff0c;合理地控制线程的执行是至关重要的。wait()和sleep()是两个常用的方法&#xff0c;它们都可以用来暂停线程的执行&#xff0c;但它们之间存在着显著的差异。本文将详…

【AI学习笔记】初学机器学习西瓜书概要记录(二)常用的机器学习方法篇

初学机器学习西瓜书的概要记录&#xff08;一&#xff09;机器学习基础知识篇(已完结) 初学机器学习西瓜书的概要记录&#xff08;二&#xff09;常用的机器学习方法篇(持续更新) 初学机器学习西瓜书的概要记录&#xff08;三&#xff09;进阶知识篇(待更) 文字公式撰写不易&am…

Django 基础之启动命令和基础配置

Django启动 django启动一般可以通过ide或者命令启动 ide启动&#xff1a; 启动命令&#xff1a; python manage.py runserver该命令后续可以增加参数&#xff0c;如&#xff1a; python manage.py runserver 8081 python manage.py runserver 127.0.0.1:8082 注意&#xff1…

StopIteration: 迭代停止完美解决方法 ️

&#x1f504; StopIteration: 迭代停止完美解决方法 &#x1f6e0;️ &#x1f504; StopIteration: 迭代停止完美解决方法 &#x1f6e0;️摘要引言正文1. 什么是StopIteration异常&#xff1f;&#x1f4dc;2. StopIteration在for循环中的处理机制&#x1f6a6;3. 如何自定…

数仓规范:命名规范如何设计?

目录 0 前言 1 表命名规范 2 字段命名规范 3 任务命名规范 4 层级命名规范 5 自定义函数命名规范 6 视图和存储过程的命名规范 7 综合案例分析 8 常见陷阱和如何避免 9 工具和最佳实践 10 小结 想进一步了解数仓建设这门艺术的&#xff0c;可以订阅我的专栏数字化建设…

深度学习02-pytorch-03-张量的数值计算

张量&#xff08;Tensor&#xff09;是多维数组的通用化概念&#xff0c;它可以表示标量&#xff08;0维&#xff09;、向量&#xff08;1维&#xff09;、矩阵&#xff08;2维&#xff09;以及更高维度的数据。在深度学习和数值计算中&#xff0c;张量是基础数据结构&#xff…

[Python学习日记-27] 文件操作练习题解析

[Python学习日记-27] 文件操作练习题解析 简介 练习题1——全局替换程序 练习题2——模拟登陆 简介 练习题1——全局替换程序 一、题目 写一个脚本&#xff0c;允许用户按以下方式执行时填入参数&#xff0c;即可以对指定文件内容进行全局替换 python your_script.py old…

Mybatis in用法优化

如果in的参数过多&#xff0c;mybatis会报错 原来写法&#xff1a;select * from file_inf a <where>and a.status 0 and a.id in<foreach collection"ids" open"(" close")" separator"," item"id" #{id}</for…

ConflictingBeanDefinitionException | 运行SpringBoot项目时报错bean定义冲突解决方案

具体报错&#xff1a; Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name ‘CommissionMapperImpl’ for bean class [com.xxx.mapper.carrier.CommissionMapperImpl] conflicts with existing, non-co…

MAC激活Typora以及禁止成功激活弹窗的方法

激活 Typora 首先在官网下载 Typora 的最新版 并且安装。 打开以下目录 /Applications/Typora.app/Contents/Resources/TypeMark/page-dist/static/js/ 注意在 Applications 中&#xff0c;需要对 Typora 右键选择 Show Packages Contents 即可进入 Typora.app。 在该目录的文…

探索未来智能:Moonshot AI 引领AI新纪元——M1超级模型

在人工智能的快速演进中&#xff0c;Moonshot AI再次站在了技术创新的前沿。推出M1超级模型&#xff0c;这是一款旨在突破现有AI能力极限的革命性产品。 M1超级模型的诞生背景 随着数据量的爆炸性增长和计算能力的提升&#xff0c;AI模型正变得越来越复杂和强大。M1超级模型…

华为HarmonyOS地图服务 1 -- 如何实现地图呈现?

如何使用地图组件MapComponent和MapComponentController呈现地图&#xff0c;效果如下图所示。 MapComponent是地图组件&#xff0c;用于在您的页面中放置地图。MapComponentController是地图组件的主要功能入口类&#xff0c;用来操作地图&#xff0c;与地图有关的所有方法从此…

从规范到实现解读Windows平台如何播放RTSP流

RTSP播放器应用场景 RTSP播放器在视频监控、远程视频会议、网络电视、实时流媒体传输、协同操控相关的智能设备、教育培训以及企业内部通讯与协作等多个领域都有着广泛的应用场景。 1. 视频监控 RTSP直播播放器在视频监控系统中扮演着重要角色。通过RTSP协议&#xff0c;播放…

Java—SPI 机制详解

参考文章 Java常用机制 - SPI机制详解 | Java 全栈知识体系包含: Java 基础, Java 部分源码, JVM, Spring, Spring Boot, Spring Cloud, 数据库原理, MySQL, ElasticSearch, MongoDB, Docker, k8s, CI&CD, Linux, DevOps, 分布式, 中间件, 开发工具, Git, IDE, 源码阅读&a…

安全带检测系统源码分享

安全带检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

OpenCV基础入门30讲(Python)——第三讲 图像对象的创建与赋值

在OpenCV里&#xff0c;对图像的操作是最为基本的。接下来我们看一下图像对象的创建与赋值。 注&#xff1a;前文介绍过的代码和操作不再重复。 代码 在 main 文件中&#xff0c;先导入新的模块 # 导入 numpy 模块&#xff0c;重命名为 np import numpy as np 再写进以下代…