【webpack】expose-loader 插件使用

本文介绍了如何使用expose-loader解决第三方库,如bootstrap.js,因不支持CommonJS导入而产生的问题。通过expose-loader,可以将jQuery等库暴露为全局变量,实现webpack配置中的模块转换。文中详细阐述了expose-loader的安装、配置过程,并展示了在main.js中如何使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何使用expose-loader 解决第三方库的插件依赖问题

expose 寓意为:暴露,就是为了解决一些插件不支持commonJs引入的问题(如:bootstrap.js,它只允许jQuery暴露为全局变量才可用)

这是bootstrap源码的开头。

    if (typeof jQuery === 'undefined') {
      throw new Error('Bootstrap\'s JavaScript requires jQuery')
    }

经过一系列的搜索之后,得到了一些答案,有的说可以在webpack配置 externals 属性。如下:

module.exports = {
    // ...
    externals: {
        jquery: 'jQuery'
    }
    // ...
};

然后再代码中使用 var jquery = require('jquery'); 对静态文件使用script全局包含.
当然我们可以同时引入其它插件。

<script src='jquery.js'></script>
<script src='bootstrap.js'></script>    

但这样并不是我们想要的最终目的。 我们想要用require 把 js库 引入进来,最后讲它们进行编译。expose-loader给我们了这样的功能。

安装 node模块
npm install jquery --save
npm install bootstrap --save

安装 expose-loader

npm install expose-loader --save-dev

修改 webpack.config.js

module.exports = {
    loaders: [{
        // 得到jquery模块的绝对路径
        test: require.resolve('jquery'),
        // 将jquery绑定为window.jQuery
        loader: 'expose?jQuery'
    }]
};

ps : 如果想要让一个模块有多个注入全局变量,那么需要以下配置

module.exports = {
    loaders: [{
        // 得到jquery模块的绝对路径
        test: require.resolve('jquery'),
        // 将jquery绑定为window.jQuery 和 window.$
        loader: 'expose?jQuery!expose?$'
    }]
};

最后在main.js 使用

    var jquery = require('jquery');
    // 插件注入jquery
    require('bootstrap');   

如果在 js中使用expose加载器

    // 这里 jquery 作为模块名 ,jQuery为输出变量名
    var jquery = require("expose?jQuery!jquery");
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值