将 Utils.js 挂载为全局(window.Utils.xx)完整配置方案

将 Utils.js 挂载为全局(window.Utils.xx)完整配置方案分最常用的 3 种场景 (原生 JS / Webpack / Vite)讲清楚,你直接对应自己的项目用就行,所有配置一步到位

核心目标:把 Utils 工具函数挂载到 window 对象 上,全局任何地方直接用 window.Utils.方法名 调用。


一、先写好 Utils.js 本身(通用)

不管什么项目,Utils.js 内部写法固定

javascript 复制代码
// Utils.js
const Utils = {
  // 写你的工具方法
  formatDate: function() {},
  copyText: function() {},
  debounce: function() {},
  // ...更多方法
};

// 关键:挂载到 window 全局
window.Utils = Utils;

// 兼容 CommonJS(可选,让它能被 import/require)
if (typeof module !== 'undefined') {
  module.exports = Utils;
}

二、场景 1:原生 HTML / 无构建工具(最简单)

不需要任何配置!

直接用 <script> 引入 Utils.js 优先加载 即可:

html 复制代码
<!-- 先引入 Utils.js -->
<script src="./Utils.js"></script>

<!-- 后面任何脚本都能直接用 -->
<script>
  // 直接使用
  window.Utils.formatDate();
  Utils.formatDate(); // window 可省略
</script>

✅ 生效条件:Utils.js 必须在使用它的脚本之前加载


三、场景 2:Webpack 项目(Vue2 / React 旧项目)

需要两步配置,让 Webpack 把 Utils 自动挂载到全局。

1. 安装依赖(如果没有)

bash 复制代码
npm install expose-loader --save-dev

2. 配置 webpack.config.js

javascript 复制代码
module.exports = {
  module: {
    rules: [
      {
        test: require.resolve('./src/utils/Utils.js'), // 你的文件路径
        use: [
          {
            loader: 'expose-loader',
            options: {
              exposes: {
                globalName: 'Utils', // 全局变量名
                override: true,
              },
            },
          },
        ],
      },
    ],
  },
};

3. 入口文件 main.js 引入

javascript 复制代码
// main.js
import './utils/Utils.js';

✅ 完成:全局任何文件直接用 window.Utils.xxx


四、场景 3:Vite 项目(Vue3 / React 最新项目)

Vite 更简单,不用装 loader,2 步搞定。

1. 在入口文件 main.js 引入并挂载

javascript 复制代码
// main.js
import Utils from './utils/Utils.js';

// 直接挂载到 window
window.Utils = Utils;

2. 提供类型提示(TS 项目可选)

src/vite-env.d.ts 添加:

typescript 复制代码
declare interface Window {
  Utils: typeof import('./utils/Utils').default;
}

✅ 完成:全局任意地方 window.Utils.方法 直接用


五、验证是否生效

在浏览器控制台 F12 输入:

javascript 复制代码
console.log(window.Utils);

能打印出工具对象 = 配置成功 ✅


最简总结

  1. Utils.js 内部必须写 window.Utils = Utils
  2. 原生项目:直接 script 引入
  3. Webpack:用 expose-loader 配置
  4. Vite :入口文件 window.Utils = Utils 即可
相关推荐
艾伦野鸽ggg6 分钟前
前端异步请求的状态竞争(请求竞态)问题
前端·javascript·axios
是立不是利10 分钟前
前端交互基石:深入剖析JavaScript三级联动背后的设计哲学
开发语言·前端·javascript
老刘的望远镜19 分钟前
AgentScope Java 从零(03):Agent 的记性默认全开,我在第 50 轮翻了车
java·开发语言·javascript
Littlehero_12128 分钟前
QT自定义控件之电气接线图(源码开源)
开发语言·qt
中科三方43 分钟前
DNS拨测到底在拨测什么?
开发语言·github·php·dns·云拨测
软件黑马王子1 小时前
20.Resources资源加载:基本实现
开发语言·前端框架·c#
前端精髓1 小时前
React 更新 state 中的对象
javascript·react.js·ecmascript
李少兄1 小时前
Java 中只有值传递吗?
java·开发语言·python
可乐鸡翅yeah_2 小时前
hls.js 播放质量埋点实战,采集卡顿、起播、错误指标定位线上用户问题
开发语言·前端·javascript·ecmascript·音视频·m3u8·音视频在线播放
szarron2 小时前
RF Demo Kit|NanoVNA 射频演示测试板完整上手教程,滤波器、衰减器、SOLT 校准学习板
开发语言·人工智能·学习·php·射频工程·频谱仪