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

Vue基本语法

Options API

选项式/配置式api

  1. 需要在script中的export default一个对象
  2. 对象中可以包含datamethodcomponents等key
  3. data是数据,数据必须是一个方法(如果是对象,会导致多组件的时候,数据互相影响,因为对象赋值后,都是指向同一个内存地址,当然,在最新的vue版本中,如果不是对象会直接报错)
  4. method中可以写一些方法,在方法中,可以用this.xxx访问其他方法和data中的数据

问题:

  1. data、method等分别存放,看起来是规范了,但是对于业务不友好,业务代码会分散到各个地方
  2. this的指向很耗费心神,稍有不慎,this的指向就会错误

1.响应式基础

data 数据定义 ,声明响应式状态

选项式 API 时,会用 data 选项来声明组件的响应式状态。此选项的值应为返回一个对象的函数比,对象里面的属性就是要定义的变量,并且具有响应式。Vue 将在创建新组件实例的时候调用此函数

<script>
exportdefault {data() {return {title: 'helloworld'}},
}
</script>

2 双大括号语法(Mustache语法)

  1. 用于将data中的数据展示到dom中去
  2. 里面也可以写变量表达式,如{{true?'真的':'假的'}} {{name}}
页面输出变量内容

使用插值表达式{{}}

<script>exportdefault {data() {return {title: "helloworld",};},};
</script>
<template><div><h1>{{title}}</h1>//插值使用{{}}</div>
</template>
<style>
</style>

3.页面元素的属性绑定

vue使用v-bind指令给页面元素的属性响应式的绑定属性,插值表达式{{}}不能在 HTML 的标签上面中使用。想要响应式地给标签绑定一个属性,应该使用 v-bind 指令

v-bind的语法: v-bind:属性名称=”变量名”可以简写成: :属性名称=”变量名”

如果绑定的值是 null 或者 undefined,那么该 属性将会从渲染的元素上移除。​

<script>exportdefault {data() {return {title: "helloworld",};},};
</script>
<template><div><h1 v-bind:id="title">{{title}}</h1><h1 :id="title">{{title}}</h1> //简写<input type="text"v-bind:value="title"></div>
</template>
<style>
</style>

4.methods 方法定义 ,声明方法

要为组件添加方法,我们需要用到 methods 选项。它应该是一个包含所有方法的对象:

<script>
exportdefault {data() {return {count: {}}},methods: {increment() {this.count++}},
}
</script>

Vue 自动为 methods 中的方法绑定了永远指向组件实例的 this。这确保了方法在作为事件监听器或回调函数时始终保持正确的 this。你不应该在定义 methods 时使用箭头函数,因为箭头函数没有自己的 this 上下文。

5.页面事件绑定

vue可以在页面绑定方法,v-on用于监听DOM事件,并在触发事件时执行相应的方法或逻辑。它的作用是将事件与Vue实例中的方法进行绑定,实现事件处理和响应

语法:<div v-on:事件名称=”方法名称”></div> 简写为 @事件名称=”方法名称”

<script >export default {data() {return {title: "helloworld",};},methods: {getValue() {console.log("点击了");},},};
</script>
<template><div><h1 v-bind:id="title"v-on:click="getValue">{{title}}</h1><h1 :id="title"@click="getValue">{{title}}</h1><input type="text"v-bind:value="title"></div>
</template>
<style >
</style>

6.组件引入和使用

  1. 创建组件

单独创建一个.vue结尾的文件,在里面放入组件内容

  1. 引入组件

import 组件名称 from '组件地址'

例如

import HelloWorld from './components/HelloWorld.vue'
  1. 注册组件

通过components属性注册组件,组件不注册无法使用

例如

export default {name: 'App',data() {return {count: 0}},methods: {increment() {this.count++},decrement() {this.count--}},components: {HelloWorld}
}
  1. 使用组件
<template><div>{{ count }}<button @click="increment" >加1</button><button v-on:click="decrement">减1</button></div><HelloWorld msg="Vite + Vue" />
</template>

2.Composition Api

组合式api


1.响应式基础

ref()数据定义

ref()接受一个初始值,返回一个响应式的、可更改的 ref 对象,此对象只有一个指向其内部值的属性 .value

const count = ref(0)
console.log(count.value) // 0count.value++
console.log(count.value) // 1

ref 对象是可更改的,也就是说你可以为 .value 赋予新的值。它也是响应式的,即所有对 .value 的操作都将被追踪,并且修改会触发页面的更新

reactive()对象定义

reactive()返回一个对象的响应式代理。

创建一个响应式对象

const obj = reactive({ count: 0 })
obj.count++
setup()钩子函数

配置式api使用起来太过麻烦,所以组合式api来了,首先就是数据定义的区别,组合式api刚出来的时候使用setup钩子函数来实现对属性状态的管理

Vue3中代码中必须要有这个函数,setup()函数会在组件初始化的时候执行,其主要目的是以原生js的方式设置组件的数据和方法等。

setup() 函数会返回一个对象,对象会暴露给模板和组件实例。其他的地方也可以通过组件实例this来获取 setup() 暴露出来的属性

  1. 在script中定义setup属性,这个属性是一个方法,方法的返回是一个对象
  2. 这个对象中的每一个属性,都可以被视作一个变量,都能够直接拿到dom中进行使用
<script>
import { ref } from 'vue'export default {setup() {const count = ref(0)// 返回值会暴露给模板和其他的选项式 API 钩子return {count}},mounted() {console.log(this.count) // 0}
}
</script><template><button @click="count++">{{ count }}</button>
</template>

更简单的操作

setup语法糖

vue3.2的setup语法糖没有this,只需在script标签中添加setup,可以帮助我们解决这个问题。组件只需引入不用注册,属性和方法也不用返回, 也不用写setup函数,也不用写export default

<script setup>import { ref } from "vue";const msg = ref("这是第一条消息");msg.value = "变成第二条";
</script>
<template><h1>{{ msg }}</h1>
</template>
<style scoped>
</style>
插值表达式/双大括号语法(Mustache语法)

Vue3的插值操作使用Mustache”语法 (即双大括号)来表示,其中可以包含表达式,例如加法{{ number + 1 }}或者三元不等式{{ ok ? 'Yes' : 'No' }}。插值操作可以用于更新元素的文本值,也就是显示出一个纯文本,等价于{{}},不能用于代码块的赋值。

<h1>{{title}}</h1>

2.使用组件

  1. 创建组件

单独创建一个.vue结尾的文件,在里面放入组件内容

  1. 引入组件

import 组件名称 from '组件地址'

例如

<script setup>
import HelloWorld from './components/HelloWorld.vue'
</script>
  1. 使用组件
<template><div>{{ count }}<button @click="increment" >加1</button><button v-on:click="decrement">减1</button></div><HelloWorld msg="Vite + Vue" />
</template>

3.小练习

练习题:创建一个简单的“计数器”应用

任务:

请用 Vue 实现一个简单的计数器应用。计数器应包含以下功能:

  1. 显示当前计数值。
  2. 有两个按钮:
    • 一个按钮点击后增加计数值。
    • 另一个按钮点击后减少计数值。
  3. 使用 v-bind或者 : 动态绑定按钮的属性(当计数值大于 0 时,"减"按钮变成可点击状态,计数值为 0 时按钮不可点击)。
  4. 使用 v-on 或者@来绑定按钮点击事件。
  5. 使用 Composition API 和 Option API 完成该功能,要求两种方式都实现一次,便于对比。
提示:
  • 使用 refreactive 来管理数据(在 Composition API 中),ref定义的数据在script标签里面需要使用 变量名.value来获取和使用变量。
  • 使用 datamethods 来管理数据和方法(在 Option API 中)。
  • 按钮的点击事件可以通过 v-on 进行绑定,例如:@click="increment"
  • 使用 button标签和 disable属性来控制按钮的是否能点击
效果如下

Composition API代码实现:

<template>

  <div v-bind:class="className">当前的数字:{{ num }}</div>

  <button v-on:click="add()">新增</button>

  <button v-on:click="sub()" :disabled="num===0">减少</button>

</template>

<script>

export default {

  data() {

    return {

      num: 0,

    };

  },

  methods: {

    add() {

      this.num++;

    },

    sub() {

      this.num--;

    }

  }

};

</script>

<style scoped></style>

Composition API代码实现:

<template>

    <div>当前的数字:{{ num }}</div>

    <button v-on:click="add()">新增</button>

    <button v-on:click="sub()">减少</button>

  </template>

  <script setup>

  import { ref } from 'vue'

  const num = ref(0)

  const add = () =>{

        num.value++;

  }

  const sub = () =>{

    if(num.value>0){

        num.value--;

    }

       

  }

  </script>

  <style scoped></style>

相关文章:

Vue基本语法

Options API 选项式/配置式api 需要在script中的export default一个对象对象中可以包含data、method、components等keydata是数据&#xff0c;数据必须是一个方法&#xff08;如果是对象&#xff0c;会导致多组件的时候&#xff0c;数据互相影响&#xff0c;因为对象赋值后&…...

芯片发展史

芯片的发展史可分为几个重要的阶段&#xff0c;从早期的真空管到现代的集成电路&#xff0c;反映了技术进步和创新的历程&#xff1a; 1. 真空管时代 (1904 - 1950年代) 真空管是20世纪初的电子元件&#xff0c;用于放大信号和开关&#xff0c;广泛应用在早期的收音机、电视机…...

我的知识图谱和Neo4j数据库的使用

知识图谱概述 知识图谱的含义 RDF与RDFS RDF&#xff08;Resource Description Framework&#xff0c;资源描述框架&#xff09;和RDFS&#xff08;RDF Schema&#xff0c;RDF模式&#xff09;是构建知识图谱的基础技术之一。它们提供了一种标准的方式来表示信息&#xff0c;…...

ASP.NET CORE API 解决跨域问题

环境 vs2022 .net 8 创建ASP.net Core API项目 配置跨域 编写ApiController 启动项目 得到服务器运行的 地址 在Hbuiler中创建web项目&#xff0c;编写代码 【运行】-【运行到浏览器】-选择一个浏览器,查看结果 正常显示 问题 如果允许所有源访问&#xff0c;有安全风险方…...

sram测试注意讨论

常规测试首先是mbist测试&#xff0c;原理不用多说&#xff0c;自己看&#xff0c;主要是注意点和考虑点&#xff1a; 1、明确测试用的到func_clk的频率的大小&#xff0c;根据经验值一般大于800M的时钟需要特别考虑Timing的问题&#xff1a;由于pr摆放的位置原因&#xff0c;…...

Mybatis 支持延迟加载的详细内容

延迟加载的概念深入 延迟加载是一种在处理复杂对象关系时非常有用的策略。在企业级应用开发中&#xff0c;数据库中的表之间往往存在着各种关联关系&#xff0c;如一对多&#xff08;一个用户有多个订单&#xff09;、多对多&#xff08;一个学生可以选多门课程&#xff0c;一门…...

word文档使用技巧笔记

中文和数字断开到第二行 word一串数字断开_百度知道 下划线对齐 word下划线怎么固定长度一致-百度经验...

使用docker-compose部署搜索引擎ElasticSearch6.8.10

背景 Elasticsearch 是一个开源的分布式搜索和分析引擎&#xff0c;基于 Apache Lucene 构建。它被广泛用于实时数据搜索、日志分析、全文检索等应用场景。 Elasticsearch 支持高效的全文搜索&#xff0c;并提供了强大的聚合功能&#xff0c;可以处理大规模的数据集并进行快速…...

bugku-web-login2

不知道为啥用bp始终登不上hackbar可以 随便输入个账号密码bp抓包&#xff0c;发现个小tip是base64加密的解密 $sql"SELECT username,password FROM admin WHERE username".$username.""; if (!empty($row) && $row[password]md5($password)){ } …...

【 AI技术赋能有限元分析与材料科学应用实践】Neo-Hookean 材料与深度学习结合的有限元分析

Neo-Hookean 材料模型是用于描述非线性弹性材料&#xff08;如软组织和橡胶等&#xff09;的经典模型&#xff0c;特别适用于大变形问题。其基本思想是通过应变能密度函数来描述材料的弹性行为。在该模型中&#xff0c;材料的应力-应变关系不仅依赖于应变能&#xff0c;还通过变…...

StarRocks关于ConcurrentModificationException 问题的解决

背景 本文基于 StarRocks 3.1.7 目前在基于Starrocks做一些数据分析的操作(主要是做一些简单的查询)&#xff0c;同事遇到了一些并发的问题: ontent:2024-11-27 07:04:34,048 WARN (starrocks-mysql-nio-pool-214933|3593819) [StmtExecutor.execute():643] execute Exceptio…...

网络安全防护指南:筑牢网络安全防线(5/10)

一、网络安全的基本概念 &#xff08;一&#xff09;网络的定义 网络是指由计算机或者其他信息终端及相关设备组成的按照一定的规则和程序对信息收集、存储、传输、交换、处理的系统。在当今数字化时代&#xff0c;网络已经成为人们生活和工作中不可或缺的一部分。它连接了世…...

替代FTP最佳跨网文件传输解决方案——FileLink

在传统的企业文件传输中&#xff0c;FTP&#xff08;文件传输协议&#xff09;曾因其便捷性和高效性被广泛应用。然而&#xff0c;其固有的安全漏洞、对大文件传输支持的局限性、易受网络攻击等问题&#xff0c;已逐渐暴露出FTP在现代企业环境下的不足。针对这一问题&#xff0…...

Cesium在vue2中的引入和注意事项

在Vue2中&#xff0c;可以使用npm包管理工具来安装Cesium&#xff0c;并通过import语句将其引入到项目中。下面是在Vue2中引入Cesium的步骤和注意事项&#xff1a; 步骤&#xff1a; 首先&#xff0c;打开终端并进入Vue项目的根目录。 运行以下命令来安装Cesium&#xff1a; …...

CentOS 9 配置静态IP

文章目录 1_问题原因2_nmcli 配置静态IP3_使用配置文件固定IP4_重启后存在的问题5_nmcli 补充 1_问题原因 CentOS 7 于 2014年6月发布&#xff0c;基于 RHEL 7&#xff0c;并在 2024年6月30日 结束维护。 CentOS 9 作为目前的最新版本&#xff0c;今天闲来闲来无事下载下来后…...

深入解析 Webhook:从原理到实践的全面指南

1. 引言 1.1 什么是 Webhook&#xff1f; Webhook 是一种基于 HTTP 回调的轻量级通信机制&#xff0c;它允许一个系统实时向另一个系统发送数据。当特定事件发生时&#xff0c;Webhook 会主动向指定的 URL 发送 HTTP 请求&#xff0c;通常携带事件相关的数据。这种被动接收通…...

基于springboot+vue实现的创新创业学分管理系统 (源码+L文+ppt)4-111

4 系统总体设计 4.1系统功能结构设计图 根据需求说明设计系统各功能模块。采用模块化设计方法实现一个复杂结构进行简化&#xff0c;分成一个个小的容易解决的板块&#xff0c;然后再将小的板块继续分化成功能单一的更小模块。模块化设计方法使测试调试、维护更容易&#xff…...

如何高效地架构一个Java项目

引言 Java是企业级应用开发的主流语言之一&#xff0c;而我们作为使用Java语言的程序员&#xff0c;职称有初级、中级、高级、资深、经理、架构&#xff0c;但我们往往只是慢慢通过经验的积累迭代了自己的等级&#xff0c;如果没有保持学习的习惯&#xff0c;大多数程序员会停留…...

Scala的模式匹配(8)

package hfdobject Test35_1 { //需求:现在有一个数组Array(1,2,3,4)。我希望能定义三个变量&#xff0c;他们的值分别是数组中的第1&#xff0c;2&#xff0c;3个元素的值 def main(args: Array[String]): Unit {val arr Array(1,2,3,4,5)//第一个元素的值&#xff1a;arr(0…...

nodejs30: CSS 剪辑路径clip-path导致伪元素不可见问题及解决方法

相关问题 应用圆角裁剪时无法显示::after 取消clip-path设置&#xff1a; 完整问题代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, i…...

如何用Akagi打造实时麻将AI辅助系统:从新手到高手的完整指南

如何用Akagi打造实时麻将AI辅助系统&#xff1a;从新手到高手的完整指南 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將&#xff0c;能夠使用自定義的AI模型實時分析對局並給出建議&#xff0c;內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City,…...

IPBan:企业级服务器安全防护解决方案的架构设计与实现

IPBan&#xff1a;企业级服务器安全防护解决方案的架构设计与实现 【免费下载链接】IPBan Since 2011, IPBan is the worlds most trusted, free security software to block hackers and botnets. With both Windows and Linux support, IPBan has your dedicated or cloud se…...

Linux查看文件内容

&#x1f3f7;️ 标签&#xff1a;Linux 查看文件 文件类型 Linux命令 运维 后端开发 &#x1f4dd; 适用人群&#xff1a;Linux 新手、运维、后端、学生、实训使用 &#x1f4a1; 亮点&#xff1a;包含 查看文件类型 查看整个文件 查看部分文件&#xff0c;结构清晰、示例可…...

如何快速上手Excel-DNA:构建专业Excel插件的完整实战指南

如何快速上手Excel-DNA&#xff1a;构建专业Excel插件的完整实战指南 【免费下载链接】ExcelDna Excel-DNA - Free and easy .NET for Excel. This repository contains the core Excel-DNA library. 项目地址: https://gitcode.com/gh_mirrors/ex/ExcelDna Excel-DNA是…...

如何快速配置Live Server Web Extension:提升开发效率的完整指南

如何快速配置Live Server Web Extension&#xff1a;提升开发效率的完整指南 【免费下载链接】live-server-web-extension It makes your existing server live. This is a browser extension that helps you to live reload feature for dynamic content (PHP, Node.js, ASP.N…...

论文的重复率是什么?

论文重复率&#xff0c;说直白一点&#xff0c;就是你的论文内容和数据库里已有内容的文字相似比例。但这里有个很多人会误解的点&#xff1a;重复率 ≠ 抄袭率。查重系统本质上是在做“文本比对”&#xff0c;不是在判断你的主观意图。比如你自己写了一句&#xff1a;“随着数…...

经营分析——解读集团经营分析报告框架【附全文阅读】

集团经营分析报告框架推介总结 适应人群&#xff1a;集团高管、经营管理部、财务负责人、各业务单元负责人、经营分析专员、数据分析师及战略规划人员。 重要性总结&#xff1a;本 PPT 是集团级经营分析的标准化、体系化顶层框架&#xff0c;构建 “战略 — 环境 — 业绩 — 问…...

21 鸿蒙LiteOS软件定时器实战:多定时器周期性任务完整示例(源码+解析)

鸿蒙LiteOS软件定时器实战&#xff1a;多定时器周期性任务完整示例&#xff08;源码解析&#xff09; 一、前言 在嵌入式鸿蒙&#xff08;OpenHarmony LiteOS&#xff09;开发中&#xff0c;软件定时器是实现周期性任务、延时任务、定时触发逻辑的核心内核工具&#xff0c;无…...

Windows 11系统优化终极指南:用Win11Debloat免费让你的电脑飞起来

Windows 11系统优化终极指南&#xff1a;用Win11Debloat免费让你的电脑飞起来 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declu…...

为什么四羟基合铝酸钠中的羟基明明是氢氧根离子却叫做羟基?

一、为什么四羟基合铝酸钠中的「羟基」明明是 OH⁻ 离子&#xff0c;却叫做「羟基」&#xff1f; 这是一个很好的概念辨析问题&#xff0c;涉及到配位化学命名规则与无机化学传统命名的差异。 1. 在配位化合物中&#xff0c;OH⁻ 作为配体时的名称就是「羟基」 在配合物&#x…...