【webpack】中引用jQuery的三種方式


webpack中是根據一個入口文件開始收集依賴。

 

但是一個項目中通常有很多個地方都用到了jQuery,每個模塊都要這樣的一行代碼

import $ from 'jquery'

 

那么如何解決這個問題了。

 

webpack內部有個插件,可以幫助到我們,(webpack自己的插件),用了這個插件,我們所有文件都不用再手動的導入了。

 
         
  const webpack = require('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引入包的幾種方式,你有get到了嗎?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM