【Vue】- Vue表达式

news/2024/9/17 23:36:51/ 标签: vue.js, javascript, ecmascript

文章目录

  • 知识回顾
  • 前言
    • Vue项目介绍
  • 源码分析
    • 1. 项目结构介绍(单页面应用程序)
    • 2. 项目运行流程图(单页面应用程序)
    • 3. 选项式和组合式api
    • 4. 插值表达式 {{}} 胡子语法
    • 5. reactive函数
    • 6. ref表达式
  • 拓展知识
    • reactive和ref的选择
  • 总结


知识回顾

前言

Vue项目介绍

源码分析

1. 项目结构介绍(单页面应用程序)

VUE-DEMO
│─node_modules	          第三包文件夹
├─public                	放html文件的地方
| └─favicon.ico 	      	网站图标
├─src 			              源代码目录 → 以后写代码的文件夹
│  └─assets 	           	静态资源目录 → 存放图片、字体等
│  └─components         	组件目录 → 存放通用组件
│  └─App.vue   		        App根组件 → 项目运行看到的内容就在这里编写  
│  └─main.ts   		        入口文件 → 打包或运行,第一个执行的文件 
└─.eslintrc.cjs     	  	eslint配置文件
└─.gitignore     	      	git忽视文件
└─.prettierrc.json     		prettierrc配置文件
└─env.d.ts     		        ts代码智能提示使用
└─index.html          		index.html 模板文件
└─package.json		        项目配置文件 → 包含项目名、版本号、scripts、依赖包等
└─pnpm-lock.yaml 	      	pnpm锁文件,由pnpm自动生成的,锁定安装版本
└─README.md 	          	项目说明文档
└─tsconfig.app.json     	ts项目配置文件
└─tsconfig.json 	      	ts配置文件
└─tsconfig.app.json     	ts的node环境配置文件
└─vite.config.js 		      create-vue配置文件

2. 项目运行流程图(单页面应用程序)

在这里插入图片描述

项目运行后执行main.ts
main.ts中会执行app.vue文件,导入createapp方法,导入app.vue , 创建app实例对象
最后渲染到index.html容器中

3. 选项式和组合式api

  • 选项式
<template><button @click="toggle">显示隐藏图片</button><img v-show="show" alt="Vue logo" src="./assets/logo.png" /><hr />计数器:{{ count }} <button @click="increment">累加</button>
</template>
<script>
export default {data() {return {show: true,count: 0}},methods: {toggle() {this.show = !this.show},increment() {this.count++}}
}
</script>
  • 组合式
<template><button @click="toggle">显示隐藏图片</button><img v-show="show" alt="Vue logo" src="./assets/logo.svg" /><hr />计数器:{{ count }} <button @click="increment">累加</button>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const show = ref(true)
const toggle = () => {show.value = !show.value
}
const count = ref(0)
const increment = () => {count.value++
}
</script>

4. 插值表达式 {{}} 胡子语法

插值表达式是一种Vue的模板语法, 我们可以用插值表达式渲染出Vue提供的数据

  • 作用:利用表达式进行插值,渲染到页面中
  • 表达式:是可以被求值的代码,JS引擎会讲其计算出一个结果

注意事项:

  1. 在插值表达式中使用的数据 必须在setup函数中进行了提供
  2. 支持的是表达式,而非语句,比如:if for …
  3. 不能在标签属性中使用 {{ }} 插值 (插值表达式只能标签中间使用)
<template><div>{{ title }}</div><div>{{ sum(100, 200) }}</div><p>{{ array[1] }}</p>
</template><script setup lang="ts">
const title = 'test'
const sum = (num1: number, num2: number) => {return num1 + num2
}
const array = [1, 2, 3]
</script>

5. reactive函数

<template><button @click="onClick">点击我</button><button @click="addAge">增加年龄</button><button @click="addHobbies">新增爱好</button>
</template><script setup lang="ts">
import { reactive } from 'vue'
const person = reactive({name: '张三',age: 18,friend: {name: '李四',age: 20,hobbies: ['打游戏', '看电影']}
})
const onClick = () => {console.log('点击了')alert('点击了我')
}
const addAge = () => {person.age++console.log(person.age)
}
const addHobbies = () => {person.friend.hobbies.push('看书')console.log(person.friend.hobbies)
}
</script>

6. ref表达式

<template><div>年龄{{ age }}</div><button @click="changeAge">修改年龄</button><div>{{ person }}</div><button @click="changePersonAge">修改person中年龄</button>
</template><script setup lang="ts">
import { reactive, ref } from 'vue'const age = ref(18)
const changeAge = () => {age.value++
}
const person = ref({ name: '张三', age: 18 })
const changePersonAge = () => {person.value.age++
}
</script>

拓展知识

reactive和ref的选择

  1. 开始分析
    ● reactive 可以转换对象成为响应式数据对象,但是不支持简单数据类型。
    ● ref 可以转换简单数据类型为响应式数据对象,也支持复杂数据类型,但是操作的时候需要 .value 。
    ● 它们各有特点,现在也没有最佳实践,没有明显的界限,所有大家可以自由选择。
  2. 推荐用法
    ● 如果能确定数据是对象且字段名称也确定,可使用 reactive 转成响应式数据,其他一概使用 ref 。这样就没有心智负担 。

总结


http://www.ppmy.cn/news/1525298.html

相关文章

Java操作Miscrosoft Office各类文件格式的开源免费工具库

Aspose.Words库 是一个商业Java库&#xff0c;还封装了常用的word、pdf、防伪码、水印等诸多功能。Apache 库需要注意的前置问题 问题1&#xff1a;Word的两个格式doc和docx&#xff0c;POI并没有提供统一的处理类。分别用 HWPFDocument 处理doc文档&#xff0c;用 XWPFTempl…

CNN中的conv

在神经网络中&#xff0c;conv1 通常指的是一个卷积层&#xff08;Convolutional Layer&#xff09;&#xff0c;它是卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;中的基本构建块之一。conv1 通常指网络的第一个卷积层&#xff0c;它负责从输入数据…

Frida在安卓逆向中的使用

Frida 是一个强大的动态分析工具,广泛用于逆向工程、调试和安全测试。它允许用户在运行时注入 JavaScript 代码,以拦截和修改应用程序的行为。以下是 Frida 的使用指南,包括安装、基本操作以及一些示例。 安装 Frida 1. 安装 Python 和 pip 确保你已经安装了 Python 和 p…

差分约束---将不等式转换为图的算法

概念&#xff1a;已知一个差分约束系统&#xff08;差分约束系统即一种特殊的n元一次不等式组&#xff09;&#xff0c;形如,要求求出是否存在一组解使得所有约束条件满足。由于在最短路中与该不等式形式相似&#xff0c;因此&#xff0c;可以利用图论&#xff0c;从对应的j点连…

pdf文件转图片,base64或保存到本地

pdf转图片&#xff0c;需要引入pdfbox依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.27</version> </dependency>RequestMapping("pdfToImg") public void …

【限流算法】常见的限流算法有哪些,怎么做限流操作

【限流算法】常见的限流算法有哪些&#xff0c;怎么做限流操作 在Java应用中实现限流&#xff08;Rate Limiting&#xff09;通常是为了控制对资源或服务的访问速率&#xff0c;防止因过载而导致的服务不可用。Java中实现限流的方法有多种&#xff0c;以下是一些常见的方法&…

Python数据攻略-Numpy进行集合运算与去重操作

在数据处理与分析的过程中&#xff0c;集合运算与去重操作是非常重要的部分&#xff0c;特别是在处理大量重复数据时&#xff0c;能够有效提升数据处理的效率。集合逻辑是集合论的基础&#xff0c;它包含一些基本操作如交集、并集、差集和补集&#xff0c;这些操作在实际编程中…

Python世界:力扣29题两数相除算法实践

Python世界&#xff1a;力扣29题两数相除算法实践[ 任务背景实现思路模拟思路编码实现 本文小结 任务背景 本问题来自于力扣29题&#xff0c;在做完大数相乘后&#xff0c;顺带也看下两数相除。 给定两个整数&#xff0c;被除数dividend和除数divisor。将两数相除&#xff0c;…

Rocket: 从零开始构建Rust Web服务

1. Rocket框架简介 Rocket是Rust生态中一颗闪亮的新星&#xff0c;专为构建Web应用而生。作为一个现代化的Web框架&#xff0c;Rocket以其类型安全性、简洁的API和卓越的性能脱颖而出。无论你是想构建一个简单的静态网站&#xff0c;还是复杂的RESTful API&#xff0c;Rocket都…

【JavaSE系列】反射机制

目录 前言 一、概述 二、获取Class对象 三、反射构造方法 1. 获取构造方法 2. 获取修饰符、名称和形参 3. 创建对象 四、反射成员变量 1. 获取成员变量 2. 获取修饰符、名称和类型 3. 赋值/获取值 五、 反射成员方法 1. 获取成员方法 2. 获取修饰符、形参、返回值…

深度剖析去中心化存储:IPFS、Arweave 和 BNB Greenfield 的技术革新与生态系统演进

引言&#xff1a; 在数字时代的浪潮中&#xff0c;数据已然成为驱动创新和决策的核心资产。然而&#xff0c;随着数据量呈指数级增长&#xff0c;传统中心化存储模式面临着前所未有的挑战。安全漏洞、隐私泄露、数据垄断等问题日益凸显&#xff0c;促使技术界重新思考数据存储…

idea中java及java web项目的常见问题

1、乱码问题&#xff0c;主要有几处地方&#xff0c;需要检查。 ①确保文件编码&#xff0c;其实主要就是在idea启动文件中&#xff0c;增加了 -Dfile.encodingUTF-8的设置 ②编辑器默认编码&#xff0c;都改为UTF-8 ③Tomcat的运行配置&#xff0c;编码也改为UTF-8,同样使用…

创建一个 `systemd` 服务文件来管理 uWSGI 启动、停止和其他维护任务

编写 systemd 服务文件可以帮助你管理和自动化你的应用服务。在 CentOS 系统中&#xff0c;你可以创建一个 systemd 服务文件来管理 uWSGI 启动、停止和其他维护任务。下面是详细的步骤和示例。 ### 1. 创建服务文件 首先&#xff0c;在 /etc/systemd/system 目录下创建一个新…

linux-L5.linux查看应用占用的资源top

启动 top 命令&#xff1a; 打开终端&#xff0c;输入 top 并按回车键。 查看进程信息&#xff1a; 默认情况下&#xff0c;top 会显示系统的整体资源使用情况&#xff0c;包括 CPU、内存、磁盘 I/O 和网络 I/O 等信息。然后它会列出当前运行的进程&#xff0c;以及它们分别占…

vueCropper裁剪图片(不模糊)以及记录使用方法

需求&#xff1a;上传限定比例的图片。前端框架是vue3 element plus。 问题&#xff1a;使用vueCropper后比例固定。但是上传后的图片很模糊 vueCropper官网 解决办法 vueCropper中有一个full和high两个参数&#xff0c;记得开启 const options: any reactive({img: , // 原…

react 动画_样式处理

动画 在日常开发中&#xff0c;页面切换时的转场动画是比较基础的一个场景 当一个组件在显示与消失过程中存在过渡动画&#xff0c;可以很好的增加用户的体验 在 react中实现过渡动画效果会有很多种选择&#xff0c;如 react-transition-group&#xff0c; react-motion&…

如何利用 CSS 渐变实现多样化背景效果

前言 总在平常看到像这样的图片 背景是如何实现的呢 背景效果的多样性和美观性直接影响用户体验。CSS 渐变为设计师提供了一种强大且灵活的方法来创建引人注目的背景。渐变是颜色之间平滑过渡的效果&#xff0c;通过调整渐变类型和设置&#xff0c;你可以轻松实现从简单到复杂…

全面认识AI Agent:一文读懂AI智能体的架构指南

在人工智能的快速发展中&#xff0c;AI Agent&#xff08;人工智能代理或智能体&#xff09;正逐渐成为研究和应用的热点。AI Agent不仅仅是一个简单的自动化工具&#xff0c;它能够感知环境、做出决策&#xff0c;并执行任务以实现特定的目标。本文将详细介绍AI Agent的概念、…

华为OD机试 - 开源项目热度榜单(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

算法手撕面经系列(1)--手撕多头注意力机制

多头注意力机制 一个简单的多头注意力模块可以分解为以下几个步骤&#xff1a; 先不分多头&#xff0c;对输入张量分别做变换&#xff0c;得到 Q , K , V Q,K,V Q,K,V对得到的 Q , K , V Q,K,V Q,K,V按头的个数进行split&#xff1b;用 Q , K Q,K Q,K计算向量点积考虑是否要添…