news 2026/2/6 17:26:53

Vue3+Vite引用jquery工具库(因为jquey是工具库不是插件,所以这里是说是引用不是安装依赖)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue3+Vite引用jquery工具库(因为jquey是工具库不是插件,所以这里是说是引用不是安装依赖)

对于 Vue 3 + Vite 项目,配置 jQuery 全局变量的方法与 Webpack 项目完全不同。Vite 不直接使用 Webpack 的ProvidePlugin,需要通过 Vite 插件或直接修改全局变量的方式来实现。

以下是为你量身定制的两种方法,强烈推荐使用第一种“自动注入”方案

✅ 方案一:使用vite-plugin-externals自动注入(推荐)

这个方案最接近原始 Webpack 的ProvidePlugin效果,配置后你无需修改任何组件代码。

操作步骤:

  1. 安装依赖
    在项目根目录下,运行以下命令安装jqueryvite-plugin-externals

    bash

    npm install jquery --save npm install vite-plugin-externals --save-dev
  2. 配置vite.config.ts
    打开你的vite.config.ts文件,添加以下配置:

    typescript

    // vite.config.ts import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { viteExternalsPlugin } from 'vite-plugin-externals' // 引入插件 export default defineConfig({ plugins: [ vue(), // 配置此插件以全局注入 jQuery viteExternalsPlugin({ jquery: 'jQuery', // 关键:将 import 的 jquery 替换为全局的 jQuery 变量 }) ], // 可选:如果你遇到构建问题,可以添加 resolve 别名配置 resolve: { alias: { jquery: 'jquery/dist/jquery.min.js', // 确保指向正确的路径 }, } })
  3. index.html中引入 jQuery
    public/index.html<head><body>结束前,添加 jQuery CDN 链接(这是全局变量的来源):

    html

    <!-- 在 public/index.html 中添加 --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  4. 更新类型声明
    在你的全局类型声明文件(如src/env.d.tssrc/vue-plugin-hiprint.d.ts)中,添加:

    typescript

    // 声明全局 jQuery 和 $ 变量 interface Window { $: any; jQuery: any; } declare const $: any; declare const jQuery: any;
  5. 重启开发服务器

    bash

    npm run dev

📝 方案二:手动设置全局变量(备用方案)

如果方案一遇到问题,可以使用更直接的手动方案。

  1. 安装 jQuery

    bash

    npm install jquery --save
  2. 修改main.tsmain.js
    在项目的入口文件(通常是src/main.ts)最顶部,添加以下代码:

    typescript

    // src/main.ts import * as jquery from 'jquery' // 将 jQuery 设置为全局变量 ;(window as any).$ = jquery.default || jquery ;(window as any).jQuery = jquery.default || jquery // 原有的 Vue 应用创建代码 import { createApp } from 'vue' import App from './App.vue' // ...
  3. 更新类型声明(同方案一的第4步)。

  4. 重启开发服务器

🔧 验证配置是否成功

配置完成后,请按以下步骤验证:

  1. 在浏览器中打开你的设计器页面。

  2. 打开开发者工具 (F12) → 控制台 (Console)

  3. 输入console.log($, jQuery)并按回车。

  4. 如果能看到function...的输出,而不是undefined,则说明配置成功。

⚠️ 重要提醒

  • CSS 样式引入:请务必确认已经按照之前提到的方法,正确引入了vue-plugin-hiprint的打印样式文件,否则设计器样式会错乱。

  • 代码修改:配置成功后,你的PrintDesigner.vue中直接使用$的代码hiprint.PrintElementTypeManager.buildByHtml($(".ep-draggable-item"))应该就能正常工作了。

  • 版本兼容:如果使用 CDN,建议固定 jQuery 版本(如示例中的 3.6.0),避免因版本更新导致不兼容。

请优先尝试方案一,这是目前 Vite 生态下比较标准和优雅的解决方案。如果在配置过程中遇到任何具体的错误信息,可以随时提供给我,我再帮你分析。

如果内网环境,这里如何处理: <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

在内网环境下,不能依赖外网CDN,有几种可靠的解决方案,其优缺点和操作步骤对比如下:

方案核心思路优点缺点推荐度
方案一:下载并托管jQuery文件将jQuery文件下载到项目内,作为本地静态资源引用。最稳定可靠,完全离线可用,符合内网安全规范。需手动下载和管理文件版本。★★★★★ (首选)
方案二:使用 npm 包并调整 Vite 配置依赖已安装的 npm 包,通过配置让Vite在构建时将其注入全局。依赖由 npm 统一管理,版本更新方便。配置稍复杂,需改动构建配置。★★★★☆
方案三:手动设置全局变量 (方案二的简化版)在应用入口文件 (main.ts) 中,将import的 jQuery 显式挂载到window对象。无需改动index.html或复杂Vite配置,最直接。需要在所有用到$的组件之前执行。★★★☆☆

✅ 方案一:下载并托管jQuery文件(推荐)

这是最符合内网环境、最简单稳定的方案。

操作步骤:

  1. 下载 jQuery 文件
    在能访问外网的机器上,访问 jQuery 官网 或直接使用链接:https://code.jquery.com/jquery-3.6.0.min.js,下载该.js文件。

  2. 放入项目目录
    将下载好的jquery-3.6.0.min.js文件,放入你 Vue 项目的public目录下(例如public/libs/jquery/)。这是 Vite 约定存放静态资源的地方,该目录下的文件在构建时会原样复制到输出目录。

  3. 修改index.html引用
    打开public/index.html文件,将 CDN 链接改为指向你本地的路径:

    html

    <!-- 修改前 --> <!-- <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> --> <!-- 修改后(假设文件放在 public/libs/jquery/ 下) --> <script src="/libs/jquery/jquery-3.6.0.min.js"></script>

    路径说明/开头表示从网站根目录开始查找,Vite 开发服务器和最终构建都会正确映射到public目录。

  4. (可选)类型声明
    在你的全局类型声明文件(如src/env.d.ts)中,确保有对全局$jQuery的声明:

    typescript

    // src/env.d.ts interface Window { $: any; jQuery: any; } // 或者直接声明全局变量 declare const $: any; declare const jQuery: any;

🔧 方案二:使用 npm 包并调整 Vite 配置

如果你已经在项目里通过npm install jquery安装了 jQuery,此方案可以免去手动管理文件。

操作步骤:

  1. 确保已安装 jQuery

    bash

    npm install jquery
  2. 配置vite.config.ts以全局注入
    修改vite.config.ts,目的是在构建时将 jQuery 模块的导出,注入为全局的$jQuery变量。

    typescript

    // vite.config.ts import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' export default defineConfig({ plugins: [vue()], // 新增以下配置 resolve: { alias: { // 确保jQuery解析到正确的文件 jquery: 'jquery/dist/jquery.min.js', }, }, // 使用 rollup 配置进行全局注入 build: { rollupOptions: { external: ['jquery'], // 告诉 Rollup jQuery 是外部依赖 output: { globals: { jquery: '$' // 指定全局变量名 } } } }, // 在开发环境下也定义全局变量 define: { 'window.$': 'global.$', // 这个写法可能不通用,更推荐方案三的入口文件方式 } })

    请注意,仅通过 Vite 配置在开发环境下实现类似ProvidePlugin的完美自动注入较为复杂,这通常需要借助插件。因此,更推荐结合方案三

  3. 结合方案三(关键):由于纯配置方式可能不完美,你很可能仍然需要按照下文“方案三”的步骤,在main.ts中手动设置全局变量,以确保开发时可用。

📝 方案三:手动设置全局变量(最直接)

此方案不依赖index.html<script>标签,而是通过应用代码本身解决。

操作步骤:

  1. 安装 jQuery

    bash

    npm install jquery
  2. 修改应用入口文件 (src/main.ts)
    main.ts文件的最顶部,添加以下代码:

    typescript

    // src/main.ts import jquery from 'jquery' // 将 jQuery 挂载到全局 window 对象上 (window as any).$ = jquery (window as any).jQuery = jquery // 以下是你的应用的原有代码 import { createApp } from 'vue' import App from './App.vue' // ... createApp(App).mount('#app')
  3. 更新类型声明(同方案一的第4步)。

这个方案的原理是:你的应用代码在浏览器中运行时,会先执行main.ts。当执行到挂载代码时,window.$window.jQuery就被创建了。随后,当vue-plugin-hiprint的代码执行$(".ep-draggable-item")时,它从全局window对象上找到了这个函数,调用就能成功。

💡 总结与最终建议

对于内网环境,我给出一个清晰的决策路径:

  1. 如果你追求极致的稳定和简单,不想与构建工具纠缠,请选择【方案一】。这是最“傻瓜式”、最接近传统Web开发的方式,在任何环境下都绝对可靠。

  2. 如果你希望依赖由 npm 统一管理,并且可以接受稍微复杂的配置,请选择【方案三】,或在方案二的基础上必须结合方案三。这是目前 Vite 环境下最实际、最有效的解决方案。

无论选择哪个方案,完成后都请:

  1. 删除index.html中旧的 CDN 引用(如果采用方案三则无需此步)。

  2. 确保类型声明正确,避免 TypeScript 报错。

  3. 重启你的开发服务器(npm run dev)。


实例操作:

环境:Vue3(^3.4.21)+ Vite(^6.3.6)

1、安装 jquery 和 vite-plugin-externals

npm install jquery --save
npm install vite-plugin-externals --save-dev

2、配置vite.config.ts

// 引入插件 vite-plugin-externals 的 viteExternalsPlugin import { viteExternalsPlugin } from "vite-plugin-externals"; // https://vitejs.dev/config/ export default defineConfig({ // 插件配置 plugins: [ vue(), VueSetupExtend(), // 配置此插件以全局注入 jQuery viteExternalsPlugin({ // 将 import 的 jquery 替换为全局的 jQuery 变量 jquery: "jQuery" }), VueDevTools() ], }

3、在入口文件 index.html 中 引入 jquey

将j query.min.js 拷贝到 public 目录下,再重命名为 jquery-3.7.1.min.js

index.html

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <link rel="icon" href="/lims.ico"> <link rel="stylesheet" type="text/css" media="print" href="/print-lock.css"> <script src="/jquery-3.7.1.min.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>%VITE_APP_TITLE%</title> </head> <body> <div id="app"></div> <script type="module" src="/src/main.ts"></script> </body> </html>

4、在全局类型声明文件env.d.ts文件中声明全局 jQuery 和 $ 变量

env.d.ts

/// <reference types="vite/client" /> // ... // 声明全局 jQuery 和 $ 变量 interface Window { $: any; jQuery: any; } declare const $: any; declare const jQuery: any;

验证结果:


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/5 8:58:34

Docker本地部署AutoGPT实战指南

Docker本地部署AutoGPT实战指南 在你还在反复调整提示词、手动点击“发送”来与AI对话时&#xff0c;有没有想过——有一天AI能自己思考、拆解目标、上网查资料、写文件、执行代码&#xff0c;甚至在你睡觉的时候替你完成一份完整的项目计划&#xff1f; 这不是科幻。随着Aut…

作者头像 李华
网站建设 2026/2/6 15:50:42

Python安装onnxruntime加速GPT-SoVITS推理

Python安装onnxruntime加速GPT-SoVITS推理 在语音合成技术飞速发展的今天&#xff0c;个性化声音克隆已不再是科幻电影中的桥段。从虚拟主播到智能助手&#xff0c;越来越多的应用开始追求“像人”的声音——不仅要说得清楚&#xff0c;更要说得像你。而 GPT-SoVITS 正是这一浪…

作者头像 李华
网站建设 2026/2/6 21:46:11

Linly-Talker容器化部署与环境搭建指南

Linly-Talker容器化部署与环境搭建指南 在虚拟主播、AI客服和数字员工等场景日益普及的今天&#xff0c;如何快速构建一个能“听懂、说话、表情自然”的全栈式数字人系统&#xff0c;成为许多开发者关注的核心问题。Linly-Talker 正是为此而生——它不是一个简单的语音或动画工…

作者头像 李华
网站建设 2026/2/6 7:14:08

LobeChat能否处理JSON数据?结构化信息操作

LobeChat 能否处理 JSON 数据&#xff1f;一场关于结构化信息操作的深度实践 在现代 AI 应用开发中&#xff0c;我们早已不再满足于“你叫什么名字&#xff1f;”“请讲个笑话”这类简单交互。越来越多的开发者和用户期望大模型不仅能理解自然语言&#xff0c;还能输出可被程序…

作者头像 李华
网站建设 2026/2/3 20:05:02

Android AI示例宝库:一站式探索Google AI模型的无限可能

Android AI Sample Catalog Android AI Sample Catalog 是一个独立的应用程序&#xff0c;旨在为开发者提供一系列自包含的示例&#xff0c;集中展示Google AI模型解锁的各种生成式AI能力。这些示例涵盖了从基础文本对话、多模态理解到实时语音交互、视频内容分析以及图像生成…

作者头像 李华