浅学Vue3

安装 vue项目

npm init vue@latest  回车

装包

npm install

路由

安装 Router

npm install vue-router@4 -S

项目根目录新建 router --> index.js

vue2中

index.jsimport Vue from 'vue';
import VueRouter from 'vue-router';
import Home from '../views/Home.vue';Vue.use(VueRouter);const router = new VueRouter({routes: [{path: '/',name: 'Home',component: Home}]
});export default router;main.jsimport Vue from 'vue';
import App from './App.vue';
import router from './router';new Vue({router
}).$mount('#app');

vue3中

index.jsimport { createRouter, createWebHistory } from "vue-router";
import Home from "../views/Home.vue";const routes = [{path: "/",name: "Home",component: Home,},{path: "/about",name: "About",component: () =>import(/* webpackChunkName: "about" */ "../views/About.vue"),},
];const router = createRouter({history: createWebHistory(),routes,
});export default router;main.jsimport { createApp } from 'vue';
import App from './App.vue';
import { router } from './router';const app = createApp(App);
app.use(router);
app.mount('#app');

路由缓存问题

问题展示

别名路径联想设置

1. 根目录新建 jsconfig.json 文件

2. 添加配置项

{"compilerOptions": {"baseUrl": "./","paths": {"@/*":["src/*"]}}
}

3. 最终效果

axios基础配置

Axios

axios 拦截器

vueuse

VueUse中文文档

插槽

准备模板

<script setup>
// 接收参数
defineProps({msg: {type: String,required: true,},
});
</script><template><div class="greetings"><h1 class="green">{{ msg }}</h1><!-- 主体内容区域 --><slot name="main" /></div>
</template><style scoped>
</style>

渲染模板

<script setup>
import HelloWorld from "@/components/HelloWorld.vue";
</script><template><!-- 插槽 --><HelloWorld msg="You did it!"><template #main><ul><li>111111</li><li>111111</li><li>111111</li><li>111111</li><li>111111</li></ul></template></HelloWorld>
</template><style scoped>
</style>

懒加载指令实现

图片进入视口区域,再发送请求 借助  useIntersectionObserver | VueUse中文文档

main.js中

import { useIntersectionObserver } from "@vueuse/core";// 定义全局指令
// 懒加载指令逻辑
app.directive("img-lazy", {mounted(el, binding) {// el: 指令绑定的那个元素 img// binding: binding.value  指令等于号后面绑定的表达式的值  图片urlconsole.log(el, binding.value);const { stop } = useIntersectionObserver(el, ([{ isIntersecting }]) => {console.log(isIntersecting);if (isIntersecting) {// 进入视口区域el.src = binding.value;// 手动停止监听stop();}});},
});

 需要懒加载的图片

<img v-img-lazy="item.picture" alt="" />

最终效果 

  

 

写法

vue2中

// 模板  必须有div包裹
<template><div>首页</div>
</template>// 选项式APIdata() {return {数据}
},
methods: {方法
}

Vite构建的Vue3项目中

<template>首页
</template>// 组合式API数据
let sliderList = ref([]);方法
const mouseOut = () => {};

修改数据

vue2中

export default {data() {return {message: 'Hello, Vue!'};},methods: {updateMessage() {this.message = 'Updated message';}}
}

vue3中

import { ref, reactive } from 'vue';// setup语法糖插件  解决引入问题(自动引入所需要的插件)// 下载安装 npm i unplugin-auto-import -D    在 vite.config.js 中进行配置export default {setup() {// 使用 ref---可以定义基本数据类型 对象const messageRef = ref('Hello, Vue!');// 使用 reactive--可以定义对象 数组const data = reactive({message: 'Hello, Vue!',count: 0});// 使用ref定义的数据 通过 .value 访问const updateMessage = () => {messageRef.value = 'Updated message';};// 使用 reactive 定义的数据 可直接 访问const updateCount = () => {data.count++;};return {messageRef,data,updateMessage,updateCount};}
}ref函数将一个普通的JavaScript值封装成一个包含.value属性的响应式对象。
而reactive函数将一个普通的JavaScript对象转换为一个完全响应式的代理对象。toRefs // 解构==》响应式数据let obj = reactive({name:"张三",age:20
})let { name, age } = toRefs( obj )

异步组件(按需加载) ------- 提升性能

Vuex 

// store index.js
import { createStore } from "vuex";export default createStore({state:{num:10,str:'这是store数据'},getters:{},mutations:{},actions:{},modules:{}
})// .vue
<template><div>{{ num }}</div>
</template><script setup>
import { useStore } from 'vuex'let store = useStore
{/* 即时更新 */}
let num = computed ( () => { store.state.num })</script>Vuex 持久化存储

Pinia

1. 支持选项式API和组合式API写法

2.  Pinia 没有 mutations,只有 state getters actions

3.  Pinia 分模块不需要 modules(Vuex需要)

4.  TS 支持很好

5.  Pinia 体积更小(性能更好)

6.  Pinia 可以直接修改 state 数据

// store index.js
import { defineStore } from "pinia";export const useStore = defineStore('storeId',{state:() =>{return {counter: 0,num:0}},getters:{},actions:{},
})// .vue
<div>{{ num }}<button @click="changenum">修改</button>
</div><script setup>import { storeToRefs } from "pinia";
import { useStore } from '../store'
let store = useStorelet {num, counter} = storeToRefs(store)
const changenum = () =>{// 直接修改数据num.value = 12
}
</script>

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言—每日选择题—Day62

第一题 1. 在使用标准C库时&#xff0c;下面哪个选项使用只读模式打开文件&#xff1f; A&#xff1a;fopen("foo.txt", "r") B&#xff1a;fopen("foo.txt", "r") C&#xff1a;fopen("foo.txt", "w") D&#xf…

钦丰科技(安徽)股份有限公司携卫生级阀门管件盛装亮相2024发酵展

钦丰科技(安徽)股份有限公司携卫生级阀门管件盛装亮相2024济南生物发酵展&#xff01; 展位号&#xff1a;2号馆A65展位 2024第12届国际生物发酵产品与技术装备展览会&#xff08;济南&#xff09;于3月5-7日在山东国际会展中心盛大召开&#xff0c;展会同期将举办30余场高质…

Linux:查询当前进程或线程的资源使用情况

目录 一、/proc/[PID]/下的各个文件1、proc简介2、/proc/[PID]/详解 二、通过Linux API获取当前进程或线程的资源使用情况1、getrusage2、sysinfo3、times 在工作中&#xff0c;我们排除app出现的一些性能/资源问题时&#xff0c;通常要先知道当前app的资源使用情况&#xff0c…

十大VSCODE 插件推荐2023

1、海鲸AI 插件链接&#xff1a;ChatGPT GPT-4 - 海鲸AI - Visual Studio Marketplace 包含了ChatGPT(3.5/4.0)等多个AI模型。可以实现代码优化&#xff0c;代码解读&#xff0c;代码bug修复等功能&#xff0c;反应迅捷&#xff0c;体验出色&#xff0c;是一个多功能的AI插件…

【c++】入门1

c关键字 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;这些变量、函数和类的名称将都存在于全局作用域中&#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化&#xff0c;以避免命名冲突或名字污染&#xff…

Kubernetes (四) 资源清单及yaml文件详解

一. 资源清单 二. 编写yaml文件及内容详解 常用命令 …

智能优化算法应用:基于驾驶训练算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于驾驶训练算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于驾驶训练算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.驾驶训练算法4.实验参数设定5.算法结果6.…

【论文笔记】3D Gaussian Splatting for Real-Time Radiance Field Rendering

原文链接&#xff1a;https://arxiv.org/abs/2308.04079 1. 引言 网孔和点是最常见的3D场景表达&#xff0c;因其是显式的且适合基于GPU/CUDA的快速栅格化。神经辐射场&#xff08;NeRF&#xff09;则建立连续的场景表达便于优化&#xff0c;但渲染时的随机采样耗时且引入噪声…

测试服务器带宽(ubuntu)

apt install python3 python3-pippip3 install speedtest-clispeestest-cli

Python模拟动态星空

前言 今天&#xff0c;我们来用Python做个星空。 一、模拟星空 1,.首先导入所需要的库&#xff1a; from turtle import * from random import random, randint 2.初始画面&#xff1a; screen Screen() width, height 800, 600 screen.setup(width, height) screen.tit…

使用Dependency Walker和Process Explorer排查瑞芯微工具软件RKPQTool.exe启动报错问题

目录 1、问题说明 2、使用Dependency Walker查看工具程序的库依赖关系 3、在可以运行的电脑上使用Process Explorer查看依赖的msvcr120.dll和msvcp120.dll库的路径 4、C/C运行时库介绍 5、可以下载安装VC_redist.x86.exe或VC_redist.x64.exe解决系统库缺失问题 C软件异常排…

thinkcmf 文件包含 x1.6.0-x2.2.3 已亲自复现

thinkcmf 文件包含 x1.6.0-x2.2.3 CVE-2019-16278 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建漏洞利用 修复建议总结 漏洞名称 漏洞描述 ThinkCMF是一款基于PHPMYSQL开发的中文内容管理框架&#xff0c;底层采用ThinkPHP3.2.3构建。ThinkCMF提出灵活的应用机制&a…

智慧城市新型基础设施建设综合方案:文件全文52页,附下载

关键词&#xff1a;智慧城市建设方案&#xff0c;智慧城市发展的前景和趋势&#xff0c;智慧城市项目方案&#xff0c;智慧城市管理平台&#xff0c;数字化城市&#xff0c;城市数字化转型 一、智慧城市新基建建设背景 1、城市化进程加速&#xff1a;随着城市化进程的加速&am…

SpringBoot整合JWT+Spring Security+Redis实现登录拦截(二)权限认证

上篇博文中我们已经实现了登录拦截&#xff0c;接下来我们继续补充代码&#xff0c;实现权限的认证 一、RBAC权限模型 什么事RBAC权限模型&#xff1f; RBAC权限模型&#xff08;Role-Based Access Control&#xff09;即&#xff1a;基于角色的权限访问控制。在RBAC中&#x…

若依SQL Server开发使用教程

1. sys_menu表中的将菜单ID修改为自动ID,解决不能增加菜单的问题&#xff0c;操作流程如下&#xff1a; 解决方案如下 菜单栏->工具->选项 点击设计器&#xff0c;去掉阻止保存要求更新创建表的更改选项&#xff0c;点确认既可以保存了 2 自动生成代码找不表的解决方案…

Nature Perspective | LLMs 作为角色扮演引擎

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 随着对话智能体的表现越来越像人&#xff0c;我们必须开发出有效的方法&#xff0c;在不陷入拟人化陷阱的情况下&#xff0c;用高层次的术语描述它们的…

Dubbo入门直接上手,结合微服务详解

Dubbo 高性能、轻量级的 Java RPC 框架 RPC&#xff1a; Remote Procedure Call 远程过程调用&#xff0c;简单来说就是它允许一个计算机程序通过网络请求调用另一个计算机上的程序&#xff0c;就像本地调用一样。有非常多的协议和技术来都实现了RPC的过程&#xff0c;比如&a…

【大数据存储与处理】开卷考试总复习笔记

文章目录 实验部分一、 HBase 的基本操作1. HBase Shell入门2. HBase创建数据库表3. HBase数据操作4. HBase删除数据库表5. HBase Python基本编程 before二、 HBase 过滤器操作1.创建表和插入数据2.行键过滤器3.列族与列过滤器4.值过滤器5.其他过滤器6.python hbase 过滤器编程…

Kubernetes(K8S)快速入门

概述 在本门课程中&#xff0c;我们将会学习K8S一些非常重要和核心概念&#xff0c;已经操作这些核心概念对应组件的相关命令和方式。比如Deploy部署&#xff0c;Pod容器&#xff0c;调度器&#xff0c;Service服务&#xff0c;Node集群节点&#xff0c;Helm包管理器等等。 在…

程序员收入与支出 对比分析网红的收入来源

无法收回&#xff0c;就不要花出去。钱只花在增值的事上。 保证一年基本生存的钱不能花。 大额支出要全家协商一致才能花。&#xff08;别把全家坑了&#xff09; 作为程序员&#xff0c;您的收入和支出可以从以下几个方面来考虑&#xff1a; 收入 基本薪资&#xff1a;这是…