vue3的创建使用

news/2024/11/17 10:06:18/

一、vue3

用vite创建vue3项目

  • 注意node.js版本

  • 创建一个文件夹

image-20240411161813028

image-20240411161949433

  • 首先要 安装npm : npm i

  • 运行 npm run dev

  • 新建了testView alt+ shift + enter

    image-20240411165222074 image-20240411165240020
  • image-20240411165901371

  • 运行js文件

    • cd .\ project\
    • node .\index.js\

二、vue3的特性(vue2和vue3的区别)

  • 使用Proxy代替defineProperty实现数据响应式
  • 重写DOM的实现和Tree-Shaking
  • Composition API:组合式api
  • 编译器的优化
  • 打包大小减少41%
  • 初次渲染快55%,更新渲染快133%
  • 内存减少54%

三、setup

  • 是一个专门用于组合式API的特殊钩子函数
  • 所有的组合API函数都在此使用,只在初始化时执行一次
  • 函数如果返回对象,对象中的属性或方法,模板中可以直接使用
  • 在beforeCreate之前执行(一次),此时组件对象还没有创建

四、将非响应式数据转换为响应式数据

1、reactive

  • 用于定义引用类型数据(数组或对象)的响应式。
  • 将对象内部所有嵌套属性都转换为响应式的数据
  • 基于 ES6 的Proxy 的基础上实现的
    特点:
  • 响应式转换式“深层的”
var obj = reactive({age: '18',object: {age1: 20}
})
function add() {obj.age++obj.object.age1++console.log(obj)
}
<div> {{ obj }} </div>

image-20240411181832416

image-20240411181913185
  • console.log(obj1 == obj) //true
    

2、ref

  • 用于将数据转换为可响应式的引用对象
  • js中操作数据: xxx.value
import { reactive, ref } from 'vue'
let age = ref(18)
function getAge() {age.value++ //注意.valueconsole.log(age)
}

3、响应式 vs 非响应式

  • **响应式对象:**逻辑层数据发生改变会影响视图层的变化
  • **非响应式对象:**逻辑层数据发生变化不会影响视图层的变化

五、forceUpdate()、nextTick()

  • this.$forceUpdate():强制页面刷新
  • nextTick():在下次DOM更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM。
nextTick( () =>{ }) //元素发生改变时候重新执行一遍

六、计算属性和监听属性

1、计算属性 computed

  • computed( () => {} ) 直接使用get
  • computed( { get(){}, set ( ){ } } )

2、监听属性 watch

  • 监听属性
watch(监听的属性,回调函数(newVal,oldVal),{deep:true,immediate:true})
  • 监听多个
//监听属性 watch (监听的属性,回调函数(newVal,oldVal) )
watch([firstName, lastName], (newVal, oldVal) => {console.log(newVal, oldVal)
}, { deep: true, immediate: true })
  • watchEffect监听
    • 立即执行监听
    • 并且监听所有的响应式数据
watchEffect(()=>{console.log(11111)console.log(firstName.value)
})

3、watch和watchEffect的区别?

watch函数

  • 与watch配置功能一致
  • 监视指定的一个或多个响应式数据, 一旦数据变化, 就自动执行监视回调
  • 默认初始时不执行回调, 但可以通过配置immediate为true, 来指定初始时立即执行第一次
  • 通过配置deep为true, 来指定深度监视

watchEffect函数

  • 不用直接指定要监视的数据, 回调函数中使用的哪些响应式数据就监视哪些响应式数据
  • 默认初始时就会执行第一次, 从而可以收集需要监视的数据
  • 监视数据发生变化时回调

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

相关文章

OJ刷题日记:1、双指针(1)

目录 1、283.移动零 2、1089.复写零 3、202.快乐数 1、283.移动零 题目&#xff1a; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 …

SmartAdmin:以高质量代码为核心的中后台快速开发平台

摘要&#xff1a; 随着数字化进程的加速&#xff0c;中后台系统的开发需求日益增长。为了满足市场对于高效、简洁、安全系统的需求&#xff0c;SmartAdmin 应运而生。作为一个开源项目&#xff0c;SmartAdmin 旨在提供一套基于 SpringBoot 和 Vue3 的高质量代码规范和中后台解决…

Debian 安装 Docker

Debian 安装 Docker。 这是官方安装文档 Install Docker Engine on Debian | Docker DocsLearn how to install Docker Engine on Debian. These instructions cover the different installation methods, how to uninstall, and next steps.https://docs.docker.com/engine/i…

LeetCode617:合并二叉树

题目描述 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#xff08;而另一些不会&#xff09;。你需要将这两棵树合并成一棵新二叉树。合并的规则是&#xff1a;如果两个节点重…

Golang | Leetcode Golang题解之第22题括号生成

题目&#xff1a; 题解&#xff1a; var res []stringfunc generateParenthesis(n int) []string {res make([]string, 0)dfs(n, 0, 0, "")return res }func dfs(n int, lc int, rc int, path string) {if lc n && rc n {res append(res, path)return }…

在mac环境下使用shell脚本实现tree命令

文章目录 使用ls实现tree使用find实现tree 使用ls实现tree 实现思路 使用ls -F 打印文件类型&#xff0c;如果是目录后面跟/&#xff0c;如果是可执行文件后面跟*&#xff1b;使用grep -v /$ 筛选文件排除目录&#xff0c;-v为反向筛选&#xff1b;使用grep /$ 仅筛选目录&am…

关于部署ELK和EFLKD的相关知识

文章目录 一、ELK日志分析系统1、ELK简介1.2 ElasticSearch1.3 Logstash1.4 Kibana&#xff08;展示数据可视化界面&#xff09;1.5 Filebeat 2、使用ELK的原因3、完整日志系统的基本特征4、ELK的工作原理 二、部署ELK日志分析系统1、服务器配置2、关闭防火墙3、ELK ElasticSea…

一篇文章了解php7和php8新特性

PHP7新特性 ?? 运算符 php7以前用三目判断变量是否存在或是否为空 $a isset($_GET[a]) ? $_GET[a] : 1;php7新增null 合并运算符??快捷判断 $a $_GET[a] ?? 1;函数返回值类型声明 用:返回值类型的形式定义函数的返回值类型 <?phpdeclare(strict_types1); fun…