vue项目全局挂载函数 — webpack.ProvidePlugin

embedded/2024/10/25 18:24:36/

ProvidePlugin:(官方文档解释)

自动加载模块,而不必在任何地方 import 或 require 它们。

理解:在项目中,存在业务逻辑相同的功能,为了减少代码的书写,我们一般会选择抽离出复用的代码写在一个 .js 文件中,然后将其向外暴露出去;使用的时候通过 import 导入。

假如项目中有 50+ 个单文件组件( .vue )且每个组件中都要使用这个模块( .js )中向外暴露的方法,那我们是不是需要 50+ 个 import 语句。为了避免这种情况的发生,所以想到把该方法变成全局的。把某个方法变成全局方法有多种方式,此文章仅记录通过 webpack.ProvidePlugin 进行挂载!!!

先附上官方文档

项目中应用

        首先,创建一个js文件 (文件在项目中的路径 src/utils/index.js)并把需要向外暴露的方法、变量等 export 出去。

//src/utils/index.js
import axios from "axios";
function add() {console.log("add");
}
function add2() {console.log("add2");
}
export { add, add2, axios };

        接着,开始配置  vue.config.js  文件 。

const { defineConfig } = require("@vue/cli-service");
const webpack = require("webpack");const path = require("path");
module.exports = defineConfig({productionSourceMap: false,lintOnSave: false,configureWebpack: {plugins: [//挂载全局方法new webpack.ProvidePlugin({FF: [path.resolve(__dirname, "src/utils/index")],}),],},
});

         最后,在该使用它的地方开始使用。(我是在 About.vue 中进行使用的,只进行了打印)

<template><div class="about"><h1>This is an about page</h1></div>
</template>
<script setup>
import { onMounted } from "vue";
onMounted(() => {console.log(FF);
});
</script>

        控制台打印结果:【可以看出,FF 变量存储的就是 index.js 模块中向外暴露的东西,如果我们想使用 add 方法,是不是可以直接 FF.add()

那稍微的改动一下 vue.config.js 文件,index.js 文件和 About.vue 文件中内容都不变!!!

再来看下控制台输出内容:

修改 vue.config.js 文件内容和 index.js 文件中的内容再看控制台打印内容

控制台结果:

 只修改 index.js 文件,保持 vue.config.js 文件不变           

 

 输出结果:

 OK!到这就结束了,可以自己手动测试一下。谨记,每次修改完 vue.config.js 文件要重启项目!!!


http://www.ppmy.cn/embedded/10371.html

相关文章

Spring源码中的简单工厂模式

Spring 源码中广泛运用了各种设计模式,其中包括简单工厂模式。简单工厂模式在 Spring 中主要用于简化对象的创建过程,将对象的创建逻辑集中管理,从而使得客户端代码无需关心具体的对象创建细节,只需与工厂交互就能获取所需的对象实例。这种设计有助于提高代码的可读性、可维…

记录如何用php做一个网站访问计数器的方法

简介 创建一个简单的网站访问计数器涉及到几个步骤&#xff0c;包括创建一个用于存储访问次数的文件或数据库表&#xff0c;以及编写PHP脚本来增加计数和显示当前的访问次数。 方法 以下是使用文件存储访问次数的基本步骤&#xff1a; 创建一个文本文件来存储计数&#xff1a…

1125页Go语言技术手册,涵盖Go语言所有核心知识点,限时免费下载!

从Docker的兴起&#xff0c;到Kubernetes的冲击&#xff0c;让Go语言在后端的地位&#xff0c;尤其在偏中高级业务需求(对性能、代码质量、架构设计等)中已经不可撼动。后端开发工程师逐渐开始对Go语言产生兴趣&#xff0c;无论是擅长何种语言的后端工程师&#xff0c;个人认为…

【Linux】认识文件(二):重定向

【Linux】认识文件&#xff08;二&#xff09;&#xff1a;重定向 一.stdout,stderr,stdin二.重定向1.什么是重定向i.输出重定向>ii.追加重定向>>iii.输入重定向< 2.重定向原理3.dup2的使用 三.理解linux中的一切皆文件 上篇文件博客中&#xff0c;讲了进程管理已打…

基于mmdetection3d框架完成nvx-net算法的训练和推理

文章目录 写在前面1.安装cuda和cudnn2.配置mmdetection3d环境3.测试mmdetection3d中的多模态3D目标检测算法4.下载kitti数据集5.基于kitti数据集对多模态3D目标检测算法进行复现6.基于kitti数据集训练结果进行推理7.问题与思考 写在前面 参考链接&#xff1a; MMdetection3d环…

【Linux开发 第十二篇】搭建JavaEE环境

搭建开发环境 搭建javaEE环境 搭建javaEE环境 在Linux下开发JavaEE需要安装软件包&#xff1a; 安装jdk 安装步骤&#xff1a; 在opt目录下创建jdk目录通过xftp上床到jdk目录中进入到jdk目录中&#xff0c;解压jdk压缩包在/usr/local下创建java目录将解压完成的jdk文件移动…

启动前端项目

前提&#xff1a; node.js vue 查找是否下载好&#xff1a; node -v 检查版本 npm -v 检查版本先下载依赖&#xff1a; npm install 启动&#xff1a; npm run serve/dev 依赖下载失败解决方案&#xff1a; 一、在项目根路径找到.npmc文件把镜像路径改成…

【论文阅读】用于遥感弱监督语义分割的对比标记和标签激活

【论文阅读】用于遥感弱监督语义分割的对比标记和标签激活 文章目录 【论文阅读】用于遥感弱监督语义分割的对比标记和标签激活一、介绍二、联系工作三、方法3.1 对比token学习模块&#xff08;CTLM&#xff09;3.2 Class token对比学习3.3 标签前景激活模块 四、实验结果 Cont…