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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

什么是webpack?

發布時間:2024/4/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是webpack? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、面向過程的前端開發

二、面向對象的前端開發(代碼模塊化)

三、使用webpack打包器

四、webpack究竟是什么呢?


一、面向過程的前端開發

首先,讓我們來看一段面向過程的前端開發的代碼:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head> <body><div id="webContent"></div><script>var webContent = document.getElementById('webContent');var header = document.createElement('div');header.innerText = '網頁標題';webContent.appendChild(header);var content = document.createElement('div');content.innerText = '網頁主體';webContent.appendChild(content);var footer = document.createElement('div');footer.innerText = '網頁頁腳';webContent.appendChild(footer);</script> </body> </html>

網頁結果:

這種面向過程的代碼整合方式,使得所有JS代碼都"擠"在一個地方,代碼混亂,不具備代碼層次化,難于調試。

二、面向對象的前端開發(代碼模塊化)

所謂面向對象的前端開發,就是將整塊混合的代碼分割成一塊一塊,使得代碼模塊化,從而一個代碼模塊負責一部分的頁面邏輯。

讓我們來看將上面的示例模塊化后的代碼:

header.js:

function Header(){var header = document.createElement('div');header.innerText = '網頁標題';webContent.appendChild(header); }

content.js:

function Content(){var content = document.createElement('div');content.innerText = '網頁主體';webContent.appendChild(content); }

footer.js:

function Footer(){var footer = document.createElement('div');footer.innerText = '網頁頁腳';webContent.appendChild(footer); }

index.js:

var webContent = document.getElementById('webContent');new Header(); new Content(); new Footer();

dist.html:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head> <body><div id="webContent"></div><script src="./header.js"></script><script src="./content.js"></script><script src="./footer.js"></script><script src="./index.js"></script> </body> </html>

網頁結果:

這樣將代碼模塊化后,使得代碼的邏輯變得清晰,更能呈現出業務場景。

但是,這種方式的模塊化也存在缺點:

①頁面加載速度變慢:

由于增加了js文件的數量,所以網頁需要發起更多次的http請求,導致了頁面加載速度變慢。

②無法直接在js代碼中看出js文件之間相互的存儲位置的關系,必須要通過dist.html文件才能查看。

③js文件必須按規定順序加載:

在dist.html文件中,header.js、content.js以及footer.js文件都必須在index.js文件之前加載完畢:

假如我們把header.js文件,放在index.js文件后面進行加載:

網頁的控制臺就會報錯:

三、使用webpack打包器

為了解決上面那種模塊化方式存在的缺點,我們依據ES module的規則改寫一點代碼,然后結合webpack來解決。

首先,我們來看改寫后的代碼:

header.js:

function Header(){var webContent = document.getElementById('webContent');var header = document.createElement('div');header.innerText = '網頁標題';webContent.appendChild(header); }export default Header;

content.js:

function Content(){var webContent = document.getElementById('webContent');var content = document.createElement('div');content.innerText = '網頁主體';webContent.appendChild(content); }export default Content;

footer.js:

function Footer(){var webContent = document.getElementById('webContent');var footer = document.createElement('div');footer.innerText = '網頁頁腳';webContent.appendChild(footer); }export default Footer;

index.js:

import Header from './header.js'; import Content from './content.js'; import Footer from './footer.js';new Header(); new Content(); new Footer();

dist.html:

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title> </head> <body><div id="webContent"></div><script src="./dist/main.js"></script> </body> </html>

接下來,進入到上面這些文件的根目錄,我這里是進入到e:\webpack-demo,然后初始化npm環境(注意:做這些操作之前必須要先安裝node環境,可以參考這篇文章:

https://www.npmjs.com.cn/getting-started/installing-node/):?www.npmjs.com.cn

?

接下來,一直回車就好。

然后,安裝webpack:

最后,運行npx webpack命令(Node 8.2+ 版本提供的 npx 命令,可以運行在初始安裝的 webpack 包(package)的?webpack?二進制文件,就是可以調用webpack中的webpack二進制文件程序):

此時,會發現根目錄中出現了一個新的文件夾:

查看dist文件夾中的內容,可以發現有一個main.js文件,其實這個main.js文件是webpack將index.js、header.js、content.js、footer.js打包在一起的一個文件。

用瀏覽器直接打開dist.html文件,可以發現和原先的模塊化方法得到相同的結果:

四、webpack究竟是什么呢?

通過上面的示例,我們應該可以很清楚的知道webpack是一個打包器(bundler),它能將多個js文件打包成一個文件(其實不止能打包js文件,也能打包其他類型的文件,比如css文件,json文件等)。

可以查看官方文檔,官方文檔也明確表明webpack是一個打包器:

但是webpack不是一個翻譯器,它只能理解諸如"imort"、"from"等模塊導入語句,其他的JS語句等它是不能夠識別理解的。

總結

以上是生活随笔為你收集整理的什么是webpack?的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 人人爽人人爽人人爽人人爽 | 欧美性教育视频 | 秘密基地免费观看完整版中文 | 一区二区视频网站 | 成年人理论片 | 精品国产一区二区三区av性色 | 国产精品美女久久久久久久 | av中文资源网 | 伊人98| 国产精品视频在 | 久久福利免费视频 | 国产精品久久久久久久毛片 | av中文一区 | 夜夜cao| 日本做爰高潮又黄又爽 | av黄在线| 成人av番号网 | 中文天堂资源在线 | 欧美日韩乱 | 亚洲一级精品 | 精品成人免费一区二区在线播放 | 成人区人妻精品一区二区不卡视频 | 日韩亚洲视频 | 女同性做爰全过程 | 亚洲乱色 | 手机av观看| 小柔的淫辱日记(h | 国产一区二区三区免费观看视频 | 欧美成人精品激情在线观看 | 国产不卡av在线 | 久久久国产一区二区三区 | 国产精品成人一区二区 | 日韩午夜在线视频 | 中国大陆一级毛片 | 久久免费精彩视频 | 亚洲人妻电影一区 | 国产色站| 日韩美av| 国产伦精品一区二区三区照片91 | 日本少妇一区二区 | 老牛影视av牛牛影视av | 亚洲天堂性| 香蕉视频性 | 精品久久久久久久久久久久久久 | 久久久久久久久久久影院 | 亚洲人成网站999久久久综合 | 欧洲成人综合网 | 日韩美女毛片 | 18岁禁黄网站 | 五月天婷婷在线观看 | 91亚洲视频在线观看 | 91.xxx.高清在线 | 国产白丝av | 欧美 日韩 国产 高清 | 日韩色图视频 | 放荡闺蜜高h季红豆h | 伊人久久一区二区 | 日韩诱惑 | 国产ts网站| 九九热视频免费 | 9cao| 国产激情成人 | 一区二区三区视频免费 | 日韩大胆人体 | 亚洲欧美乱综合图片区小说区 | 精品日韩在线视频 | 妖精视频一区二区三区 | 国产成人自拍视频在线 | 日韩欧 | 国产精品无码在线播放 | 国产免费一区二区三区网站免费 | 天天操夜夜撸 | 韩国精品一区二区三区 | 欧美性天堂 | 在线视频免费观看一区 | 性奶老妇 视频 | 超碰日韩在线 | 中文字幕一区二区三区在线播放 | 波多野结衣中文字幕久久 | 亚洲人毛茸茸 | 韩国黄色大片 | 国产熟妇与子伦hd | 欧美色图俺去了 | 九九福利| 日本超碰在线 | www.日韩精品 | 成人免费一区二区 | 亚洲欧美综合一区 | 国产精品麻豆一区二区 | 在线免费观看视频黄 | 国产永久免费观看 | 欧美日韩在线播放三区四区 | 免费av一区| 精品少妇无码av无码专区 | 99久久精品一区二区 | 亚洲91视频 | av日韩在线免费观看 | 欧美一级欧美三级 | 天堂中文在线8 |