Vue3基础

news2025/7/19 19:11:46

Vue

官网

https://cn.vuejs.org/

https://v3.cn.vuejs.org/

https://staging-cn.vuejs.org/api/

1、环境

1.1、nodejs

node

node -v

npm

#当前版本
npm -v
#升级npm版本
npm install -g npm

1.2、vue

#安装vue
npm install -g vue-cli
#安装最新版本
npm install -g @vue/cli
#更新至最新版本
npm update -g @vue/cli
#vue版本
vue -V

1.3、vite

#创建项目
npm init vite@latest

在这里插入图片描述

yarn create @vitejs/app <project-name>
cd <project-name>
yarn
yarn dev

1.3.1、HelloWorld.vue

<template>
  <h1>{{ msg }}</h1>
  <p>123456</p>
  ......
</template>

访问:http://localhost:3000/;查看实时效果

1.4、router

npm install vue-router@4
npm i vue-router@4.0.13 -D
yarn add vue-router@4.0.13

执行结束可以去package.json里检查下是否完成安装。

1.5、vuex

npm install vuex@next
npm install vuex@4
npm i vuex -D
yarn add vuex

1.6、naive-ui(组件库)

npm i -D naive-ui
或
yarn add naive-ui

1.7、css预处理器

由vite搭建的vue项目默认只支持css,想使用less或者sass的话,安装less或sass的依赖就好。

1.7.1、sass

yarn add sass sass-loader
或
npm i sass sass-loader -D

1.7.2、less

yarn add less less-loader
或
npm i less less-loader -D

1.8、element-plus

npm install element-plus
#安装babel的插件
npm install babel-plugin-import -D

1.9、axios

npm install axios

1.10、Vue i18n(国际化)

npm install vue-i18n@next

2、创建项目对比

2.1、基于webpack

创建vue3项目,基于构建工具webpack

vue create vue-demo

问题:基于webpack的项目有一个问题,就是编译慢
解决:使用vite
vite优势:在开发过程中大大提升效率

2.2、基于vite

# 安装vite
npm install vite -g
# 初始化vite项目
npm init @vitejs/app vite-demo
-> vue
-> vue
或
npm init vite-app vite-demo
或(推荐)
npm init vite@latest
# 进入项目文件夹
cd vite-demo
# 安装项目所需的依赖
npm install
# 运行项目
npm run dev
# 生成dist目录
npm build
# 预览
npm serve

HelloWorld.vue

<template>
  <h1>{{ msg }}</h1>
  <p>1234567</p>
  <button @click="count++">count is: {{ count }}</button>
  <p>Edit <code>components/HelloWorld.vue</code> to test hot module replacement.</p>
</template>

访问:http://localhost:3000/可实时查看效果。

3、vue3

3.1、区别

3.1.1、v-if与v-for

https://v3.cn.vuejs.org/guide/migration/v-if-v-for.html

v-if与v-for的优先级对比
2.x版本中,v-for高于v-if
3.x版本中,v-if高于v-for

3.1.2、v-for中的Ref数组

https://v3.cn.vuejs.org/guide/migration/array-refs.html
Vue 2 中,在 v-for 中使用的 ref attribute 会用 ref 数组填充相应的 $refs property。当存在嵌套的 v-for 时,这种行为会变得不明确且效率低下。
Vue 3 中,此类用法将不再自动创建 $ref 数组。要从单个绑定获取多个 ref,请将 ref 绑定到一个更灵活的函数上 (这是一个新特性):

<div v-for="item in list" :ref="setItemRef"></div>

3.1.3、$children

https://v3.cn.vuejs.org/guide/migration/children.html
children 实例 property 已从 Vue 3.0 中移除,不再支持。建议使用 r e f s 。 2. x 中 , 开 发 者 可 以 使 用 t h i s . refs。 2.x 中,开发者可以使用 this. refs2.x使this.children 访问当前实例的直接子组件。

3.2、setup

https://v3.cn.vuejs.org/guide/composition-api-setup.html
什么是:组合式API

3.2.1、解决的问题

使用 (data、computed、methods、watch) 组件选项来组织逻辑通常都很有效。然而,当我们的组件开始变得更大时,逻辑关注点的列表也会增长。尤其对于那些一开始没有编写这些组件的人来说,这会导致组件难以阅读和理解。

3.2.2、响应区别

vue2.x:ObjectdefineProperty();存在的问题:不能监听数组的变化;必须遍历对象的每一个属性
vue3.x:Proxy;不需要遍历

3.2.3、使用渲染函数

ref:定义数据的,简单类型
reactive:定义数据的,复杂类型

3.2.4、unplugin-auto-import

解决场景:在组件中开发无需每次引入import { ref }…

安装插件
npm i -D unplugin-auto-import
配置vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import autoImport from 'unplugin-auto-import/vite'

export default defineConfig({
  plugins: [
    autoImport({
      //自动导入vue和vue-router相关函数
      imports:['vue','vue-router']
    })
  ]
})

3.2.5、toRefs

https://v3.cn.vuejs.org/guide/composition-api-setup.html#props
需要解构prop,可以在setup函数中使用toRefs函数来完成此操作

3.2.6、computed

3.3、生命周期

https://v3.cn.vuejs.org/guide/composition-api-lifecycle-hooks.html
选项式API
setup组合式API
注意:没有beforeCreate、created,其它生命周期要使用前加"on"

3.4、watch

https://v3.cn.vuejs.org/api/computed-watch-api.html#watch
watch 需要侦听特定的数据源,并在单独的回调函数中执行副作用。默认情况下,它也是惰性的——即回调仅在侦听源发生变化时被调用。

监听数据[初始化监听]

watch( msg,(new_val,old_val)=>{
	console.log(new_val,old_val)
},{
	immediate:true
})

监听多个数据[一起监听]

watch([msg,str],(new_val,old_val)=>{
	console.log(new_val,old_val)
},{
	immediate:true
})

监听"对象"中某个对象

watch(()=>obj.arr,(new_val,old_val)=>{
	console.log(new_val,old_val)
})

watchEffect

立即执行传入的一个函数,同时响应式追踪其依赖,并在其依赖变更时重新运行该函数。

watchEffect(()=>{
	console.log(msg.value)
})

3.5、路由

https://v3.cn.vuejs.org/guide/routing.html#官方-router
https://router.vuejs.org/zh/api/
跳转
传值
导航守卫

3.6、组件-父传子

https://v3.cn.vuejs.org/guide/composition-api-setup.html#props

3.7、组件-子传父

https://v3.cn.vuejs.org/guide/composition-api-setup.html#context

3.8、组件-兄弟组件

安装

npm install mitt -S

3.9、v-model传值

https://v3.cn.vuejs.org/api/directives.html#v-model

3.10、插槽

https://v3.cn.vuejs.org/guide/component-slots.html
匿名插槽
具名插槽
作用域插槽
动态插槽

3.11、Teleport(传送)

https://v3.cn.vuejs.org/guide/teleport.html

3.12、动态组件

https://v3.cn.vuejs.org/guide/component-dynamic-async.html

<component :is="currentTabComponent"></component>

3.13、异步组件

https://v3.cn.vuejs.org/guide/component-dynamic-async.html#异步组件
https://vueuse.org/core/useIntersectionObserver/#usage

使用场景

组件按需引入:当用户访问到了组件再去加载该组件
打包分包处理:需要将应用分割成小一些的代码块,并且只在需要的时候才从服务器加载一个模块。

3.14、Mixin(混入)

https://v3.cn.vuejs.org/guide/mixins.html
Mixin 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。

3.15、Provide/Inject(依赖注入)

https://v3.cn.vuejs.org/guide/component-provide-inject.html
需要从父组件向子组件传递数据时,可以使用一对 provide 和 inject。无论组件层次结构有多深,父组件都可以作为其所有子组件的依赖提供者。

3.16、Vuex

state

let num = computed( ()=>store.state.num );

getters

let total = computed( ()=>store.getters.total )

mutations

store.commit( 'xxx' )

actions

store.dispatch( 'xxx' )

modules

和之前版本一样

持久化存储(插件)

npm i vuex-persistedstate -S

3.17、Pinia

https://pinia.vuejs.org/introduction.html

vuex与pinia区别

  • 支持选项式API和组合式API写法
  • pinia没有mutations,只有state、getters、actions
  • pinia分模块不需要modules(之前vuex分模块需要modules)
  • TypeScript支持很好
  • 自动化代码拆分
  • pinia体积更小(性能更好)
  • pinia可以直接修改state数据

使用

https://pinia.vuejs.org/getting-started.html

npm install pinia

pinia分模块

pinia持久化存储

安装插件
npm i pinia-plugin-persist --save

3.18、设置代理

设置代理解决跨域问题

4、项目

saas

在这里插入图片描述

vue-router

npm install vue-router@4 -S

reset.css

https://meyerweb.com/eric/tools/css/reset/

element-plus

https://element-plus.org/zh-CN/guide/design.html

安装

npm install element-plus --save

NavSwiper

5、组件

组件:https://www.jspang.com/article/69

npm install element-plus --save


### NavSwiper

## 5、组件

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

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

相关文章

LQ0197 锦标赛【程序填空】

题目来源&#xff1a;蓝桥杯2014初赛 C A组E题 题目描述 本题为代码补全填空题&#xff0c;请将题目中给出的源代码补全&#xff0c;并复制到右侧代码框中&#xff0c;选择对应的编译语言&#xff08;C/Java&#xff09;后进行提交。若题目中给出的源代码语言不唯一&#xff0…

Python简单实现人脸识别检测, 对照片进行评分

大家好&#xff0c;今天和大家说说如何用Python简单实现人脸识别检测, 对照片进行排名&#xff0c;看看自己有多漂亮。 [开发环境]: Python 3.8 Pycharm 2021.2 [模块使用]: requests >>> pip install requeststqdm >>> pip install tqdm 简单实现进度条效果…

Arduino从零开始(1)——按钮控制LED

0.前言 本文主要介绍Arduino对于开关和条件判断函数的使用。 目录 0.前言 1.介绍 2.按钮控制LED 2.1下拉模式&#xff1a; 2.2上拉模式 3.扩展实验&#xff1a; 1.介绍 前篇介绍了点亮LED&#xff0c;这次案例我们尝试通过一个简单的传感器——按钮&#xff0c;来实现…

Ubuntu20.04离线安装Vmware tools

参考连接&#xff1a;在 Linux 虚拟机中手动安装 VMware Tools 从 Workstation Pro 菜单栏中选择虚拟机 > 安装 VMware Tools。 如果安装了早期版本的Vmware tools&#xff0c;则菜单项是更新Vmware tools如果这个安装Vmware tools 是灰色的&#xff0c;进行如下的处理方式…

HTML基本骨架与编辑器选择

HTML基本骨架与编辑器选择 文章目录HTML基本骨架与编辑器选择1.HTML基本了解1.1 什么是HTML1.2 HTML标签1.3 HTML元素1.4 Web浏览器1.5 HTML网页结构1.6 HTML版本了解2.HTML基本骨架介绍3.HTML编辑器的下载与使用1.HTML基本了解 1.1 什么是HTML HTML 是用来描述网页的一种语言…

双链表的基本操作

目录 一、双链表的设计 二、双链表的实现和基本操作 1.实现双链表节点以及设置first、last指针 2.获取当前链表中元素的数量 3.获取指定位置的节点 4.在尾部添加结点元素 5.在指定位置添加元素 6.删除指定位置的结点 一、双链表的设计 针对于查询操作&#xff0c;我们可…

计算机操作系统:实验3 【虚拟存储器管理】

计算机操作系统&#xff1a;实验3 【虚拟存储器管理】 文章目录计算机操作系统&#xff1a;实验3 【虚拟存储器管理】一、前言二、实验目的三、实验环境四、实验内容五、实验说明1、设计中虚页和实页的表示2、关于缺页次数的统计3、LRU算法中“最近最久未用”页面的确定4、算法…

删除类及其对象的属性:delattr()函数

【小白从小学Python、C、Java】 【Python-计算机等级考试二级】 【Python-数据分析】 删除类及其对象的属性 delattr()函数 [太阳]选择题 请问对以下Python代码说法错误的是&#xff1f; class MyClass1: x 1 y 2 myObject1 MyClass1() print(【访问】myObject1的属…

Revit中“结构框架显示与剪切“的应用和一键剪切功能

一、Revit关于"结构框架显示与剪切"的应用 结构框架&#xff1a;顾名思义其实它表示的就是结构梁而已&#xff0c;但是我们画图的时候往往会显示"实线"和"虚线"&#xff0c;以至于在出结构图纸的时候&#xff0c;达不到出图要求 NO.2、应用 Part…

ISCTF

upload upload,一道phar文件上传题目 <?php class upload{public $filename;public $ext;public $size;public $Valid_ext;public function __construct(){$this->filename $_FILES["file"]["name"];$this->ext end(explode(".", …

[山东科技大学OJ]1490 Problem F: 该按哪些键

Time Limit: 1 Sec Memory Limit: 128 MB Submit: 1693 Solved: 433 [Submit][Status] Description Peter在手机上打字时一直用全键键盘来输入&#xff0c;但最近不知道怎么搞的&#xff0c;把全键键盘弄丢了&#xff0c;只剩下了9键键盘。一项喜欢高科技的Peter却不会用9键…

彻底搞懂nodejs事件循环

nodejs是单线程执行的&#xff0c;同时它又是基于事件驱动的非阻塞IO编程模型。这就使得我们不用等待异步操作结果返回&#xff0c;就可以继续往下执行代码。当异步事件触发之后&#xff0c;就会通知主线程&#xff0c;主线程执行相应事件的回调。 以上是众所周知的内容。今天…

ASEMI整流桥D3KB100参数,D3KB100规格,D3KB100封装

编辑-Z ASEMI整流桥D3KB100参数&#xff1a; 型号&#xff1a;D3KB100 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;1000V RMS反向电压VR(RMS)&#xff1a;700 平均整流输出电流&#xff08;IO&#xff09;&#xff1a;3A 峰值正向浪涌电流&#xff08…

【论文阅读】时序动作检测系列论文精读(2019年)

文章目录1. BMN: Boundary-Matching Network for Temporal Action Proposal Generation论文目的——拟解决问题贡献——创新实现流程详细方法2. MGG: Multi-granularity Generator for Temporal Action Proposal论文目的——拟解决问题贡献——创新实现流程详细方法3. P-GCN: G…

稳压二极管的应用及注意事项

文章目录稳压二极管也被称为齐纳二极管 齐纳二极管和普通二极管的伏安特性曲线 齐纳二极管的工作原理 稳压二极管的伏安特性曲线的正向特性和普通二极管差不多&#xff0c;反向特性是在反向电压低于反向击穿电压时&#xff0c;反向申阳很大&#xff0c;反向漏电流极小。但是…

【学习笔记】AGC028/AGC007

AGC028 Removing Blocks High Elements 好仙啊。 我会转化&#xff01;&#xff01;问题转化为在原序列剩下的数中取ISISIS序列aaa,bbb&#xff0c;满足cx∣a∣cy∣b∣cx|a|cy|b|cx∣a∣cy∣b∣ 。对于没在a,ba,ba,b序列中的数&#xff0c;可以通过恰当放置使其不对前缀最大…

并发编程- synchronized,Lock及volatile的使用

文章目录并发编程的可见性问题解决方法synchronizedLockvolatile并发编程的可见性问题 多线程访问共享变量&#xff0c;造成线程不安全&#xff0c;最后的数值不对 public class VDemo {private static int num 0;public static void add() {num;}public static void main(St…

红队内网渗透神器--CobaltStrike安装教程

CobaltStrike介绍&#xff1a; CobaltStrike是一款渗透测试神器&#xff0c;被业界人称为CS神器。CobaltStrike分为客户端与服务端&#xff0c;服务端是一个&#xff0c;客户端可以有多个&#xff0c;可被团队进行分布式协团操作。 CobaltStrike集成了端口转发、服务扫描&…

Ubuntu 手动配置DNS

使用ping命令测试百度域名时发现&#xff0c;无法解析这个域名&#xff0c;说明当前系统上没有配置DNS服务器。配置DNS服务器的方式主要有以下两种&#xff1a; 目录 1、修改DNS配置文件 /etc/resolv.conf 2、修改网卡配置文件 /etc/network/interfaces 1、修改DNS配置文件 /e…

【附源码】计算机毕业设计JAVA宠物云寄养系统

【附源码】计算机毕业设计JAVA宠物云寄养系统 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA myba…