都23年了你还记得渐进式框架是什么意思吗

vue


文章目录

  • vue
  • 前言
  • 一、眼见为实举个栗子
  • 二、渐进式的优势


前言

渐进式框架是一种能够逐步增强应用功能的框架,它允许开发者在不影响应用性能的情况下,逐步添加新的功能和特性。Vue.js提供了一些基础功能,如数据绑定和组件化,然后可以通过添加插件和库来增强其功能。开发者可以根据需要选择使用Vue.js的不同部分,从而逐步增强应用程序的功能。

一、眼见为实举个栗子

先举两个官方的例子:
1、vue-router都熟悉吧,用法应该也很熟悉。
我们先看它是如何注册的:

import { createRouter, createWebHashHistory } from "vue-router";
import routes from "@/router";
const router = createRouter({
  history: createWebHashHistory(),
  routes,
});
const app = createApp(App);
app.use(router);

再来看看源码:
在这里插入图片描述

2、vuex也熟悉的用法。
看看它是怎么注册的:

import store from "./store";
const app = createApp(App);
app.use(store);

再来看看源码:
在这里插入图片描述
可以看到一个共同的特点,就是使用的时候都是用use注册,并且源码内部都实现了,install方法。
那么这种使用方式就是vue渐进式的特点,就是通过注册的插件的方式扩展,vue的功能,当然如果你不需要这些插件你可以不用,这样可以使你的vue项目可大可小。很灵活。
3、当然这也给我们提供了很好的自定义扩展的便捷。
通过自己编写插件,扩展业务能力。例如:
我这里准备了一个通过插件实现用户埋点行为记录的功能。

插件

import { App } from "vue";
import axios from "axios"
export default {
  install: (app: App) => {
    console.log(app);
    const eventList = {
      pageName: "",
    };
    app.config.globalProperties.$eventPost = (data: any) => {
      eventList.pageName = data.pageName;
      axios.post(url, eventList);
    };
  },
};

用法

<script lang="ts" setup>
import { onMounted, getCurrentInstance } from "vue";
onMounted(() => {
  // 计算页面渲染时间
  const pageLoadTime =
    window.performance.timing.domContentLoadedEventEnd -
    window.performance.timing.navigationStart;
  getCurrentInstance()?.appContext.config.globalProperties.$eventPost({
    pageName: pageLoadTime,
  });
});
</script>

功能很简单,还有代码里面还有可优化的地方,感兴趣的小伙伴可以自己去优化,例如,全局注册eventPost方法,不用这么麻烦获取。
还有在插件内直接调用接口,可以抽离出来封装,只返回收集好的数据。

二、渐进式的优势

  1. 可以逐步引入:Vue框架可以逐步引入到项目中,可以先使用Vue的一部分功能,再逐步引入其他功能,这样可以避免一次性引入过多的功能,导致项目变得复杂和难以维护。

  2. 可以根据需求选择功能:Vue框架提供了很多功能和插件,可以根据项目需求选择需要的功能和插件,这样可以避免不必要的代码和功能,提高开发效率和项目的可维护性。


如有问题欢迎指出—

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

这8个摸鱼神器,千万别让你老板知道!

工欲善其事&#xff0c;必先利其器&#xff0c;对于程序员来说也是如此&#xff0c;想早点下班就不能死脑筋&#xff0c;必须借助于一些开发工具来提高自己的工作效率&#xff0c;小编选取了8款任务/项目管理工具&#xff0c;能助你[打通任督二脉]&#xff0c;工作效率大大提升…

React之动态路由创建以及解决刷新白屏问题

动态路由的创建和动态菜单的创建几乎类似&#xff0c;只不过的是&#xff0c;动态路由需要导入组件。这样才能完成跳转。 动态路由与动态菜单一样都需要封装一个转化函数&#xff0c;将后端传来的数据进行转换&#xff0c;转换成我们需要的格式。 需要导入的依赖 导入路由use…

【ChatGPT】阿里版 ChatGPT 突然官宣意味着什么?

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 阿里版 ChatGPT 突然官宣 ​ ChatGPT 技术在 AI 领域的重要性 自然语言生成 上下文连续性 多语言支持 ChatGPT 未来可能的应用场景 社交领域 商业领域 ​编辑 医疗领域…

网络安全常用术语

肉鸡 肉鸡指的就是被黑客成功入侵并取得控制权限的电脑。黑客们可以随意的控制肉鸡&#xff0c;就像在使用自己的电脑一样&#xff0c;很形象的比喻&#xff0c;就像是养的肉鸡&#xff0c;任黑客宰杀和利用。关键的是&#xff0c;在成为肉鸡后&#xff0c;只要黑客不对电脑进…

linux|进程间通信如何加锁

进程间通信有一种[共享内存]方式&#xff0c;大家有没有想过&#xff0c;这种通信方式中如何解决数据竞争问题&#xff1f;我们可能自然而然的就会想到用锁。但我们平时使用的锁都是用于解决线程间数据竞争问题&#xff0c;貌似没有看到过它用在进程中&#xff0c;那怎么办&…

Java——把数组排成最小的数

题目链接 牛客网在线oj题——把数组排成最小的数 题目描述 输入一个非负整数数组numbers&#xff0c;把数组里所有数字拼接起来排成一个数&#xff0c;打印能拼接出的所有数字中最小的一个。 例如输入数组[3&#xff0c;32&#xff0c;321]&#xff0c;则打印出这三个数字能…

如何提高三维模型OSGB格式转换3DTILES的转换速度和数据质量

如何提高三维模型OSGB格式转换3DTILES的转换速度和数据质量 提高三维模型从OSGB格式转换为3DTILES格式的转换速度和数据质量&#xff0c;可以从以下几个方面进行优化&#xff1a; 1、选用高效的转换工具&#xff1a;选择高效的转换工具是提高转换速度和数据质量的关键。目前市…

【react从入门到精通】深入理解React生命周期

文章目录 前言React技能树React的生命周期是什么React v16.0前的生命周期组件初始化(initialization)阶段组件挂载(Mounting)阶段组件更新(update)阶段组件销毁阶段 React v16.4 的生命周期总结写在最后 前言 在上一篇文章《react入门这一篇就够了》中我们已经掌握了React的基本…

ABTEST平台建设思路与方案

导读 ABTest的作用&#xff1a; 用ABTEST的结果数据&#xff0c;论证是因为某个业务方案的调整&#xff0c;对产品能力的影响。ABTEST是一个过程&#xff0c;只是为了证明改动的效果&#xff0c;其最终的阶段一定是对某个方案进行推全结束实验&#xff0c;避免稳定的业务流程…

docker 安装 datax和datax-web 之 datax-web登录时提示账号或密码错误

docker 安装docker 安装 datax和datax-web 安装教程地址&#xff1a; https://www.cnblogs.com/leihongnu/p/16612273.html 根据该博客的教程安装成功后&#xff0c;登录页面能打开&#xff0c;但是所提供的账户密码一直报错&#xff0c;这个就需要根据日志一步步去寻找原因了…

管理后台项目-07-菜单管理和动态展示菜单和按钮

目录 1-菜单管理 1.1-菜单管理列表 1.2-添加|修改功能 1.3-删除菜单 2-动态菜单按钮展示 2.1-路由文件的整理 2.2-动态展示不同的路由 1-菜单管理 当用户点击菜单管理的时候&#xff0c;会展示当前所有菜单&#xff0c;树型结构展示...并且可以对菜单进行新增编辑删除操…

2023-04-27:用go语言重写ffmpeg的remuxing.c示例。

2023-04-27&#xff1a;用go语言重写ffmpeg的remuxing.c示例。 答案2023-04-27&#xff1a; ffmpeg的remuxing.c是一个用于将多媒体文件从一种容器格式转换为另一种容器格式的命令行工具。它可以将音频、视频和字幕等元素从源文件中提取出来&#xff0c;并按照用户指定的方式…

基于SAM的二次开发案例收集分享

一、AnyLabeling[1]——制作人&#xff1a;vietanhdev AnyLabeling LabelImg Labelme Improved UI Autolabeling AnyLabeling软件是一个集成了YOLO、Segment Anything模型&#xff08;AI支持&#xff09;的高效数据标注工具&#xff0c;它可以通过点击目标的方式完成目标检…

Windows Vscode 远程连接Ubuntu, vscode检测到#include错误请更新includePath的解决方法

&#xff08;闭坑&#xff09;首先&#xff0c;我们要明白一点&#xff0c;就是我们在windows用vscode 远程连接了Ubuntu后&#xff0c;我们的Vscode的环境就是Ubuntu,不再是window了&#xff0c;所以出现问题&#xff0c;应该想到的是Ubuntu上的环境问题&#xff0c;而不是win…

机器学习与深度学习——通过SVM线性支持向量机分类鸢尾花数据集iris求出错误率并可视化

线性支持向量机 先来看一下什么叫数据近似线性可分&#xff0c;如下图所示&#xff0c;蓝色圆点和红色圆点分别代表正类和负类&#xff0c;显然我们不能找到一个线性的分离超平面将这两类完全正确的分开&#xff1b;但是如果将数据中的某些特异点(黑色箭头指向的点)去除之后&a…

根据cadence设计图学习硬件知识day06 了解一些电源转化芯片和 稳压器 和 开关芯片

1. TPL920 (高精度线性稳压器) 1.1.TPL920 介绍 TPL920系列产品是2A大电流、6μVRMS低噪声、高PSRR、高精度线性稳压器&#xff0c;通常具有在2A负载条件下的110 mV超低电压降。这TPL920系列产品同时支持固定输出电压范围从0.8伏到3.95伏&#xff0c;输出电压可调范围为0.8V至…

肝一肝设计模式【四】-- 建造者模式

系列文章目录 肝一肝设计模式【一】-- 单例模式 传送门 肝一肝设计模式【二】-- 工厂模式 传送门 肝一肝设计模式【三】-- 原型模式 传送门 肝一肝设计模式【四】-- 建造者模式 传送门 文章目录 系列文章目录前言一、什么是建造者模式二、举个栗子三、静态内部类写法四、开源框…

内存取证小练习-基础训练

这是题目和wolatility2.6的链接 链接&#xff1a;https://pan.baidu.com/s/1wNYJOjLoXMKqbGgpKOE2tg?pwdybww 提取码&#xff1a;ybww --来自百度网盘超级会员V4的分享 压缩包很小&#xff0c;题目也比较简单基础&#xff0c;可以供入门使用 1&#xff1a;Which volatility…

【QT5:CAN卡通信的上位机-代码练习-收发数据+布局+引用外部库+基础样例(1)】

【QT5:CAN卡通信的上位机-代码练习-收发数据布局引用外部库基础样例1】 1、概述2、实验环境3、自我总结和提升4、事先声明5、效果展示6、代码编写过程&#xff08;1&#xff09;操作步骤部分1、新建工程2、加入外部库&#xff0c;并且加入qt工程中3、ui页面布局4、代码练习5、运…

急急急!Kafka Topic 资源权限紧张怎么办?

我们都知道 Kafka 的 topic 资源比较“贵”&#xff0c;所以一般会给项目 topic 权限限制&#xff0c;按需申请。Milvus 会在建新表时自动申请 kafka topic 资源&#xff0c;这时候自动申请不到怎么办&#xff1f;手动配置 topic 要符合什么规范才能被 Milvus 使用&#xff1f;…