webpack講解

1,什么是webpack

webpack 本質(zhì)上來說,是一個(gè)現(xiàn)代js應(yīng)用的靜態(tài)模塊打包工具

重點(diǎn):模塊,打包

模塊 :項(xiàng)目中會(huì)有很多的模塊化,便于開發(fā)但是webpack就是把項(xiàng)目中所有的不同模塊的js文件,打包成一個(gè)js文件,把所有不同模塊的css文件打包成一個(gè)css文件,同理,圖片一樣,同時(shí)會(huì)幫我們處理模塊間的各種依賴,整合打包
打包 :webpack打包時(shí),會(huì)幫我們處理模塊間的各種依賴,整合打包成一個(gè)或者多個(gè)包,并且進(jìn)行資源處理,比如:壓縮圖片,將scss轉(zhuǎn)為css,將ES6轉(zhuǎn)為ES5語法等操作

image.png

gulp也可以打包(gulp 稱為前端自動(dòng)化任務(wù)管理工具)

使用情況
gulp: 當(dāng)項(xiàng)目工程模塊依賴比較簡(jiǎn)單,甚至沒有用到模塊化概念,只需要進(jìn)行簡(jiǎn)單的合并,壓縮,就使用gulp即可
webpack:項(xiàng)目使用模塊化管理,依賴非常強(qiáng),要使用強(qiáng)大的webpack
區(qū)別
gulp: 更加強(qiáng)調(diào)的是前端流程的自動(dòng)化,模塊化不是它的核心
webpack:更加強(qiáng)調(diào)模塊化開發(fā)管理,而文件壓縮合并,預(yù)處理等功能,是它的附帶功能

附:將src下面的所有js文件轉(zhuǎn)為ES5的語法,最終輸出到dist文件夾中


image.png

2,webpackd的安裝

1,webpack是基于node.js安裝,node.js自帶軟件打包管理工具npm
2,安裝webpack(同時(shí)也要安裝 webpack-cli )

// 全局進(jìn)行安裝  操作指令:
cnpm install webpack webpack-cli -g

// 本地安裝開發(fā)者環(huán)境, 操作指令:
npm install webpack webpack-cli -save-dev

3,webpack的起步

1,安裝了webpack后,我們打包項(xiàng)目命令是:(webpack + 入口文件 + 出口文件 + 開發(fā)環(huán)境)

webpac ./src/index.js -o ./dist/bundle.js  --mode=development //  入口文件 + 出口文件 + 開發(fā)環(huán)境

2,配置文件

webpack
    dist ----打包好的文件放置的位置
    src ---資源文件夾
        index.js ---入口文件
        style.css ---樣式文件
        protype.js ---這里準(zhǔn)備了一個(gè)js文件,給vue原型上加一些函數(shù)
   index.html ---瀏覽器打開展示的首頁
   package.json ---通過npm init 生成的配置文件,npm包管理的文件
   webpack.config.js  --- 專門來配置文件的,webpack一些配置,都是在這個(gè)文件中進(jìn)行配置

3,最后在dist下生成了bundle.js文件,我們把這個(gè)js文件引入index.html文件中即可
4,如果每次使用webpack命令都要寫入口和出口作為參數(shù),就比較麻煩,所以我們要在webpack.config.js配置好出口與入口,這樣我們每次使用webpack指令,就不需要寫出口與入口了,請(qǐng)看下面講解

4,webpack的配置

1,配置

//  絕對(duì)路徑需要引用的包
let path = require('path')
module.exports = {
    mode:"development", // 開發(fā)環(huán)境
    entry:"./src/index.js", // 入口文件
    output:{ // 出口文件
        filename:"bundle.js", // 輸出文件名稱
        path:path.resolve(__dirname,'dist')  // 輸出的絕對(duì)路徑 ——> 這里就要引用 path
    }
}

2,操作:在html文件中引入打包好的js文件,運(yùn)行項(xiàng)目,就可以在瀏覽器中 看到打印出來的東西了
在項(xiàng)目中,我們會(huì)用到 一些樣式的引入,進(jìn)行配置,這樣打包時(shí)候,我們才能把引入的樣式給打包進(jìn)去,但是 webpack 默認(rèn)是不可以打包 css 文件的,這時(shí)就需要 loader 配置

5,webpack中用到的組件 loader 使用

1,因?yàn)檫@里會(huì)用到插件,所以我們要先安裝插件 loader

操作指令:npm install style-loader css-loader --save-dev

2,配置

let path = require('path')
module.exports = {
    mode:"development", // 開發(fā)環(huán)境
    entry:"./src/index.js",  // 入口文件
    output:{ // 出口文件
        filename:"bundle.js", // 輸出文件名稱
        path:path.resolve(__dirname,'dist')  // 輸出的絕對(duì)路徑 ——> 這里就要引用 path
    },
    module:{ // loader 配置
        rules:[ // 對(duì)于某個(gè)格式的文件進(jìn)行轉(zhuǎn)換處理
            {
                test:/\.css$/,
                use:[ // use 數(shù)組中的 loader 的順序,是從下到上,逆序執(zhí)行
                    'style-loader', // 將js的樣式內(nèi)容插入到style標(biāo)簽中
                    'css-loader'  // 將css文件轉(zhuǎn)換為js
                ] 
            }
        ]
    }
}

引入打包好的文件,在控制臺(tái),運(yùn)行起項(xiàng)目,即可
我們每次打包文件都要手動(dòng)引入文件,比較麻煩;所以安裝插件,在打包時(shí),自動(dòng)完成html與js文件之間關(guān)系

6,plugin的使用

由于我們要自動(dòng)完成 html 與 js 文件之間的關(guān)系,所以這里的文件目錄也會(huì)改變

1,配置文件介紹

webpack2
    dist ----打包好的文件放置的位置
    src ---資源文件夾
        index.js ---入口文件
        style.css ---樣式文件
        protype.js ---這里準(zhǔn)備了一個(gè)js文件,給vue原型上加一些函數(shù)
        index.html ---瀏覽器打開展示的首頁
    package.json ---通過npm init 生成的配置文件,npm包管理的文件
    webpack.config.js  --- 專門來配置文件的,webpack一些配置,都是在這個(gè)文件中進(jìn)行配置

2,webpack 打包時(shí)候,我們要安裝 url-loader html-loader,所以我們要安裝此配置

操作指令:npm install url-loader html-loader --save-dev

3,配置

let path = require('path')
// a,安裝 html-webpack-plugin, 打包時(shí)候,我們要安裝此依賴,
// 操作執(zhí)行的命令:npm install html-webpack-plugin --save-dev,安裝時(shí)候,可能會(huì)影響到 loader 的插件,所以操作完后,還要 npm install
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
    mode:"development", // 開發(fā)中環(huán)境
    entry:"./src/index.js",  // 入口文件
    output:{ // 出口文件
        filename:"bundle.js", // 輸出文件名稱
        path:path.resolve(__dirname,'dist')  // 輸出的絕對(duì)路徑 ——> 這里就要引用 path
    },   
    module:{ //loader 配置
        rules:[ // 對(duì)于某個(gè)格式的文件進(jìn)行轉(zhuǎn)換處理
            {
                test:/\.css$/,
                use:[ // use 數(shù)組中的 loader 的順序,是從下到上,逆序執(zhí)行
                    'style-loader', // 將js的樣式內(nèi)容插入到style標(biāo)簽中
                    'css-loader' // 將css文件轉(zhuǎn)換為js
                ] 
            },
            {
                test:/\.(jpg|png|gif)$/,  // 對(duì)匹配的圖片進(jìn)行處理
                loader:'url-loader',
                options:{
                    limit:8*1024, // 如果圖片小于 8kb base64處理,減少請(qǐng)求數(shù)量,會(huì)使的體積更大
                    esModule:false,  // url-loader 的 es6 模塊化解析關(guān)掉
                    name:'[hash:10].[ext]'  // [hash:10] 取圖片hash的前10位   .[ext] 取圖片的擴(kuò)展名
                }
            },
            {
                test:/\.html$/,
                loader:'html-loader'
            }
        ]
    },  
    plugins:[ // 插件配置    注意 這里是 plugins ,不是plugin,很容易出錯(cuò)
        new HtmlWebpackPlugin({
            template:'./src/index.html'  // 告訴打包模板,要打包的html在哪里,這里寫的是 html 文件的位置在哪里
        })
    ]
}

4,當(dāng)項(xiàng)目打包時(shí)用到文件,也要安裝一個(gè)依賴,file-loader,

操作指令:npm install file-loader --save-dev

以上就是我這周學(xué)習(xí)的,使用 webpack 搭的服務(wù)環(huán)境

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • webpack是一個(gè)靜態(tài)模塊打包工具 grunt/gulp的核心是Task我們可以配置一系列的task,并且定義t...
    緋想天長(zhǎng)女閱讀 716評(píng)論 0 0
  • 第 1 章:webpack 簡(jiǎn)介 1.1 webpack 是什么 webpack 是一種前端資源構(gòu)建工具,一個(gè)靜態(tài)...
    阿_軍閱讀 862評(píng)論 0 1
  • webpack 介紹 webpack 是什么 為什么引入新的打包工具 webpack 核心思想 webpack 安...
    yxsGert閱讀 6,670評(píng)論 2 71
  • 一、什么是webpack |--官網(wǎng):https://webpack.js.org/ |--官網(wǎng)截圖: ...
    stillpeng閱讀 354評(píng)論 0 0
  • webpack看這一篇就夠了,webpack4.0配置詳解。 什么是webpack,webpack給我們解決了哪些...
    老王brave閱讀 1,885評(píng)論 0 2

友情鏈接更多精彩內(nèi)容