日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

webpack从入门到精通(二)开发环境的基本配置

發布時間:2025/3/20 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 webpack从入门到精通(二)开发环境的基本配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 打包樣式資源

1)創建文件

文件代碼如下:

index.less

#title {color: #fff; }

index.css

html, body{margin: 0;padding: 0;height: 100%;background-color: pink; } ?

index.js

// 引入樣式資源 import './index.css'; import './index.less';

2)下載安裝loader包

npm i css-loader style-loader less-loader less -D

3)修改配置文件

/*webpack.config.js webpack的配置文件作用: 指示 webpack 干哪些活(當你運行 webpack 指令時,會加載里面的配置) ?所有構建工具都是基于nodejs平臺運行的~模塊化默認采用commonjs。 */ ? // resolve用來拼接絕對路徑的方法 const { resolve } = require('path'); ? module.exports = {// webpack配置// 入口起點entry: './src/index.js',// 輸出output: {// 輸出文件名filename: 'built.js',// 輸出路徑// __dirname:nodejs的變量,代表當前文件的目錄絕對路徑path: resolve(__dirname, 'build')},// loader的配置module: {rules: [// 詳細loader配置// 不同文件必須配置不同loader處理{// 匹配哪些文件test: /\.css$/,// 使用哪些loader進行處理use: [// use數組中loader執行順序:從右到左,從下到上 依次執行// 創建style標簽,將js中的樣式資源插入進行,添加到head中生效'style-loader',// 將css文件變成commonjs模塊加載到js中,里面內容是樣式字符串'css-loader']},{test: /\.less$/,use: ['style-loader','css-loader',// 將less文件編譯成css文件// 需要下載 less-loader和less'less-loader']}]},// plugins的配置plugins: [// 詳細plugins的配置],// 模式mode: 'development', // 開發模式// mode: 'production' // 生產模式 } ?

4)運行指令:webpack

2. 打包HTML資源

1)創建文件

2)下載plugin包

npm install --save-dev html-webpack-plugin

3)修改配置文件

/*loader: 1. 下載 ? 2. 使用(配置loader)plugins: 1. 下載 2. 引入 3. 使用 */ const { resolve } = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); ? module.exports = {entry: './src/index.js',output: {filename: 'built.js',path: resolve(__dirname, 'build')},module: {rules: [// loader的配置]},plugins: [// plugins的配置// html-webpack-plugin// 功能:默認會創建一個空的HTML,自動引入打包輸出的所有資源(JS/CSS)// new HtmlWebpackPlugin()// 需求:需要有結構的HTML文件new HtmlWebpackPlugin({// 復制 './src/index.html' 文件,并自動引入打包輸出的所有資源(JS/CSS)template: './src/index.html'})],mode: 'development' };

4)運行指令:webpack

可以發現生成的index.html保留了我們的src下的模板,并引入了生成的js文件。

3. 打包圖片資源

1)創建文件

文件具體代碼如下:

index.html

?<div id="box1"></div><div id="box2"></div><div id="box3"></div><img src="./angular.jpg" alt="angular">

index.js

import './index.less';

index.less

#box1{width: 100px;height: 100px;background-image: url('./vue.jpg');background-repeat: no-repeat;background-size: 100% 100%; } ? #box2{width: 200px;height: 200px;background-image: url('./react.png');background-repeat: no-repeat;background-size: 100% 100%; } ? #box3{width: 300px;height: 300px;background-image: url('./angular.jpg');background-repeat: no-repeat;background-size: 100% 100%; }

2)修改配置文件

const { resolve } = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); ? module.exports = {entry: './src/index.js',output: {filename: 'built.js',path: resolve(__dirname, 'build')},module: {rules: [{test: /\.less$/,// 要使用多個loader處理用useuse: ['style-loader', 'css-loader', 'less-loader']},{// 問題:默認處理不了html中img圖片// 處理圖片資源test: /\.(jpg|png|gif)$/,// 使用一個loader// 下載 url-loader file-loaderloader: 'url-loader',options: {// 圖片大小小于8kb,就會被base64處理// 優點: 減少請求數量(減輕服務器壓力)// 缺點:圖片體積會更大(文件請求速度更慢)limit: 8 * 1024,// 問題:因為url-loader默認使用es6模塊化解析,而html-loader引入圖片是commonjs// 解析時會出問題:[object Module]// 解決:關閉url-loader的es6模塊化,使用commonjs解析esModule: false,// 給圖片進行重命名// [hash:10]取圖片的hash的前10位// [ext]取文件原來擴展名name: '[hash:10].[ext]'}},{test: /\.html$/,// 處理html文件的img圖片(負責引入img,從而能被url-loader進行處理)loader: 'html-loader'}]},plugins: [new HtmlWebpackPlugin({template: './src/index.html'})],mode: 'development' };

3)安裝loader包

npm install --save-dev html-loader url-loader file-loader

4)運行指令:webpack

生成的結構如下:

由于我們的vue.jpg的文件大小小于我們配置文件中定義的8kb,所以該圖片被直接轉為了base64格式的圖片,放到了js文件中了。

4. 打包其它資源

我們開發中,可能會選擇一些字體、圖標,對于這些資源我們不需要做任何處理,只需要原樣輸出。

我們下載一些圖標文件,然后引入。

阿里巴巴矢量庫:https://www.iconfont.cn/

1)創建文件

在index.js中引入樣式文件

// 引入 iconfont 樣式文件 import './iconfont.css';

2)修改配置文件

const { resolve } = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); ? module.exports = {entry: './src/index.js',output: {filename: 'built.js',path: resolve(__dirname, 'build')},module: {rules: [{test: /\.css$/,use: ['style-loader', 'css-loader']},// 打包其他資源(除了html/js/css資源以外的資源){// 排除css/js/html資源exclude: /\.(css|js|html|less)$/,loader: 'file-loader',options: {name: '[hash:10].[ext]'}}]},plugins: [new HtmlWebpackPlugin({template: './src/index.html'})],mode: 'development' };

3)運行指令:webpack

5. devServer

我們每次更改了我們的源代碼,想要看到效果后,我們必須重新打包,這樣非常的浪費時間。

webpack為我們提供了一個devServer,可以用來幫我們自動化(自動編譯,自動刷新,便于開發)。

1)我們在3.4代碼的基礎上修改配置文件

?// 開發服務器 devServer:用來自動化(自動編譯,自動打開瀏覽器,自動刷新瀏覽器~~)// 特點:只會在內存中編譯打包,不會有任何輸出// 啟動devServer指令為:npx webpack-dev-serverdevServer: {// 項目構建后路徑contentBase: resolve(__dirname, 'build'),// 啟動gzip壓縮compress: true,// 端口號port: 3000,// 自動打開瀏覽器open: true}

2)安裝webpack-dev-server

npm i webpack-dev-server -D

3)運行指令:npx webpack-dev-server

瀏覽器會自動彈出我們的html頁面。我們修改我們的前端文件代碼,可以發現瀏覽器頁面也會實時變動。

6. 開發環境案例完整演示

我們的目錄結構如下:

配置文件代碼為:

/*開發環境配置:能讓代碼運行運行項目指令:webpack 會將打包結果輸出出去npx webpack-dev-server 只會在內存中編譯打包,沒有輸出 */ ? const { resolve } = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); ? module.exports = {entry: './src/js/index.js',output: {filename: 'js/built.js',path: resolve(__dirname, 'build')},module: {rules: [// loader的配置{// 處理less資源test: /\.less$/,use: ['style-loader', 'css-loader', 'less-loader']},{// 處理css資源test: /\.css$/,use: ['style-loader', 'css-loader']},{// 處理圖片資源test: /\.(jpg|png|gif)$/,loader: 'url-loader',options: {limit: 8 * 1024,name: '[hash:10].[ext]',// 關閉es6模塊化esModule: false,outputPath: 'imgs'}},{// 處理html中img資源test: /\.html$/,loader: 'html-loader'},{// 處理其他資源exclude: /\.(html|js|css|less|jpg|png|gif)/,loader: 'file-loader',options: {name: '[hash:10].[ext]',outputPath: 'media'}}]},plugins: [// plugins的配置new HtmlWebpackPlugin({template: './src/index.html'})],mode: 'development',devServer: {contentBase: resolve(__dirname, 'build'),compress: true,port: 3000,open: true} };

打包出的文件目錄結構如下:

?

總結

以上是生活随笔為你收集整理的webpack从入门到精通(二)开发环境的基本配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久四色 | 成人无码久久久久毛片 | 人妻熟人中文字幕一区二区 | 天天操狠狠操 | 国产一毛片| 少妇精品高潮欲妇又嫩中文字幕 | 少妇高潮一区二区三区 | 俺来也av| 久久久www成人免费精品 | 2021国产在线视频 | 一本色道久久综合亚洲精品小说 | 一级黄色大片在线观看 | 超碰中文字幕在线 | 日韩极品一区 | 午夜九九| 字幕网在线 | 国产18页| 国产欧美日韩精品区一区二污污污 | 2020国产精品| 亚洲手机在线 | 五十路中出 | 岛国av一区二区 | 日韩欧美在线不卡 | 天堂在线网| 亚洲av无码一区二区三区dv | 亚洲精品乱码久久久久久自慰 | 91情侣视频 | 日韩性xxx| 国产精品色在线 | 欧美系列在线观看 | 91国内| 亚洲蜜臀av乱码久久精品蜜桃 | 成人区人妻精品一区二区不卡视频 | 国产97色在线 | 成人午夜影院在线观看 | 欧美日韩五月天 | 靠逼在线观看 | 就去色av | 人人插插 | 人超碰| 美女av一区二区 | 在线国产91 | 在线观看日韩av电影 | 免费美女av | 日本福利片在线观看 | 欧美 日韩 国产精品 | 男人添女人荫蒂国产 | 日韩在线精品视频一区二区涩爱 | 久久精品无码毛片 | 黄色特级网站 | 久久久久99精品成人片试看 | 都市激情麻豆 | 在线免费观看视频网站 | 日穴| 第一区免费在线观看 | 国产美女特级嫩嫩嫩bbb | 日韩免费精品 | 成人免费毛片网站 | 午夜av毛片 | 国产swag在线观看 | 成人xx视频 | 青草精品| 亚洲老女人视频 | 日韩精品人妻无码一本 | 欧美精品a区 | 欧美精品成人久久 | av免费高清| 亚洲午夜精品在线 | 黑人导航 | 日韩精品一区二区三 | 男女激情免费网站 | 香蕉福利 | 精品国产一区二区三区在线观看 | 人妻体体内射精一区二区 | 国产网站一区 | 性福利视频 | 最新成人| 欧美成人精品欧美一级私黄 | 亚洲av成人精品一区二区三区在线播放 | 性生活视频网站 | 久久九九热 | 色噜噜在线观看 | 爱情岛av | 性色AV无码久久一区二区三 | 91一区二区三区四区 | 久久精品欧美一区二区三区不卡 | 四虎黄色网 | 久久免费手机视频 | 日韩经典三级 | 青青草原在线免费观看视频 | 99久久婷婷国产综合精品青牛牛 | 成人免费看片载 | 岳乳丰满一区二区三区 | 东京热一区二区三区四区 | 神马老子午夜 | 亚洲精品理论片 | 久久久久无码国产精品一区李宗瑞 | 无套白嫩进入乌克兰美女 | 老司机一区二区三区 |