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

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

目录​​​​​​​

什么是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.kler.cn/a/315711.html

相关文章:

  • 【ACM出版】第四届信号处理与通信技术国际学术会议(SPCT 2024)
  • C++编程:利用环形缓冲区优化 TCP 发送流程,避免 Short Write 问题
  • Linux 系统管理和监控命令---- auditctl命令
  • Spring Boot 1.x 版本可以集成 Spring Cloud Sleuth
  • [代码随想录Day10打卡] 理论基础 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项
  • SpringBoot后端解决跨域问题
  • Java面试篇基础部分-Synchronized关键字详解
  • python爬虫中json和xml字符串的xPath和jsonpath过滤语法区别对比
  • 零工市场小程序:推动零工市场建设
  • 【Kubernetes】常见面试题汇总(三十)
  • 【二等奖论文】2024年华为杯研赛D题成品论文(后续会更新)
  • rust GTK4 窗口创建与 wayland Subsurface (vulkan 渲染窗口初始化 (Linux) 上篇)
  • Docker实践——天池篇
  • 极度精简 Winows11 系统镜像!Tiny11 2311下载 - 支持苹果 M 芯片 Mac 安装 (ARM 精简版)!
  • get_property --Cmakelist之中
  • 关闭小广告【JavaScript】
  • 【线程】线程的同步
  • PHP转Go很丝滑开发框架设计思路-把php优秀设计借鉴到Go框架设计里面-保留php开发习惯又能提供高软件性能
  • OpenCV特征检测(8)检测图像中圆形的函数HoughCircles()的使用
  • 利用JAVA写一张纸折叠珠穆拉玛峰高度
  • 算法打卡:第十一章 图论part04
  • 情指行一体化平台建设方案和必要性-———未来之窗行业应用跨平台架构
  • 0基础学习PyTorch——最小Demo
  • AI教你学Python 第17天 :小项目联系人管理系统
  • 小程序-模板与配置
  • 乱弹篇(53)丹桂未飘香