美文网首页
webpack shimming(垫片功能)

webpack shimming(垫片功能)

作者: 弹力盒 | 来源:发表于2021-07-26 11:02 被阅读0次

1、shimming 的作用

通过 webpack.config.js 文件的配置,提供全局变量,达到业务代码可以在不同环境中使用到全局变量

2、使用方法

  • a、在 webpack.config.js 的 plugins 中配置
plugins: [
  /**
   * webpack shimming(垫片)功能
   * 将某些第三方依赖设置成项目的全局变量
   * 方便业务代码在不同环境中对该依赖的使用
   */
  new webpack.ProvidePlugin({
    /**
     * 发现业务模块里面使用了 $ 这个符号,就会自动引入 jquery 这个模块
     * 相当于 import $ from 'jquery'
     * lodash 同理
     */
    '$': 'jquery',
    '_': 'lodash',
    // _join 代表 lodash 的 join 方法
    '_join': ['lodash', 'join']
  })
]

// ---------------- 业务代码中使用 ---------------

/**
 * 由于配置了 webpack.ProvidePlugin
 * 因此 $、_ 会被自动引入
 * 无需使用 import 的方式引入 $、_
 */

$('body').append(`<div>${_.join(['tang', 'li', 'he'], '_')}</div>`)
$('body').append(`<div>${_join(['tang', 'li', 'he'], '_')}</div>`)
  • b、使用 imports-loader 引入模块作为全局变量使用
// 在 module 中配置
module.exports = {
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: [
          {
            loader: "babel-loader"
          },
          /**
           * js 会先走 imports-loader
           * 将业务模块里面的 this 指向 window
           */
          {
            loader: "imports-loader",
            options: {
              imports: {
                moduleName: 'jquery',
                name: '$',
              }
            }
          }
        ]
      }
    ]
  }
}

// ---------------- 业务代码中使用 ---------------

/**
 * 在 imports-loader 中设置了 $ 为 jquery
 * 无需使用 import 的方式引入 $、_
 */
$('body').append(`<div>hahah</div>`)

相关文章

网友评论

      本文标题:webpack shimming(垫片功能)

      本文链接:https://www.haomeiwen.com/subject/jtxypltx.html