在webpack中如何實現多頁面開發
這篇文章主要介紹了webpack多頁面開發實踐,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧
寫在前面
webpack是一款模組載入器兼打包工具,能把js,css,頁面,圖片,視訊等各種資源,進行模組化處理。而現在網路上流傳很多單頁的webpack模型,那多頁呢?比較少,現在我提供一個多頁面的前端模型。希望大家適合使用。
在最開始接觸webpack的時候,我都覺得webpack只適用於單一頁面應用,像是webpack react,webpack vue。我自己在使用webpack vue建構專案及開發的過程中感受到了webpack的強大與方便。基於實際專案需求,我在想,多頁面網站是否也能使用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
存在問題
#每新建一個頁面就需要重新啟動webpack服務
-
字體檔案無法壓縮,對於壓縮透過font-face引入的網頁字體,目前沒有找到較好的解決方案
demo
#基於本文理論的demo,地址:webpack-multipage-demo
上面是我整理給大家的,希望今後會對大家有幫助。
相關文章:
#以上是在webpack中如何實現多頁面開發的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Vue是一款優秀的JavaScript框架,它可以幫助我們快速建立互動性強、高效性好的Web應用程式。 Vue3是Vue的最新版本,它引入了許多新的功能和功能。 Webpack是目前最受歡迎的JavaScript模組打包器和建置工具之一,它可以幫助我們管理專案中的各種資源。本文就為大家介紹如何使用Webpack打包和建構Vue3應用程式。 1.安裝Webpack

差異:1、webpack伺服器啟動速度比vite慢;由於vite啟動的時候不需要打包,也就不需要分析模組依賴、編譯,所以啟動速度非常快。 2.vite熱更新比webpack快;vite在HRM方面,當某個模組內容改變時,就讓瀏覽器去重新請求該模組即可。 3.vite用esbuild預先建置依賴,而webpack基於node。 4.vite的生態不如webpack,載入器、插件不夠豐富。

隨著Web開發技術的不斷發展,前後端分離、模組化開發已成為了廣泛的趨勢。 PHP作為一種常用的後端語言,在進行模組化開發時,我們需要使用一些工具來實現模組的管理和打包,其中webpack是一個非常好用的模組化打包工具。本文將介紹如何使用PHP和webpack進行模組化開發。一、什麼是模組化開發模組化開發是指將程式分解成不同的獨立模組,每個模組都有自己的作

設定方法:1.用導入的方法把ES6程式碼放到打包的js程式碼檔案中;2、利用npm工具安裝babel-loader工具,語法「npm install -D babel-loader @babel/core @babel/preset- env」;3、建立babel工具的設定檔「.babelrc」並設定轉碼規則;4、在webpack.config.js檔案中設定打包規則即可。

隨著現代Web應用程式的複雜性不斷增加,建立優秀的前端工程和插件系統變得越來越重要。隨著SpringBoot和Webpack的流行,它們成為了一個建構前端工程和插件系統的完美組合。 SpringBoot是一個Java框架,它以最小的配置需求來建立Java應用程式。它提供了許多有用的功能,例如自動配置,使開發人員可以更快、更輕鬆地建立和部署Web應用程式。 W

在vue中,webpack可以將js、css、圖片、json等檔案打包為適當的格式,以供瀏覽器使用;在webpack中js、css、圖片、json等檔案類型都可以被當作模組來使用。 webpack中各種模組資源可打包合併成一個或多個包,並且在打包的過程中,可以對資源進行處理,如壓縮圖片、將scss轉成css、將ES6語法轉成ES5等可以被html識別的文件類型。

Webpack是一款模組打包工具。它為不同的依賴創建模組,將其整體打包成可管理的輸出檔案。這一點對於單頁面應用程式(現今Web應用的事實標準)來說特別有用。

vue中的webpack以node套件管理器「npm」或npm鏡像「cnpm」來安裝。 webpack是一個用於現代JavaScript應用程式的靜態模組打包工具,是基於node.js開發的,使用時需要有node.js元件支援;需要使用npm或cnpm進行安裝,語法「npm install webpack -g」或“cnpm install webpack -g”。
