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

ProvidePlugin:(官方文档解释)

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

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

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

先附上官方文档

项目中应用

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

javascript 复制代码
//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文件 。

javascript 复制代码
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中进行使用的,只进行了打印)

javascript 复制代码
<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 文件要重启项目!!!

相关推荐
晚霞的不甘5 分钟前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d
小迷糊的学习记录14 分钟前
0.1 + 0.2 不等于 0.3
前端·javascript·面试
梦帮科技1 小时前
Node.js配置生成器CLI工具开发实战
前端·人工智能·windows·前端框架·node.js·json
VT.馒头1 小时前
【力扣】2695. 包装数组
前端·javascript·算法·leetcode·职场和发展·typescript
css趣多多2 小时前
一个UI内置组件el-scrollbar
前端·javascript·vue.js
C澒2 小时前
前端整洁架构(Clean Architecture)实战解析:从理论到 Todo 项目落地
前端·架构·系统架构·前端框架
C澒2 小时前
Remesh 框架详解:基于 CQRS 的前端领域驱动设计方案
前端·架构·前端框架·状态模式
Charlie_lll2 小时前
学习Three.js–雪花
前端·three.js
onebyte8bits2 小时前
前端国际化(i18n)体系设计与工程化落地
前端·国际化·i18n·工程化
C澒3 小时前
前端分层架构实战:DDD 与 Clean Architecture 在大型业务系统中的落地路径与项目实践
前端·架构·系统架构·前端框架