webpack 之 Shimming

it2023-02-07  51

(一)背景

我们想要在项目中使用 jquery 这个插件

main.js:将body背景颜色设置为green

import $ from 'jquery' import { ui } from './part.js' $('body').css('background', 'green') ui()

part.js:

没有引入 jquery,直接使用$符号

export function ui () { $("div").css({"background":"yellow","font-size":"200%"}); }

进行打包后,我们知道part.js 中的代码是不生效的,因为没有引入jquery,所以不能使用它的$

在 webpack 背后的整个概念是让前端开发更加模块化。也就是说,需要编写具有良好的封闭性、彼此隔离的模块,以及不要依赖于那些隐含的依赖模块(例如,全局变量)

一些第三方的库(library)可能会引用一些全局依赖(例如 jQuery 中的 $)。这些库也可能创建一些需要被导出的全局变量。这些“不符合规范的模块”就是 shimming 发挥作用的地方。

 但是,如果我想注册全局插件怎么办呢?

(二)全局配置

在 webpack.config.js 中

const webpack = require('webpack'); plugins: [ new webpack.ProvidePlugin({ $: 'jquery' }) ]

将全局的$代理成jquery

这样再一次重新打包,就生效了

主要就是全局配置插件~

 

最新回复(0)