成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

深入了解模塊打包工具webpack

什么是webpack?本篇文章就來(lái)帶大家認(rèn)識(shí)了解下模塊打包工具webpack,希望對(duì)大家有所幫助!

一、什么是webpack

1、官方解釋

從本質(zhì)上來(lái)講,webpack是一個(gè)現(xiàn)在的javaScript應(yīng)用的靜態(tài)模塊化打包工具。(從兩點(diǎn)概括這句話即模塊打包

深入了解模塊打包工具webpack

下面來(lái)說(shuō)一下模塊打包的概念!

2、前端模塊化

  • 前端模塊化的一些方案:AMD、CMD、CommonJS、ES6(瀏覽器不能識(shí)別它們,但是webpack可以做它們的底層支撐,方可進(jìn)行模塊化開(kāi)發(fā))
  • ES6之前,要想進(jìn)行模塊化開(kāi)發(fā),就必須借助于其他的工具,讓我們可以進(jìn)行模塊化開(kāi)發(fā)
  • 并且在通過(guò)模塊化開(kāi)發(fā)完成了項(xiàng)目后,還需要處理模塊化間的各種依賴,并且將其進(jìn)行整合打包
  • 此時(shí)出現(xiàn)webpack,其中一個(gè)核心就是讓我們可能進(jìn)行模塊化開(kāi)發(fā),并且會(huì)幫助我們處理模塊間的依賴關(guān)系
  • 而不僅僅是JavaScript文件,我們的CSS圖片json文件等等在webpack中都可以被當(dāng)做模塊來(lái)使用。

3、打包如何理解?

  • webpack可以幫助我們進(jìn)行模塊化,并且處理模塊間的各種復(fù)雜關(guān)系后,打包的概念就很好理解了。
  • 就是將webpack中的各種資源模塊進(jìn)行打包合并成一個(gè)多個(gè)包(Bundle)
  • 并且在打包的過(guò)程中,還可對(duì)資源進(jìn)行處理,比如壓縮圖片,將scss轉(zhuǎn)成css,將ES6語(yǔ)法轉(zhuǎn)成ES5語(yǔ)法,將TypeScript轉(zhuǎn)成JavaScript等等操作。
  • 打包工具還有grunt/gulp

webpack和grunt/gulp的對(duì)比

  • grunt/gulp的核心是Task
    1.可以配置一系列的task,并且定義task要處理的事務(wù)(例如ES6、ts轉(zhuǎn)化、圖片壓縮、scss轉(zhuǎn)成css)
    2.之后讓grunt/gulp來(lái)依次執(zhí)行這些task,而且讓整個(gè)流程自動(dòng)化

  • 來(lái)看一個(gè)gulp的task
    1.下面的task就是將src下面的所有js文件轉(zhuǎn)成ES5的語(yǔ)法。
    2.并且最終輸出到dist文件夾中。
    深入了解模塊打包工具webpack

  • 什么時(shí)候用grunt/gulp?
    1.工程模塊依賴非常簡(jiǎn)單,甚至沒(méi)有用到模塊化的概念
    2.只需要進(jìn)行簡(jiǎn)單的合并、壓縮,就使用grunt/gulp即可
    3.如果整個(gè)項(xiàng)目使用了模塊化管理,而且相互依賴非常強(qiáng),我們就可以使用webpack。

  • grunt/gulp和webpack有什么不同?
    1.grunt/gulp更加強(qiáng)調(diào)的事前端流程的自動(dòng)化,模塊化不是它的核心
    2.webpack更加強(qiáng)調(diào)模塊化開(kāi)發(fā)管理,而文件壓縮合并、預(yù)處理等功能,是他附帶的功能

二、webpack的安裝

wepack為了正常運(yùn)行必須依賴node環(huán)境,而node環(huán)境為了可以正常的執(zhí)行,必須使用npm工具管理node中各種依賴的包)

  • 因此安裝webpack首先要安裝Node.js,Node.js自帶了軟件包管理工具npm
  • 全局安裝webpack(npm install webpack@3.6.0 -g)
  • 局部安裝webpck(npm install webpack@3.6.0 –save-dev)–save-dev是開(kāi)發(fā)時(shí)依賴,項(xiàng)目打包后不需要繼續(xù)使用。

三、webpack的配置

1、文件和文件夾解析

  • dist文件夾:用于存放之后打包的文件
  • src文件夾:用于存放我們寫的源文件
    main.js:項(xiàng)目的入口文件。
    mathUtils.js:定義了一些數(shù)學(xué)工具函數(shù),可以在其他地方引用,并且使用。
    index.html: 瀏覽器打開(kāi)展示的首頁(yè)html(在這里引用的是src內(nèi)最終打包的文件即dist文件夾的內(nèi)容)。
    package.json:通過(guò)npm init生成的,npm包管理的文件。

以下為mathUtils.js文件和main.js文件中的代碼:(CommonJS模塊化規(guī)范,CommonJS是模塊化的標(biāo)準(zhǔn),nodejs就是CommodJS(模塊化)的實(shí)現(xiàn))

深入了解模塊打包工具webpack

2、命令

webpack ./src/main.js ./dist/bundle.js(將main.js文件打包成bundle.js文件)

說(shuō)明:同理,也可以使用ES6的模塊化規(guī)范

深入了解模塊打包工具webpack

3、創(chuàng)建webpack.config.js文件簡(jiǎn)化打包命令

(將打包命令映射為打包入口和出口

該文件中的代碼:

深入了解模塊打包工具webpack

entry: 為打包的入口

output: 為打包的出口

  • output中的path我們需要?jiǎng)討B(tài)獲取,
  • 因此我們可以使用Node.js語(yǔ)法導(dǎo)入一個(gè)模塊這個(gè)模塊為path(const path = require(‘path’)引號(hào)內(nèi)的文件是需要在node包里面找到)
  • 通過(guò)npm init命令 (初始化)使用node.js
  • 之后生成package.json文件(該文件描述當(dāng)前項(xiàng)目的信息)license:“ISC”(為項(xiàng)目開(kāi)源),以下為package.json的代碼

說(shuō)明:如果想使用node,必須依賴于package.json文件

深入了解模塊打包工具webpack

運(yùn)行npm install webpack@3.6.0 –save-dev之后,增加了依賴如下

深入了解模塊打包工具webpack

4、將webpack命令映射npm run

除了將webpack映射入口出口之外,還可以將webpack命令映射為npm run 一些操作(需要在package.json內(nèi)**“script”** 腳本標(biāo)簽中修改)。。

四、loader的使用

1、什么是loader

  • loader是webpack中一個(gè)非常核心的概念

現(xiàn)在我們來(lái)思考一下webpack用來(lái)做什么?

  • 我們主要使用webpack來(lái)處理js代碼,并且webpack會(huì)自動(dòng)處理js之前相關(guān)的依賴
  • 但,在開(kāi)發(fā)中不僅由基本的js代碼處理,也需要加載css、圖片、也包括一些高級(jí)的將ES6轉(zhuǎn)成ES5代碼,將TypeScript轉(zhuǎn)成ES5代碼,將scss、less轉(zhuǎn)成css,將.jsx、.vue文件轉(zhuǎn)成js文件等。
  • 對(duì)于webpack本身的能力來(lái)說(shuō),對(duì)于這些轉(zhuǎn)化是不支持的
  • 此時(shí)給webpack擴(kuò)展對(duì)應(yīng)的loader就可以了

2、loader使用過(guò)程

1)、css文件處理

準(zhǔn)備工作:

1、在src目錄中,創(chuàng)建一個(gè)css文件,其中創(chuàng)建一個(gè)normal.css文件

2、重新組織文件的目錄結(jié)構(gòu),將零散的js文件放在一個(gè)js文件夾中

3、normal.css中的代碼非常簡(jiǎn)單,就是將body設(shè)置為red
深入了解模塊打包工具webpack

4、但是此時(shí)normal.css中的樣式還不會(huì)生效,因?yàn)闆](méi)有引用它,webpack也找不到它,因?yàn)槲覀冎挥幸粋€(gè)入口,webpack會(huì)從入口開(kāi)始查找其他依賴的文件。

5、此時(shí)我們必須在main.js入口文件引用

深入了解模塊打包工具webpack
之后我們需要導(dǎo)入對(duì)應(yīng)的loader進(jìn)行使用!

  • 步驟一通過(guò)npm安裝需要使用的loader
    (npm install –save-dev css-loader )(npm install –save-dev style-loader)
    在webpack的官方中,找到如下關(guān)于樣式的loader使用方法:
    深入了解模塊打包工具webpack
    深入了解模塊打包工具webpack

  • 步驟二:在webpack.config.js中的modules關(guān)鍵字下進(jìn)行配置

說(shuō)明: 其中css-loader只負(fù)責(zé)加載css文件,并不負(fù)責(zé)將css具體樣式嵌入到文檔中

此時(shí),我們還需要一個(gè)style-loader幫助我們處理

深入了解模塊打包工具webpack

注意:style-loader需要放在css-loader的前面。

2)、less文件處理

  • 步驟1:安裝對(duì)應(yīng)的loader(注意:這里還安裝了less,因?yàn)閣ebpack會(huì)使用less對(duì)less文件進(jìn)行編譯)。命令:npm install –save-dev less-loader less

  • 步驟2:修改對(duì)應(yīng)的配置文件(在webpack.config.js)中添加一個(gè)rules選項(xiàng),用于處理.less文件。如下:

深入了解模塊打包工具webpack

3)、圖片文件處理

  • 步驟1:在項(xiàng)目中加入兩張圖片(一張小于8kb,另一張大于8kb)

  • 步驟2:先考慮在css樣式中引用圖片,如下

    深入了解模塊打包工具webpack

  • 步驟3:修改對(duì)應(yīng)的配置文件(在webpack.config.js)中添加一個(gè)rules選項(xiàng),用于處理圖片文件。如下:

    深入了解模塊打包工具webpack

  • 步驟4:打包之后發(fā)現(xiàn)出錯(cuò),因?yàn)榇笥?kb的圖片會(huì)通過(guò)file-loader進(jìn)行處理,但是我們的項(xiàng)目中并沒(méi)有file-loader。(需要安裝file-loader,命令npm install –save-dev file-loader),安裝之后在打包,就會(huì)發(fā)現(xiàn)dist文件夾下多了一個(gè)圖片文件。

    深入了解模塊打包工具webpack

說(shuō)明:

  • 發(fā)現(xiàn)webpack自動(dòng)幫我們生成了一個(gè)非常長(zhǎng)的名字

    1、這是一個(gè)32位hash值,目的是防止名字重復(fù)
    2、但是,實(shí)際開(kāi)發(fā)中,可能對(duì)打包的圖片名字有一定的要求

  • 所以,我們可以在options中添加如下選項(xiàng):

    1、img:文件要打包到的文件夾
    2、name:獲取圖片原來(lái)的名字,放在該位置
    3、hash8:為了防止圖片名稱沖突,依然使用hash,但只保留8位
    4、ext:使用圖片原來(lái)的擴(kuò)展名
    如下:
    深入了解模塊打包工具webpack

  • 之后還需要配置修改圖片使用的路徑

    1、默認(rèn)情況下,webpack會(huì)將生成的路徑之際返回給使用者
    2、但是,整個(gè)程序是打包在dist文件夾下的,所以這里需要在路徑下再添加一個(gè)dist/
    如下:
    深入了解模塊打包工具webpack

綜上,打包之后,圖片文件為這樣
深入了解模塊打包工具webpack

4)、ES6轉(zhuǎn)ES5的babel

深入了解模塊打包工具webpack

五、webpack中配置Vue

  • 步驟1:終端執(zhí)行命令(npm install –save vue)
  • 步驟2:在main.js中導(dǎo)入vue(import Vue from ‘vue’ )如下

深入了解模塊打包工具webpack

  • 步驟3:在index.html內(nèi)將p掛在到vue實(shí)例上,如下

深入了解模塊打包工具webpack

  • 步驟4:打包后發(fā)現(xiàn)錯(cuò)誤,我們需要指定我們使用的vue是runtime-compiler版本的。

深入了解模塊打包工具webpack
具體操作:需要在webpack添加resolve,取一個(gè)別名(alias),如下:

深入了解模塊打包工具webpack

六、Vue在webpack的使用方案

步驟1:在index.html將p掛在到vue實(shí)例上

深入了解模塊打包工具webpack

步驟2:將APP組件導(dǎo)入在main.js文件中,并在Vue實(shí)例里面注冊(cè)APP在Vue模板中使用該組件APP組件化

深入了解模塊打包工具webpack

步驟3:創(chuàng)建APP.vue文件,將vue頁(yè)面的模板js代碼css代碼分離,如下

深入了解模塊打包工具webpack

步驟4:配置vue相應(yīng)的loader,

深入了解模塊打包工具webpack

修改webpack.config.js的配置文件:

深入了解模塊打包工具webpack

七、plugin的使用

1、認(rèn)識(shí)plugin

  • plugin是什么?
    1、plugin是插件的意思,通常是用于對(duì)某個(gè)現(xiàn)有的架構(gòu)進(jìn)行擴(kuò)展
    2、webpack中的插件,就是對(duì)webpack現(xiàn)有功能的各種擴(kuò)展,比如打包優(yōu)化,文件壓縮等
  • loader和plugin區(qū)別
    1、loader主要用于轉(zhuǎn)化某些類型的模塊,它是一個(gè)轉(zhuǎn)化器
    2、plugin是插件,它是對(duì)webpack本身的擴(kuò)展,是一個(gè)擴(kuò)展器
  • plugin的使用過(guò)程
    1、步驟一:通過(guò)npm安裝需要使用plugins(某些webpack已經(jīng)內(nèi)置的插件不需要安裝)
    2、步驟二:在webpack.config.js中的plugins中配置插件

2、webpack-添加版權(quán)信息Plugin的使用

深入了解模塊打包工具webpack

3、打包html的plugin

深入了解模塊打包工具webpack

4、js壓縮的Plugin

深入了解模塊打包工具webpack

八、搭建本地服務(wù)器

  • webpack提供了一個(gè)可選的本地開(kāi)發(fā)服務(wù)器,這個(gè)本地服務(wù)器基于node.js搭建,內(nèi)部使用express框架,可以實(shí)現(xiàn)我們想要的讓瀏覽器自動(dòng)刷新顯示修改后的結(jié)果

  • 不過(guò)它是一個(gè)單獨(dú)的模塊,在webpck中使用之前需要安裝它
    命令:(npm install –save-dev webpack-dev-server@2.9.1)

  • devserver也是作為webpack中的一個(gè)選項(xiàng),選項(xiàng)本身可以設(shè)置如下屬性
    1、contentBase:為哪一個(gè)文件夾提供本地服務(wù),默認(rèn)是根文件夾,我們這里要填寫./dist
    2、port:端口號(hào)
    3、inline:頁(yè)面實(shí)時(shí)刷新
    4、historyApiFallback:在SPA頁(yè)面中,依賴HTML5的history模式

  • webpack.config.js文件配置修改如下:
    深入了解模塊打包工具webpack

  • –open參數(shù)表示直接打開(kāi)瀏覽器

深入了解模塊打包工具webpack
除此之外,

下面我們想webpack配置文件進(jìn)行分離:即把開(kāi)發(fā)時(shí)需要用的東西和發(fā)布編譯)用到的東西分離開(kāi)。如下:

深入了解模塊打包工具webpack

九、Vue CLI

1、CLI是什么意思?

  • 是Command-Line Interface,翻譯為命令行界面,但是俗稱腳手架
  • Vue CLI是一個(gè)官方發(fā)布vue.js項(xiàng)目腳手架
  • 使用vue-cli可以快速搭建Vue開(kāi)發(fā)環(huán)境以及對(duì)應(yīng)的webpack配置

2、Vue CLI使用前提 –Node(需要安裝node)

然而使用Node,必須涉及到npm

什么是NPM?

  • NPM的全稱是Node Package Manager
  • 是一個(gè)NodeJS包管理和分發(fā)工具,已經(jīng)成為了非官方的發(fā)布Node模塊(包)的標(biāo)準(zhǔn)
  • 經(jīng)常使用NPM來(lái)安裝一些開(kāi)發(fā)過(guò)程中依賴包。

3、Vue CLI的使用

  • 安裝Vue腳手架

npm install -g @vue/cli

注意:上面安裝的是Vue CLI3的版本,如果需要想按照Vue CLI2的方式初始化項(xiàng)目時(shí)不可以的

  • Vue CLI2初始化項(xiàng)目

vue init webpack my-project

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久国产一区二区三区| 麻豆国产果冻自制传媒| 精品人妻中文无码AV在线| 饥渴人妻被快递员玩弄的视频 | 精品国产乱码久久久久久人妻| 久久国产精品二国产精品| 免费人成网WW555KKK在线| 人人妻人人做人人爽| 天天摸天天添天天爱| 亚洲VA久久久噜噜噜熟女8| 伊人久久大香线焦AV色| WWW亚洲精品自慰一区二区三| 东北大坑续集1至60| 国产午夜鲁丝片AV无码免费| 久久精品伊人一区二区三区| 欧美性大战XXXXX| 天天摸天天做天天爽天天弄| 亚洲精品TY久久久久久久久久| 中文字幕亚洲综合小综合在线| 超碰人人透人人爽人人看| 国产女人喷潮视频免费| 久久亚洲AV成人无码精品| 人人妻人人妻人人片色AV| 无罩大乳的熟妇正在播放| 夜里18款禁用B站大全| WWW射我里面在线观看| 国产乱子经典视频在线观看| 久久夜色精品国产网站| 日韩人妻无码精品—专区| 亚洲AV无码乱码一级毛片孕妇| 中国XMXM18小孩的推荐机制| 敌伦交换第21部分正文内容| 精品高潮呻吟99AV无码| 欧美极品少妇XXXX亚洲精品| 无码国产乱人伦偷精品视频| 一本之道AV不卡精品| 敌伦交换第十一部分| 久久99精品久久久久久动态图| 青草青草视频2免费观看| 亚洲Aⅴ无码专区在线观看q| 2023年新番肉食系| 国产精品久久久久精品A级| 久久人人97超碰CAOPORE| 日日摸夜夜添狠狠添欧美| 亚洲毛片无码专区亚洲乱| 扒开双腿疯狂进出爽爽爽动态图| 国产在线不卡人成视频| 欧美日韩精品SUV| 亚洲AV综合色区无码一二三区| 99精品国产在热久久无毒不卡 | 暴躁老阿姨CSGO| 精品福利一区二区三区免费视频| 人妻丰满熟妇AV无码区| 亚洲精品AⅤ无码精品丝袜足| 办公室强肝的播出时间| 精品无码一区二区三区电影| 日韩欧美成人免费观看| 一边喘气一边叫疼的视频| 国产激情大臿免费视频| 蜜桃AV一区二区| 亚洲 精品 综合 精品 自拍| XXXX性BBBB欧美| 久久国产AVJUST麻豆| 熟女内射婷婷直播| 18禁黄网站禁片免费观看女女| 国产在线精品无码AV不卡顿 | 波多野结衣AV在线无码中文观看| 精品人妻A∨一区二区夫上司犯| 色老99久久九九爱精品| 中文字幕一区二区人妻| 国产无遮挡又黄又爽不要VIP软| 欧美性插B在线视频网站| 亚洲色大成网站WWW久久九九| 公天天吃我奶躁我的比视频| 男按摩师舌头伸进去了| 亚洲高清成人AV电影网站| 夫妇联欢会回不去的夜晚樱花| 免费看成人A级毛片| 亚洲国产成人久久综合人| 灌溉系统NPC游戏双男主| 欧美VPSWINDOWS另类| 亚洲人妻在线视频| 国产色诱视频在线观看| 日韩一区国产二区欧美三区| 中文字字幕在线乱码| 精品人妻码一区二区三区| 无码内射中文字幕岛国片| 爸爸入狱以后妈妈双人桥小权| 久久中文字幕人妻熟AV女| 亚洲AV无码熟妇在线观看| 国产成A人亚洲精V品无码| 强制高潮18XXXXHD日韩| 中文字幕人妻不在线无码视频 | 18禁无遮挡无码国产免费网站| 极品YIN荡人妻合集H| 无码无套少妇毛少18PXX| 从你的全世界路过| 朋友的人妻的滋味BD高清中文| 在线天天看片视频免费观看| 精品无码成人片一区二区| 亚洲AV丰满熟妇一区| 国产精品久久久爽爽爽麻豆色哟哟 | 伊人精品成人久久综合| 加勒比一本HEYZO高清视频 | 色婷婷粉嫩AV精品综合在线| ZLJZLJZLJ中国人水多多| 男人一生最吉利的网名| 一本一道波多野结衣AV中文| 精品熟女少妇AV免费观看| 亚洲VA无码VA在线VA天堂| 国产女人喷潮视频免费| 无码一区二区三区不卡AV| 国产成人精品免费视频网页大全| 日韩一区二区三区精品| 波多野结AV衣东京热无码专区| 欧美性大战XXXXX| AV无码精品久久久久精品免费| 免费夜色污私人影院在线观看| 中国极品少妇XXXXX1314| 老头握住校花的双乳| 影音先锋每日AV色资源站| 久久久久久精品免费免费WEI| 亚洲视频在线观看| 久久久精品中文字幕麻豆发布| 亚洲色国产欧美日韩| 久久久久亚州AⅤ无码专区首| 亚洲中文字幕无码一区二区三区| 久久精品国产亚洲A∨麻豆| 亚洲一区二区三区乱码AⅤ| 久久精品人妻系列无码专区| 亚洲中文字幕AV无码专区| 久久天天躁狠狠躁夜夜AVAPP| 泳池里强摁做开腿呻吟漫画视频| 久久亚洲精品成人AV无码涩涩屋| 一本色道久久88亚洲精品综合| 巨爆乳寡妇中文在线观看| 主人调教下贱的烂货| 欧美日本精品一区二区三区| 办公室娇喘的短裙老师 | 欧美成人性生免费看的| WC女厕撒尿七Ⅴ偷拍| 日韩欧美亚洲每日更新在线| 丰满熟妇乱又伦精品| 无码精品人妻一区二区三区漫画| 国产欧美另类久久久精品图片| 亚洲AV成人一区二区三区在线播| 激情久久AV一区AV二区AV三| 亚洲婷婷五月激情综合APP | 久久精品国产99久久香蕉| 一区二区操逼视频| 欧产日产国色天香区别9视频| AV香港经典A毛片免费观看| 日本适合十八岁以上人群的护肤品 | 80S国产成年女人毛片| 人妻无码一区二区三区精品视频| 成人免费视频一区二区三区| 我被八个男人玩到早上| 护士猛少妇色XXⅩXXX猛叫| 又粗又黄又猛又爽大片APP | 久久久久九九精品影院| 97精品国产97久久久久久免费| 日本护士HD人XXXX| 国产精品特级毛片一区二区三区 | 国产AV高清无亚洲| 亚洲成aV人无码| 免费无码鲁丝片一区二区| 成人免费无码不卡毛片| 午夜亚洲国产理论片中文飘花 | 少妇人妻大乳在线视频不卡| 国内精品国产成人国产三级| 曰韩无码AV一区二区免费| 人性禁岛1破禁果| 国产一区二区H无遮挡| 真实国产乱人伦在线视频播放| 日本少妇人妻XXXXX18| 国产日产欧产精品精品| 英语老师乖乖挽起裙子的意思| 人人爽人人模人人人爽人人爱| 国产乱人伦偷精品视频| 又大又硬又粗再深一点| 日韩精品一区二区三区色欲AV| 国产一区二三区好的精华液| 中国成熟IPHONE| 试看AAAA啪啪片120秒| 久久不见久久见中文字幕免费| cnⅰnese老女人老熟妇H①| 无码一区二区三区在线观看| 旧里番肉欲に堕ちた牝たち| 东北老熟女对白XXXⅩHD| 亚洲欧洲日韩综合色天使| 欧美成A高清在线观看| 国产精品一区二区久久乐下载 | 免费无码观看的AV在线播放| 国产超碰人人模人人爽人人喊| 一本一道精品欧美中文字幕| 日韩精品无码人成视频手机| 精产国品一二三产品区别大吗| ZOOM与人性ZOOM我放弃播放器| 亚洲А∨天堂久久精品9966| 欧洲无线一线二线三W955|