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 }