標籤:

webpack載入jQuery plugin或者其他legacy第三方庫

webpack載入jQuery plugin或者其他legacy第三方庫

你的項目有時候會要載入各種各樣的第三方庫,一些老的庫不支持AMD或者CommonJS等一些先進的格式,比如一些jQuery的插件,它們都依賴jQuery,如果直接引用就會報錯 jQuery is not undefined這類的錯誤,有幾種方法解決

先創建一個jQuery plugin: plugin.js

(function ($) { const shade = "#556b2f"; $.fn.greenify = function() { this.css( "color", shade ); return this; };}(jQuery));

第一種方法 使用webpack.ProvidePlugin

webpack提供一個插件 把一個全局變數插入到所有的代碼中,在config.js裡面配置

... plugins: [ new HtmlwebpackPlugin({ title: Hello World app }), //provide $, jQuery and window.jQuery to every script new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery", "window.jQuery": "jquery" }) ] ...

在js中引用

...//這個也不需要了 因為$, jQuery, window.jQuery都可以直接使用了//import $ from jquery;import ./plugin.js;...myPromise.then((number) => { $(body).append(<p>promise result is + number + now is + moment().format() + </p>); //call our jquery plugin! $(p).greenify();});...

發現我們插入的p裡面的顏色已經變成了綠色!

第二種方法 使用imports-loader

先安裝這個loader

npm install imports-loader --save-dev

然後在入口js中

//注意這種寫法 我們把jQuery這個變數直接插入到plugin.js裡面了//相當於在這個文件的開始添加了 var jQuery = require(jquery);import imports?jQuery=jquery!./plugin.js;//後面的代碼一樣myPromise.then((number) => { $(body).append(<p>promise result is + number + now is + moment().format() + </p>); //call our jquery plugin! $(p).greenify();});

推薦閱讀:

Egg中實現Webpack動態編譯
淺析 Webpack 插件化設計
web性能優化-提高網頁載入速度
Webpack 4 升級與使用
webpack之loader和plugin簡介

TAG:webpack |