摘要:在進(jìn)行的學(xué)習(xí)之前,第一步就是要讓大家認(rèn)識(shí)一下中四個(gè)核心的概念。找到這個(gè)起始點(diǎn),再從起始點(diǎn)出發(fā)來看依賴的文件,每個(gè)依賴都將被處理,最后輸出。
概念
自己是一個(gè)一聽到webpack就頭大,看著一堆不知道那是什么玩意的東西總覺得自己做好前端就行了,但是在使用vue-cli的時(shí)候總覺得要改其中的一些東西進(jìn)行項(xiàng)目初始化的時(shí)候能夠更好使用!所以想要根據(jù)官方文檔進(jìn)行一個(gè)webpack的教程,寫這些主要還是為了進(jìn)行一個(gè)系統(tǒng)的學(xué)習(xí),幫助在webpack的道路上迷茫的同學(xué)們。
在進(jìn)行webpack的學(xué)習(xí)之前,第一步就是要讓大家認(rèn)識(shí)一下webpack中四個(gè)核心的概念。
四個(gè)核心概念相信這個(gè)字面意思大家都沒有問題,這個(gè)就是指定webpack的入口文件,指定其從什么地方開始。找到這個(gè)起始點(diǎn),再從起始點(diǎn)出發(fā)來看依賴的文件,每個(gè)依賴都將被處理,最后輸出。
示例:
// webpack.config.js module.exports = { entry: "./src/index.js" }
上述代碼以及入口是簡單的配置,是一個(gè)簡單的單入口,是一種簡寫方式,具體的多入口配置方式如下。
示例:
// webpack.config.js module.exports = { entry: { fistpage: "./src/index.js", nextpage: "./src/next.js", lastpage: "./src/last.js", } }
有入口就肯定有出口,這里自然就是定義文件輸出的位置,以及輸出文件的名字和目錄,和入口一樣,你可以定義一個(gè)output段來配置文件的輸出。
當(dāng)然,輸出的文件入口指定一個(gè)就可以了,區(qū)分的只是文件的名字即可,因此在這里只給大家介紹一種,輸入時(shí)候的名字是什么,則輸出的文件名字就是什么即可,只需要改filename為[name].js。
示例:
// webpack.config.js const path = require("path") module.exports={ entry: "./src/index.js", output: { path: path.resolve(_dirname, "dist"), filename: "first-webpack.js" } };
解釋一下上述代碼,首先我們先倒入一個(gè)nodejs一個(gè)操作文件路徑的核心模塊path,然后使用path進(jìn)行文件路徑操作,將生成的文件存放在dist目錄,生成的文件名字為first-webpack.js。
webpack本身只能夠理解一些js文件,但是loader可以做到讓其去處理一些非js文件,比如我們的css文件,圖片文件,loader可以將這些文件轉(zhuǎn)換成webpack能夠處理的有效模塊,所以因?yàn)樗拇嬖?,你import導(dǎo)入進(jìn)來任何類型模塊。
示例:
// webpack.config.js const path = require("path") module.exports = { entry: "./src/index.js", output: { path: path.resolve(_dirname, "dist"), filename: "first-webpack.js" }, module: { rules: [ {test: /.txt$/, use: "raw-loader"} ] } }
以上,在配置loader的時(shí)候,要新建一個(gè)module的對象,在其對象中來定義rules屬性,里面存在兩個(gè)必要的屬性,test和use,其中
test表示要使用loader進(jìn)行轉(zhuǎn)換的一個(gè)或者一些文件,在這里是指被導(dǎo)入的模塊的后綴名為.txt文件
use則表示對于被導(dǎo)入的此類的文件,我們會(huì)使用raw-loader轉(zhuǎn)換一下,在進(jìn)行打包
注:一定要注意此項(xiàng)配置是在module對象下的rules下進(jìn)行配置
這里再做一個(gè)演示,比如我們平時(shí)在項(xiàng)目中使用css,但是前面也說了在webpack中可能不會(huì)識(shí)別css,因此這里要使用loader加載css文件,但是首先要安裝對應(yīng)的loader進(jìn)行加載css文件,這里使用css-loader,安裝命令
npm install --save-dev css-loader
然后在webpack中要配置,指定css文件使用css-loader加載
module.exports = { rules: [ {test: /.css$/, use: "css-loader"} ] }
還有其它的方式可以使用,作用是相同的,就是使用內(nèi)聯(lián)或者cli
loader是用來轉(zhuǎn)換某些類型的模塊,而插件則用來去執(zhí)行更廣的任務(wù),這個(gè)功能非常強(qiáng)大,可以用來處理各種任務(wù)。當(dāng)然,使用方法也是很簡單,直接將npm安裝的插件通過require引入進(jìn)來即可,然后在配置文件中將其添加進(jìn)plugins數(shù)組中,也可以自定義,當(dāng)然也可以一個(gè)插件使用其不同的功能多次使用,但是相應(yīng)的你要new一個(gè)實(shí)例。
示例:
// webpack.config.js const path = require("path") const webpack = require("webpack") const HtmlWebpackPlugin = require("html-webpack-plugin") module.exports = { entry: "./src/index.js", output: { path: path.resolve(_dirname,"dist"), filename: "first-webpack.js" }, module: { rules: [ {test: /.txt$/, use: "raw-loader"} ] }, plugins: [ new webpack.optimize.UgifyJsPlugin(), new HtmlWebpackPlugin({template: "./src/index.html"}) ] }配置
當(dāng)然,除了上述四個(gè)核心概念,這里還有一個(gè)配置,你可以配置不同的模式來進(jìn)行webpack內(nèi)置優(yōu)化,可以選擇development或者production,配置不同的mode對應(yīng)著不同的文件以及plugins插件進(jìn)行相應(yīng)的模式優(yōu)化。
module.exports = { mode: "development" }模塊
想必大家肯定知道js或者自己熟悉的一些模塊,但是到底什么是webpack模塊相比還是比較陌生,webpack模塊主要的作用就是能夠使用各種方式表達(dá)自己和其他模塊的依賴關(guān)系。
比如:
import語句
require()語句
樣式文件的@import語句
url或者src的一些鏈接
可支持基本上各種模塊,比如我們ts,sass以及l(fā)ess文件等,允許各種技術(shù)使用webpack進(jìn)行,在webpack中對于模塊的路徑有三種形式。
絕對路徑:import "/home/src/file"
相對路徑:import "./file"
模塊路徑:import "module",這個(gè)特別說明一下,這里的模塊將會(huì)在resolve.modules指定目錄進(jìn)行搜索
webpack還有一個(gè)重要的環(huán)節(jié),就是依賴圖,在webpack中,一個(gè)文件依賴另一個(gè)文件,就稱為這兩個(gè)文件有著依賴關(guān)系,所以在用圖像資源的時(shí)候,我們可以為圖像與文件中間建立依賴關(guān)系,這樣在打包文件的時(shí)候,就能夠?qū)D片資源也能夠打包,可以使用import和require將圖片打包進(jìn)來
這些用來我們?nèi)腴Twebpack已經(jīng)足夠了,當(dāng)然webpack不僅僅是這些,還有著很多更高級(jí)的用法,但是這里僅僅是webpack的一個(gè)入門,讓大家能夠知道webpack的一些具體的作用,如果大家還想了解webpack的其他內(nèi)容,可以在下面留言,如果大家需要我會(huì)再出一個(gè)大家需要的教程,謝謝!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/95294.html
摘要:在進(jìn)行的學(xué)習(xí)之前,第一步就是要讓大家認(rèn)識(shí)一下中四個(gè)核心的概念。找到這個(gè)起始點(diǎn),再從起始點(diǎn)出發(fā)來看依賴的文件,每個(gè)依賴都將被處理,最后輸出。 概念 自己是一個(gè)一聽到webpack就頭大,看著一堆不知道那是什么玩意的東西總覺得自己做好前端就行了,但是在使用vue-cli的時(shí)候總覺得要改其中的一些東西進(jìn)行項(xiàng)目初始化的時(shí)候能夠更好使用!所以想要根據(jù)官方文檔進(jìn)行一個(gè)webpack的教程,寫這些主...
摘要:在進(jìn)行的學(xué)習(xí)之前,第一步就是要讓大家認(rèn)識(shí)一下中四個(gè)核心的概念。找到這個(gè)起始點(diǎn),再從起始點(diǎn)出發(fā)來看依賴的文件,每個(gè)依賴都將被處理,最后輸出。 概念 自己是一個(gè)一聽到webpack就頭大,看著一堆不知道那是什么玩意的東西總覺得自己做好前端就行了,但是在使用vue-cli的時(shí)候總覺得要改其中的一些東西進(jìn)行項(xiàng)目初始化的時(shí)候能夠更好使用!所以想要根據(jù)官方文檔進(jìn)行一個(gè)webpack的教程,寫這些主...
摘要:生成文件,是模塊構(gòu)建的終點(diǎn),包括輸出文件與輸出路徑。這里配置了處理各模塊的,包括預(yù)處理,編譯,圖片處理。各插件對象,在的事件流中執(zhí)行對應(yīng)的方法。修改改成引入模塊在目錄下執(zhí)行, webpack原理解讀 本文抄自《深入淺出webpack》,建議想學(xué)習(xí)原理的手打一遍,操作一遍,給別人講一遍,然后就會(huì)了在閱讀前希望您已有webpack相關(guān)的實(shí)踐經(jīng)驗(yàn),不然讀了也讀不懂 本文閱讀需要幾分鐘,理解需...
摘要:騰訊空間超分辨率技術(shù)為用戶節(jié)省流量,處理效果和速度超谷歌技術(shù)在的標(biāo)準(zhǔn)下,處理速度在提升了,處理效果也有明顯提升。此外,也是業(yè)界首次實(shí)現(xiàn)移動(dòng)端使用深度神經(jīng)網(wǎng)絡(luò)進(jìn)行超分辨率,并保證圖片能夠?qū)崟r(shí)進(jìn)行處理。值得一提的是的對應(yīng)指標(biāo)也在名單里。 團(tuán)隊(duì)分享 魔幻語言 JavaScript 系列之 call、bind 以及上下文 從一行代碼來看看 JavaScript 是一門多么魔幻的語言,順便談?wù)?...
閱讀 1491·2019-08-30 15:44
閱讀 1954·2019-08-30 14:07
閱讀 2881·2019-08-30 13:56
閱讀 2350·2019-08-29 17:06
閱讀 1333·2019-08-29 14:13
閱讀 2091·2019-08-29 11:28
閱讀 3238·2019-08-26 13:56
閱讀 1954·2019-08-26 12:11