webpack系列-webpack內置插件ProvidePlugin的應用(定義全局變量,例如vue引入jquery全局使用)


vue+webpack使用ProvidePlugin插件引入jquery

先看一個實例,webpack+vue引入jquery並全局使用,這兒指通過配置,不是在靜態頁面使用script標簽直接引入jquery。

在webpack配置中跟module同級中添加plugins,代碼如下:

const webpack = require('webpack')

module.exports = {
  context: path.resolve(__dirname, '../'),
  // ...其他代碼省略
  plugins: [
    new webpack.ProvidePlugin({
      $: 'jquery',
      jQuery: 'jquery',
      'window.jQuery': 'jquery'
    })
  ],
  // ... 其他代碼省略
}

當然要使用jquery,需要npm安裝下,即npm i jquery -S

現在你就可以在任意vue頁面中不需要import導入jquery就能使用了。

 mounted() {
    $('#btn').on('click',function(){
      console.log('我調用jquery了')
    })
  }

 可以查看下segmentfault上的一個問題:《vue.js+webpack 中怎么引用並全局使用jquery》,但是回答中是有錯誤的,不需要在main.js在import導入jquery。

ProvidePlugin配置解析路徑

默認情況下,模塊解析路徑為當前文件夾(./**)node_modules

上面的這種配置就是去node_modules下面找jquery的模塊全局引入。

當然還可以配置工程中的路徑,也可以指定完整路徑:

plugins: [
    new webpack.ProvidePlugin({
      'utils': path.resolve(path.join(__dirname, '..','src/utils/index.js'))
    })
  ]

我在src/utils/index.js代碼中寫如下一個方法:

export function sum(a,b) {
  return a + b
}

現在我可以在任意實例頁面中調用,如下代碼:

mounted() {
    var result = utils.sum(1,2);
    console.log(result) // 3
  }

 當然我們也可以通過alias屬性配置快捷方式,如下代碼:

alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      'utils': resolve('src/utils/index.js') // 新增的
    }

我們再修改下ProvidePlugin的配置,如下代碼:

plugins: [
    new webpack.ProvidePlugin({
      'utils': 'utils'
    })
  ]

這樣也是可以的,然后我們在任意實例頁面中調用:

mounted() {
    var result = utils.sum(1,2);
    console.log(result) // 3
  }

 參考


免責聲明!

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



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