亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

webpack 3.X學習之多頁面打包的方法

2024-05-06 16:45:56
字體:
來源:轉載
供稿:網友

簡介

我們開發不可能只寫一個頁面,每次都要寫很多頁面,這時為了開發效率,我們使用前端自動化工具webpack,那么webpack是如何打包頁面的呢?又是如何打包多頁面的呢?

單頁面打包

我們知道要打包單頁面的方法,很簡單,配置入口,和html插件,

const HtmlWebpackPlugin = require('html-webpack-plugin');const config = { entry:{  index:'./src/index.js' }, output:{  path: path.join(__dirname, 'dist'),  filename: 'js/index.js' } ... plugins:[  new HtmlWebpackPlugin({   filename: 'index.html',   template: './src/index.html',   hash: true,   minify: {    removeAttributeQuotes:true,    removeComments: true,    collapseWhitespace: true,    removeScriptTypeAttributes:true,    removeStyleLinkTypeAttributes:true   }  }) ]}

上面的配置就是打包一個單頁面的代碼,具體配置項的意思請參考HTMLWebpackPlugin;

如何打包多頁面

在學了webpack之后,我的感受是我會配置webpack了,也能運行了,但是學習的過程中都是單頁面的,那么多頁是如何打包的呢?其實多頁面的打包和單頁面的打包的原理是一樣的,只是多配置幾個對應的入口,和出口,以及HtmlWebpackPlugin對象;當然你完全可以像下面這樣:

const config = { entry:{  index:'./src/index.js',  info:'./src/index.js' }, output:{  path: path.join(__dirname, 'dist'),  filename: 'js/[name].js' } ... plugins:[  new HtmlWebpackPlugin({   filename: 'index.html',   template: './src/index.html',   chunks:['index'],   hash: true,   minify: {    removeAttributeQuotes:true,    removeComments: true,    collapseWhitespace: true,    removeScriptTypeAttributes:true,    removeStyleLinkTypeAttributes:true   }  }),  new HtmlWebpackPlugin({   filename: 'info.html',   template: './src/info.html',   hash: true,   chunks:['info'],   minify: {    removeAttributeQuotes:true,    removeComments: true,    collapseWhitespace: true,    removeScriptTypeAttributes:true,    removeStyleLinkTypeAttributes:true   }  }) ]}

細心的你肯定發現我改變了幾個地方,一是,把output.filename的‘js/index.js'變成了‘js/[name].js',這是因為我們是多頁面,每個頁面對應相應的js這樣方便管理,二是,在HtmlWebpackPlugin對象中添加了chunks這個屬性,chunk屬性是讓你選擇對應的js模塊;

上面這種寫法當然是沒有問題,這是只有兩個頁面無所謂,那么有十個甚至更多呢,我們一直做著重復的事,這不是我們程序員的風格,我們就是為了能夠偷懶才做程序員的不是嗎?(當然還有高工資(#^.^#)),接下來我們來抽離這些重復的事;

首先,我們通過Node的glob對象,來獲取我們存在的html或js;

/**** @param {string} globPath 文件的路徑* @returns entries*/function getView(globPath,flag){ let files = glob.sync(globPath); let entries = {}, entry, dirname, basename, pathname, extname; files.forEach(item => {  entry = item;  dirname = path.dirname(entry);//當前目錄  extname = path.extname(entry);//后綴  basename = path.basename(entry, extname);//文件名  pathname = path.join(dirname, basename);//文件路徑  if (extname === '.html') {   entries[pathname] = './' + entry;  } else if (extname === '.js') {   entries[basename] = entry;  } }); return entries;}

既然,我們已經有了getView()函數,可以獲取html和js文件,那么我們就可以確定有多少個入口,和多少個頁面;
let entriesObj = getView('./src/js/*.js');

let config = { entry:entriesObj, ...}

上面我們就配置好了入口,不需要我們手動添加了,有多少js就有多少入口;

let pages = Object.keys(getView('./src/*html'));pages.forEach(pathname => { let htmlname = pathname.split('src//')[1]; let conf = {  filename: `${htmlname}.html`,  template: `${pathname}.html`,  hash: true,  chunks:[htmlname],  minify: {   removeAttributeQuotes:true,   removeComments: true,   collapseWhitespace: true,   removeScriptTypeAttributes:true,   removeStyleLinkTypeAttributes:true  } } config.plugins.push(new HtmlWebpackPlugin(conf));});

最后,我們獲取HTML頁面,和添加對應頁面的HTMLWebpackPlugin對象;

后記

通過以上的三個步驟,就可以配置好一個可以打包多頁面的webpack工具;本人的水平比較有限,在書寫的過程中,可能有很多說的比較模糊,請多多包涵,也請大神拍磚,多多指教

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美三级在线| 久久精品国产99国产精品澳门| 久久人人爽人人爽爽久久| 中文字幕在线国产精品| 国产精品第10页| 成人久久一区二区三区| 国产一区二区三区在线观看网站| 国产精品中文字幕在线观看| 欧美日本高清视频| 国产一区二区日韩| 91国产视频在线播放| 欧美精品日韩www.p站| 欧美性极品少妇精品网站| 97视频免费在线观看| 亚洲精品资源美女情侣酒店| 久久久久久久久久久久久久久久久久av| 亚洲日本成人网| 精品国产依人香蕉在线精品| 国产精品尤物福利片在线观看| 午夜精品久久久久久久男人的天堂| 精品久久香蕉国产线看观看gif| 久久91精品国产| 精品国内自产拍在线观看| 久久久久久伊人| 亚洲国产高潮在线观看| 亚洲精品综合久久中文字幕| 欧美视频精品一区| 91精品国产一区| 亚洲乱码av中文一区二区| 国产精品v片在线观看不卡| 亚洲国产精品va在线看黑人| 亚洲电影免费在线观看| 国产精品高潮呻吟久久av野狼| 久久成年人视频| 亚洲字幕在线观看| 在线精品视频视频中文字幕| 欧美精品久久久久a| 久久亚洲精品小早川怜子66| 久久免费少妇高潮久久精品99| 美女啪啪无遮挡免费久久网站| 精品久久久久久久久久国产| 日韩**中文字幕毛片| 日韩av大片在线| 久久久久久久久亚洲| 亚洲午夜未删减在线观看| 精品中文字幕在线2019| 色哟哟入口国产精品| 在线观看欧美日韩国产| 亚洲第一av在线| 成人精品久久久| 亚洲国产古装精品网站| 日韩69视频在线观看| 日韩国产精品视频| 国产美女久久精品香蕉69| 亚洲成人精品在线| 狠狠色狠狠色综合日日小说| 国产一区二区三区直播精品电影| 久久精品中文字幕免费mv| 亚洲精品久久久久中文字幕二区| 国产91在线高潮白浆在线观看| 国产精品久久久久久久久久三级| 久久99青青精品免费观看| 亚洲爱爱爱爱爱| 欧美日韩国产成人在线| 精品在线欧美视频| 午夜欧美大片免费观看| 亚洲精品电影网在线观看| 日本精品久久中文字幕佐佐木| 国产成人自拍视频在线观看| 亚洲精品少妇网址| 久久av在线看| 亚洲国产精品99久久| 51视频国产精品一区二区| 精品国模在线视频| 亚洲欧美制服另类日韩| 久久久久久久av| 欧美另类在线观看| 日韩欧美在线观看| 国产精品美女www| 欧美精品一区三区| 国产精品视频99| 国产精品扒开腿做爽爽爽视频| 亚洲精品欧美日韩专区| 国产日韩欧美视频| 91久久夜色精品国产网站| 国产国语videosex另类| 亚洲精品大尺度| 午夜精品福利在线观看| 欧美韩日一区二区| 97视频在线观看播放| 日韩电影免费观看在线观看| 亚洲天堂视频在线观看| 黄色一区二区在线| 亚洲精品小视频在线观看| 欧洲永久精品大片ww免费漫画| 久久99精品视频一区97| 欧美激情一区二区三区成人| 尤物yw午夜国产精品视频明星| 亚洲一级一级97网| 色偷偷偷亚洲综合网另类| 国产精品久久久久久久美男| 91精品一区二区| 欧洲s码亚洲m码精品一区| 国产精品久久在线观看| 2020欧美日韩在线视频| 久久久久久91| 国产在线视频91| 亚洲色图综合久久| 日韩电影大全免费观看2023年上| 欧美网站在线观看| 久久久久久久久国产精品| 欧美一级淫片videoshd| 亚洲人成绝费网站色www| 欧美视频国产精品| 欧美性猛交xxxx偷拍洗澡| 亚洲欧美日韩在线一区| 欧美精品videosex性欧美| 亚洲xxxx18| 在线视频日韩精品| 欧美激情2020午夜免费观看| 狠狠躁18三区二区一区| 国内精品久久久久久影视8| 国产精品一区二区av影院萌芽| 粉嫩av一区二区三区免费野| 国产精品三级网站| 久久精品成人欧美大片古装| 亚洲老板91色精品久久| 国产美女久久精品| 茄子视频成人在线| 亚洲美女喷白浆| 久久精品亚洲国产| 91视频国产一区| 亚洲欧美制服丝袜| 在线国产精品视频| 69av成年福利视频| 精品久久久久久久久久久久| 欧美超级免费视 在线| 91免费国产视频| 欧美午夜宅男影院在线观看| 日韩av一区二区在线观看| 热99精品里视频精品| 精品久久久香蕉免费精品视频| 成人精品网站在线观看| 久久精品视频在线| 欧美丝袜一区二区| 国产成人鲁鲁免费视频a| y97精品国产97久久久久久| 国内免费久久久久久久久久久| 欧美多人乱p欧美4p久久| 91理论片午午论夜理片久久| 久久这里只有精品99| 亚洲一区二区久久久| 中文字幕国产日韩| 亚洲欧美制服第一页| 色噜噜亚洲精品中文字幕| 欧美福利在线观看| 成人免费在线网址| 欧美视频在线免费| 视频在线观看一区二区| 欧美天堂在线观看| 黄色一区二区三区| 精品国产欧美一区二区三区成人| 中文字幕久热精品视频在线| 欧洲精品毛片网站|