摘要:解決方案就是,將前置插入到插件中。語(yǔ)法加載器查詢值含義模塊別名命名使用,其它變量命名定義,使用語(yǔ)法。多個(gè)值禁用有很多模塊在使用前會(huì)進(jìn)行函數(shù)的檢查。注意模塊必須在你的中被過(guò),否則他們將不會(huì)被暴露。主要用于導(dǎo)出模塊。
模塊的shim其實(shí)在webpack中可以使用imports-loader和exports-loader來(lái)完成。
1.imports-loader顧名思義,導(dǎo)入模塊的處理器。它可以做的事情包括:
前置插入模塊依賴,配置前置(相當(dāng)于插入各種類型數(shù)據(jù))
this 注入,AMD define 禁止
因此,當(dāng)我們使用了一些jquery插件的時(shí)候,這些插件全局依賴了jquery(代碼中顯式調(diào)用$),直接導(dǎo)入jquery插件會(huì)報(bào)錯(cuò),找不到$啊。
解決方案就是,將var $ = require("jquery") 前置插入到j(luò)query插件中。
module.exports = { ... module: { loaders: [ { test: require.resolve("some-module"), loader: "imports-loader?$=jquery" } ] } };語(yǔ)法:
加載器查詢值 | 含義 |
---|---|
angular | var angular = require("angular"); |
$=jquery | var $ = require("jquery"); |
define=>false | var define = false; |
config=>{size:50} | var config = {size:50}; |
this=>window | (function () { ... }).call(window); |
模塊別名命名使用=,其它變量命名定義,使用=>語(yǔ)法。
多個(gè)值:module.exports = { ... module: { loaders: [ { test: require.resolve("some-module"), loader: "imports-loader?$=jquery,angular,config=>{ data: ""},this=>window,define=>false" } ] } };AMD 禁用
有很多模塊在使用 CommonJS 前會(huì)進(jìn)行 define 函數(shù)的檢查。自從 webpack 兩種格式都可以使用后,在這種場(chǎng)景下默認(rèn)使用了 AMD 可能會(huì)造成某些問(wèn)題(如果接口的實(shí)現(xiàn)比較古怪)
define=>false與ProvidePlugin的區(qū)別
ProvidePlugin主要用來(lái)省略模塊(只對(duì)AMD和CMD模塊有效)依賴導(dǎo)入寫(xiě)法。比如:
webpack.config.js
var provide = new webpack.ProvidePlugin({ $: "jquery",//key值為暴露全局的變量名,val值為模塊名 jQuery: "jquery" }); config.plugins.push(provide)
a.js
//var $ = require("jquery");//可以省略咯 $("body").prepend("import loader test
");
因此,你的jquery文件必須支持AMD或者CMD的模塊規(guī)范,才能夠使用ProvidePlugin。
2.exports-loader主要用來(lái)將全局模塊導(dǎo)出為commonjs格式。
module.exports = { module: { rules: [{ test: require.resolve("some-module"), use: "exports-loader?file,parse=helpers.parse" //file=file,parse=helper.parse簡(jiǎn)寫(xiě) // 在文件的源碼中加入以下代碼 // exports["file"] = file; // exports["parse"] = helpers.parse; }] } };3.expose-loader
expose-loader 用來(lái)把模塊(CMD/AMD/UMD)暴露到全局變量。
注意: 模塊必須在你的 bundle 中被 require() 過(guò),否則他們將不會(huì)被暴露。
module: { rules: [{ test: require.resolve("jquery"), use: [{ loader: "expose-loader", options: "jQuery" },{ loader: "expose-loader", options: "$" }] }] }總結(jié):
1.imports-loader,ProvidePlugin,expose-loader三者之間功能比較雷同,但是expose-loader需要顯式require。
2.exports-loader主要用于導(dǎo)出commonjs模塊。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/82569.html
摘要:安裝插件能幫忙每次打包之前先刪除文件夾。安裝插件提供了一種自定義編譯期間如何報(bào)告進(jìn)度的方法。插件能創(chuàng)建環(huán)境變量開(kāi)發(fā)與生產(chǎn)時(shí)的不同配置時(shí)使用選項(xiàng)設(shè)置不同的配置文件開(kāi)發(fā)生產(chǎn)能夠?yàn)槲覀兲峁┮粋€(gè)簡(jiǎn)單的并且具有實(shí)時(shí)重新加載功能。 寫(xiě)在前面,近期有想法整理一下前端工程化相關(guān)的知識(shí),就先從打包工具開(kāi)始吧;今天帶來(lái)的是webpack相關(guān)的一些常用插件配置,后期有時(shí)間話,也會(huì)出一些比較輕量級(jí)的打包工具的...
學(xué)習(xí)的過(guò)程中收藏了這些優(yōu)秀教程和的項(xiàng)目,希望對(duì)你有幫助。 github地址, 有不錯(cuò)的就更新 官方文檔 中文指南 初級(jí)教程 webpack-howto 作者:Pete Hunt Webpack 入門(mén)指迷 作者:題葉 webpack-demos 作者:ruanyf 一小時(shí)包教會(huì) —— webpack 入門(mén)指南 作者:VaJoy Larn webpack 入門(mén)及實(shí)踐 作者:...
摘要:上一章我們了解了的編譯環(huán)境搭建項(xiàng)目構(gòu)建二編譯環(huán)境搭建這一章我們會(huì)結(jié)合的,介紹本地測(cè)試服務(wù)器的搭建過(guò)程。三開(kāi)發(fā)環(huán)境有一些特性是專門(mén)用于開(kāi)發(fā)環(huán)境的,可以幫助我們搭建一個(gè)更好的開(kāi)發(fā)環(huán)境。我們可以通過(guò)配合使用來(lái)搭建本地服務(wù)。 注:以下教程均在 windows 環(huán)境實(shí)現(xiàn),使用其他操作系統(tǒng)的同學(xué)實(shí)踐過(guò)程可能會(huì)有些出入。 ??上一章我們了解了 webpack 的 ES6 編譯環(huán)境搭建:webpack...
摘要:資源哈希編碼使用可以為每個(gè)包的名稱注入一個(gè)哈希值例如,,以便在版本更新后使客戶端上舊版本的包無(wú)效重新下載。如此受人喜愛(ài)的原因之一是熱模塊更換??梢詾槲募晒V?,在內(nèi)容更改時(shí),可以作廢瀏覽器緩存中上個(gè)版本的包。 原文鏈接:https://survivejs.com/webpack...翻譯計(jì)劃:https://segmentfault.com/a/11... 涉及到的未翻譯單詞 ...
閱讀 891·2023-04-26 01:37
閱讀 3368·2021-09-02 15:40
閱讀 955·2021-09-01 10:29
閱讀 2887·2019-08-29 17:05
閱讀 3418·2019-08-28 18:02
閱讀 1181·2019-08-28 18:00
閱讀 1484·2019-08-26 11:00
閱讀 2603·2019-08-26 10:27