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

news2025/1/23 5:00:03

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框架提供了很多功能和插件,可以根据项目需求选择需要的功能和插件,这样可以避免不必要的代码和功能,提高开发效率和项目的可维护性。


如有问题欢迎指出—

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

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

相关文章

软件测试---BUG的生命周期

测试人员最本质的工作就是寻找bug&#xff0c;提交bug、验证bug、推进bug的解决&#xff0c;直至软件达到发布的标准&#xff0c;提高软件的质量&#xff0c;及研发的工作效率和质量。 一、什么是bug 软件的BUG,狭义概念是指软件程序的漏洞或缺陷&#xff0c;广义概念除此之外…

WuxioLin 反锯齿算法(反走样算法,Xiaolin Wu Anti-aliasing algorithm) C# 代码实现

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、锯齿和反锯齿二、Xiaolin Wu 算法代码1.C#完整代码如下2.举例和测试 总结 前言 笔者前几日自己写了个佳明手表表盘的的一个入门级App&#xff0c;模拟指针…

LeetCode 598. 范围求和 II

文章目录 题目要求代码&#xff08;包含解题思路&#xff09; 题目要求 给你一个 m x n 的矩阵 M &#xff0c;初始化时所有的 0 和一个操作数组 op &#xff0c;其中 ops[i] [ai, bi] 意味着当所有的 0 < x < ai 和 0 < y < bi 时&#xff0c; M[x][y] 应该加 1…

卡尔曼滤波器简介——α−β−γ滤波器

原文&#xff1a;The alpha - beta - gamma filter (kalmanfilter.net) 本章是介绍性的&#xff0c;它描述了α−β和α−β−γ滤波器。这些滤波器经常用于时间序列数据平滑。α−β-(γ)滤波的原则与卡尔曼滤波原理密切相关。 示例 1 – 加权黄金 现在我们已经准备好了第一个…

OJ刷题 第十三篇

22102 - 将字符串反序 时间限制 : 1 秒 内存限制 : 128 MB 请将一个给定的字符串反序(字符长度为1到10000&#xff0c;且有可能包含空格)。 输入 反序前的字符串 输出 反序后的字符串 样例 输入 abcd 输出 dcba 答案&#xff1a; C版本1&#xff1a;&#xff08;掌握&…

【genius_platform软件平台开发】第九十四讲:int64_t的格式化问题(lld和PRId64)

问题起因是在进行上位机软件优化的工作安排时&#xff0c;同事对unsigned long long 类型的时间戳进行了格式化输出优化&#xff0c;从%ull优化为了% PRIu64&#xff0c;我进行代码合并请求处理的时候突然感觉这个可以仔细查一下。查阅到的相关资料如下&#xff1a; * 1. int6…

【Linux】线程-线程安全之同步

线程安全之同步 同步(合理访问临界资源)条件变量接口 同步(合理访问临界资源) 由于在互斥的情况下可能会出现线程饥饿&#xff0c;因此需要对代码进行调整。最佳的情况就是当get线程发现有票&#xff0c;就去减减票&#xff0c;然后能够通知set线程去加加票&#xff1b;当set线…

屏幕录制:4Easysoft Screen Recorder Mac中文版

4Easysoft Screen Recorder Mac是一款屏幕录制软件&#xff0c;它可以帮助用户捕捉桌面屏幕上的任何活动&#xff0c;并记录下来&#xff0c;以便后续观看或编辑。简单而强大的屏幕录像机&#xff0c;记录每一刻。无论您是想要屏幕录制教程、在线讲座、会议、电视节目、音乐、捕…

STM32WB55_NUCLEO开发(11)----发送数据到手机

概述 本篇文章将详细介绍如何在上节配置的基础上&#xff0c;实现通过点击STM32WB开发板上的按键发送数据到手机上。 硬件准备 首先需要准备一个开发板&#xff0c;这里我准备的是NUCLEO-WB55RG 的开发板&#xff1a; 蓝牙配置 选择“mySVC”选项卡。添加第二个特征&…

springboot集成kafka的相关配置及自定义

之前的文章末尾&#xff0c;简单的实现了springboot集成kafka&#xff0c;完成了简单的测试&#xff0c;今天我们来扩展一下相关内容。 首先详解一下配置文件的内容&#xff1a; spring:kafka:# 指定 kafka 地址&#xff0c;我这里部署在的虚拟机&#xff0c;开发环境是Windo…

编译原理陈火旺第三版第七章课后题答案

下面的答案仅供参考&#xff01; 1. 给出下面表达式的逆波兰表示&#xff08;后缀式&#xff09;&#xff1a; a*(-bc) not A or not (C or not D) ab*(cd/e) (A and B) or (not C or D) -ab*(-cd) …

python+nodejs+php+springboot+vue 青少年大学生心理健康科普系统

本文先提出了开发青少年心理健康科普平台的背景意义&#xff0c;然后通过功能性和非功能性分析阐述本系统的需求&#xff0c;然后从功能设计和数据库设计两方面进行系统的设计建模。在技术实现部分采用了 作为开发后台的编程语言&#xff0c;客户端使用微信小程序技术&#xff…

html5地理位置信息介绍, 百度地图使用

文章目录 1. HTML5中地理信息API1.1 Geolocation 接口 2. 在vue中使用百度地图3. 在react中使用百度地图 1. HTML5中地理信息API HTML5 的地理位置 API 可以让你获取用户的地理位置信息&#xff0c;并将其用于许多不同的应用场景&#xff0c;例如&#xff1a; 在地图上显示用…

Linux NAT软路由的简介、入门与配置

本文目录 1、确认Linux kernel内核版本2、netfilter的nat table简介3、用iptables实现SNAT3.1、 多对多(N:N)的SNAT3.2、 将一个网段内的某个公网IP移除出SNAT可用的公有IP地址池3.3、 设置目标地址为特定IP地址或者网段的报文不做NAT3.4、通过端口号&#xff0c;设置允许或者禁…

官宣!2023ACP世界大赛晋级赛名单公布!

2023 Adobe Certified Professional 世界大赛中国赛区报名已于4月1日截止。本届大赛吸引了 27 个省份&#xff0c;68个城市和地区的院校和培训机构&#xff0c;共计收到了 10705 为参赛选手报送各个类别的 11258 件参赛作品。 经过评审的层层选拔&#xff0c;共有200优秀作品脱…

Maven ( 一 ) 导入依赖

1.基本概念 1.1.什么是Maven Maven项目对象模型(Project Object Model)&#xff0c;可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的项目管理工具软件。 Maven提供了开发人员构建一个项目完整的生命周期框架。 开发团队可以自动完成项目的基础工具建设&am…

win11家庭版开机密码忘记了怎么办?

今天遇到一个用户win11家庭版本开机密码忘记了&#xff0c;所以要想办法进行跳过。 开始通过winpe进行管理员密码修改&#xff0c;但登录后出现管理员密码已经封掉不能登录&#xff0c;后来才知道win11家庭版已经去掉管理员账号。 而且登录的时候要输入pin&#xff0c;这个应…

数据标注,优化模型辅助标注、Label 库管理|ModelWhale 版本更新

春夏之交&#xff0c;草木际天。ModelWhale 新一轮的版本更新&#xff0c;期待为你带来更好的使用体验。 本次更新中&#xff0c;ModelWhale 主要进行了以下功能迭代&#xff1a; • 优化 模型辅助数据标注&#xff08;专业版✓ 团队版✓ &#xff09; • 新增 数据标注 Labe…

【LeetCode刷题记录】数组专题

说明&#xff1a; 文章内容为个人的力扣刷题记录&#xff0c;不定时更新。文章内容如有错误&#xff0c;欢迎指正。 文章目录 2023-04-24 题目1. 两数之和方法一&#xff1a;暴力解法&#xff0c;循环遍历方法二&#xff1a;哈希表 2023-04-25 4. 寻找两个正序数组的中位数方法…

在线CRM客户管理系统有好用的吗?这5款千万别错过!

阅读本文你将了解&#xff1a;1、CRM管理系统是什么&#xff1b;2.CRM管理系统在线用有哪些&#xff1b;3.CRM管理系统实际应用场景。 一、CRM管理系统是什么 CRM是客户关系管理的缩写&#xff0c;是指企业通过建立客户档案、跟进客户需求、提供优质服务来维系客户关系的一种管…