国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

webpack多頁面開發實踐

來源:懂視網 責編:小采 時間:2020-11-27 22:23:30
文檔

webpack多頁面開發實踐

webpack多頁面開發實踐:寫在前面 webpack是一款模塊加載器兼打包工具,能把js,css,頁面,圖片,視頻等各種資源,進行模塊化處理。而現在網上流傳很多單頁面的webpack模型,那多頁面呢?比較少,現在我提供一個多頁面的前端模型。希望大家適合使用。 在最開始接觸webpack的時
推薦度:
導讀webpack多頁面開發實踐:寫在前面 webpack是一款模塊加載器兼打包工具,能把js,css,頁面,圖片,視頻等各種資源,進行模塊化處理。而現在網上流傳很多單頁面的webpack模型,那多頁面呢?比較少,現在我提供一個多頁面的前端模型。希望大家適合使用。 在最開始接觸webpack的時

寫在前面

webpack是一款模塊加載器兼打包工具,能把js,css,頁面,圖片,視頻等各種資源,進行模塊化處理。而現在網上流傳很多單頁面的webpack模型,那多頁面呢?比較少,現在我提供一個多頁面的前端模型。希望大家適合使用。

在最開始接觸webpack的時候,我都覺得webpack只適用于單頁面應用,比如webpack+react,webpack+vue。我自己在使用webpack+vue構建項目及開發的過程中感受到了webpack的強大和方便?;趯嶋H項目需求,我在想,多頁面站點是否也能使用webapck來構建呢?于是就開始了一番探索,最終算是搭建了一套比較完整的解決方案。

本文以一個實際項目為例子,講述在多頁面項目中如何使用webpack進行工程化構建。本文是自己的實踐經驗總結,所以有些解決方案并不是最優的,仍在探索優化中,如果有什么錯誤紕漏,歡迎指出。

簡介

本項目主要基于webpack2.x構建,以gulp作為輔助工具。前端使用art-template作為模板引擎,一個頁面對應一個模板文件和一個入口文件,入口文件中可以通過import或require引入其他模塊,這些模塊webpack會自動跟入口文件合并為一個文件。

前端開發環境搭建

主要目錄結構

├─dist #打包后生成的文件目錄
└─src #開發目錄
 ├─components #通用組件
 ├─static #靜態資源目錄
 │ ├─css
 │ ├─img
 │ └─js
 │ ├─component #站點通用組件對應的js
 │ ├─lib #第三方js庫
 │ ├─services #各頁面入口
 │ └─util #通用工具js
 ├─template #html模板
 └─views #頁面
 main.js #公共入口
gulpfile.js #gulp任務配置
package.json #項目依賴
webpack.config.js #webpack配置

webpack配置

入口文件

// 獲取入口文件
var entries = (function() {
 var jsDir = path.resolve(__dirname, 'src/static/js/services');
 var entryFiles = glob.sync(jsDir + '/*.js');
 var map = {};

 entryFiles.forEach(function(filePath) {
 var filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'));
 map[filename] = filePath;
 });
 return map;
})();

該方法將生成文件名到文件絕對路徑的map, 比如

entry: {
 'page-1': '/../webpack-multipage-demo/src/static/js/services/page-1.js'
}

熱更新

熱更新簡直不要太好用,極大地提高了開發效率。

//服務器配置
var devServer = env === 'production' ? {} : {
 contentBase: path.resolve(__dirname),
 compress: true,
 historyApiFallback: true,
 hot: true,
 inline: true,
 host: 'localhost', 
 port: 8080
};

另外,在plugin中加入new webpack.HotModuleReplacementPlugin(),開啟Hot Module Replacemen,即可實現熱更新。

生成html配置

約定同一頁面的js文件與模板文件命名一致,最終根據該js生成與其同名的html文件。

var htmlPages = (function() {
 var artDir = path.resolve(__dirname, 'src/views');
 var artFiles = glob.sync(artDir + '/*.art');
 var array = [];
 artFiles.forEach(function(filePath) {
 var filename = filePath.substring(filePath.lastIndexOf('\/') + 1, filePath.lastIndexOf('.'));
 array.push(new HtmlWebpackPlugin({
 template: path.resolve(__dirname, 'src/template/index.html'),
 filename: filename + '.html',
 chunks: ['vendor', 'main', filename],
 chunksSortMode: function(chunk1, chunk2) {
 var order = ['vendor', 'main', filename];
 var order1 = order.indexOf(chunk1.names[0]);
 var order2 = order.indexOf(chunk2.names[0]);
 return order1 - order2;
 },
 minify: {
 removeComments: env === 'production' ? true : false,
 collapseWhitespace: env === 'production' ? true : false
 }
 }));
 });
 return array;
})();

通用模塊提取為組件

對于一些在多個頁面中都需要用到的模塊,可將其提取出來作為通用的組件。組件的構成與頁面一樣,一個.js文件和一個.art文件以及一個.css文件,在js文件中渲染html內容,最后export,使用時直接require即可。具體實踐可參考demo

存在問題

  1. 每新建一個頁面就需要重新啟動webpack服務
  2. 字體文件無法壓縮,對于壓縮通過font-face引入的網絡字體,目前沒有找到較好的解決方案

demo

基于本文理論的一個demo,地址:webpack-multipage-demo

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

webpack多頁面開發實踐

webpack多頁面開發實踐:寫在前面 webpack是一款模塊加載器兼打包工具,能把js,css,頁面,圖片,視頻等各種資源,進行模塊化處理。而現在網上流傳很多單頁面的webpack模型,那多頁面呢?比較少,現在我提供一個多頁面的前端模型。希望大家適合使用。 在最開始接觸webpack的時
推薦度:
標簽: 開發 實戰 實踐
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产亚洲精品a在线观看app | a欧美在线 | 欧美网站在线观看 | 男女男精品网站 | 欧美日韩高清完整版在线观看免费 | 国产a久久精品一区二区三区 | 精品国产亚洲一区二区三区 | 国产欧美日韩中文字幕 | 久久久久久国产精品免费 | 美女一级a毛片免费观看 | 国产一区二区成人 | 国产国产成人精品久久 | 国产精品一区欧美日韩制服 | 国产精品乱码一区二区三区 | 欧美福利在线观看 | 欧美日韩视频一区二区三区 | 欧美 日韩 亚洲另类专区 | 欧美色图亚洲天堂 | 国产日产欧美精品一区二区三区 | 欧美日韩国产一区二区三区播放 | 国内精品99| 亚洲国产一成人久久精品 | 日韩精品第三页 | 91精品国产品国语在线不卡 | 欧美日韩色视频在线观看 | 三级中文字幕电影大全 | 久久亚洲一级α片 | 91国内精品久久久久影院优播 | 国产欧美日韩亚洲 | 亚洲黄色一区 | 亚洲国产精品婷婷久久久久 | 全部费免一级毛片不收费 | 欧美日韩一区二区三区久久 | 成人黄色在线 | 久久动态图 | 亚洲午夜一区二区三区 | 91www成人久久 | 欧美日韩在线一区二区三区 | 欧美在线播放视频 | 国产精品网站在线进入 | 日本不卡视频一区二区 |