webpack中引用jQuery的四种方式
import
webpack中是根据一个入口文件开始收集依赖。
import $ from 'jquery'
但是一个项目中通常有很多个地方都用到了jQuery,每个模块都要这样的一行代码
那么如何解决这个问题了。
webpack插件 ProvidePlugin
webpack内部有个插件,可以帮助到我们,(webpack自己的插件),用了这个插件,我们所有文件都不用再手动的导入了。

plugins: [
new webpack.ProvidePlugin({
$: 'jquery'
}),
new HtmlWebpackPlugin()
]

webpack.ProvidePlugin 这个插件了需要传入一个对象作为参数,key表示变量名,value表示模块名。
缺点:这个$不能放在window上
expose-loader

module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
test: /\.js$/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
},
{
test: require.resolve('jquery'),
use: {
loader: 'expose-loader',
options: '$'
}
}
]
},

require.resolve 表示在node_modules中查找模块的路径。
import $ from 'jquery' 表示在node_modules引入这个模块。
引用的模块路径完全匹配,将使用loader来处理,所有你必须在入口文件中引用这个模块
options 表示模块的别名
只要引用一次就会暴露在全局上,通过(window.$看看)
除了入口文件引入一次,其他模块就不需要引入了。
CDN
一般我们会选择CDN引入文件,不想打包jQuery,那么如何处理呢?
加载CSN文件的loader
add-asset-html-cdn-webpack-plugin
使用

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const AddAssetHtmlCdnWebpackPlugin = require('add-asset-html-cdn-webpack-plugin');
module.exports = {
new AddAssetHtmlCdnWebpackPlugin(true, {
'jquery': 'http://code.jquery.com/jquery-git.min.js'
})
]
};

引入了CDN就不要内置打包jQuery了
标识成外部文件,webpack配置增加一个这样的配置,添加这样的内容
externals: {
'query': '$'
}
key表示包名,value表示变量,就是忽略这样 import $ from 'jquery' 这样的代码。
这就是webpack引入包的几种方式!
webpack中引用jQuery的四种方式的更多相关文章
- JAVA中集合输出的四种方式
在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello { public stat ...
- Android中实现定时器的四种方式
第一种方式利用Timer和TimerTask 1.继承关系 java.util.Timer 基本方法 schedule 例如: timer.schedule(task, delay,period); ...
- Java中遍历Map的四种方式
Demo如下 Map<String, String> map = new HashMap<>(); map.put("key1","data1&q ...
- JavaScript中定义对象的四种方式
最近在阅读< JavaScript 高级程序设计>,未免遗忘读过的内容,就打算以博客的形式做些读书笔记.今天介绍的是 JavaScript 中的四种定义对象的方法,除了这四种方法,还有工厂 ...
- JS中检测数据类型的四种方式及每个方式的优缺点
//1.typeof 用来检测数据类型的运算符 //->typeof value //->返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number". ...
- Java中实现多线程的四种方式
Java多线程实现方式主要有四种:继承Thread类.实现Runnable接口.实现Callable接口通过FutureTask包装器来创建Thread线程.使用ExecutorService.Cal ...
- Spring中依赖注入的四种方式
在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入 这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式). 使用属性的sett ...
- PHP中引入文件的四种方式详解
四种语句 PHP中有四个加载文件的语句:include.require.include_once.require_once. 基本语法 require:require函数一般放在PHP脚本的最前面,P ...
- webpack中引用jquery
1.首先需要添加项目中jquery的依赖 npm install jquery --save-dev 2.参考配置代码: var webpack = require("webpack&quo ...
- vue项目中引用echarts的几种方式
准备工作: 首先我们初始化一个vue项目,执行vue init webpack echart,接着我们进入初始化的项目下.安装echarts, npm install echarts -S //或 ...
随机推荐
- Docker学习6-Docker镜像commit操作案例
在上一篇中,我们知道了docker是基于联合文件系统的分层镜像.而且也知道了镜像是只读的,容器才是可以写的.那么,如果我们要修改镜像,修改之后,怎么提交呢?本文,凯哥将介绍,docker的提交命令 P ...
- 排除log4j-api ( 排除log4j )
写法都一样,排除log4j,或者其相关的依赖 1. gradle: 1.1 判断是否有log4j a. 将war或jar解压后,搜索log4j b. 使用IDEA gradle菜单, 项目名-> ...
- SpringMVC:SpringMVC处理Ajax请求
目录 @RequestBody @RequestBody获取json格式的请求参数 @ResponseBody @ResponseBody响应浏览器json数据 @RestController注解 @ ...
- EasyDarwin,EasyNVR, EasyNVS, EasyDSS...这些都是啥
EasyDarwin 是开源的基础版本, 其他都是衍生产品(http://www.easydarwin.org/) EasyNVR, 就是视频监控录像机,可以查看实时监控和保存监控视频, 如下图, ( ...
- JavaScript中class的静态属性和静态方法
我们可以把一个方法赋值给类的函数本身,而不是赋给它的 "prototype" .这样的方法被称为 静态的(static). 例如这样: class Animal { static ...
- 使用Vue3.5的onWatcherCleanup封装自动cancel的fetch函数
前言 在欧阳的上一篇 这应该是全网最详细的Vue3.5版本解读文章中有不少同学对Vue3.5新增的onWatcherCleanup有点疑惑,这个新增的API好像和watch API回调的第三个参数on ...
- 合合信息扫描全能王亮相静安区3·15活动,AI扫描带来绿色消费新体验
保护消费者的合法权益,是全社会的共同责任.为优化消费环境.促进品质消费高地建设,打造安全优质和谐的消费环境,上海静安区消保委于3月15日举办静安区2024年"3·15"国际消费者权 ...
- CSS – initial, Inherit, unset, revert
参考 Understanding the "Initial", "Inherit" and "Unset" CSS Keywords [译] ...
- 系统编程-进程-close-on-exec机制
我的相关博文: 系统编程-进程-exec系列函数超级详解(带各种实操代码) 一般我们会调用exec执行另一个程序,此时会用全新的程序替换子进程的正文,数据,堆和栈等. 此时保存文件描述符的变量当然也不 ...
- 【赵渝强老师】大数据分析引擎:Presto
一.什么是Presto? 背景知识:Hive的缺点和Presto的背景 Hive使用MapReduce作为底层计算框架,是专为批处理设计的.但随着数据越来越多,使用Hive进行一个简单的数据查询可能要 ...