使用 vue-cli 開發多頁應用

修改的webpack配置文件

全局配置

修改 webpack.base.conf.js

打開?~\build\webpack.base.conf.js?,找到entry,添加多入口

entry: {app: './src/main.js',app2: './src/main2.js',app3: './src/main3.js',
},

運行、編譯的時候每一個入口都會對應一個Chunk

run dev 開發環境

修改 webpack.dev.conf.js

打開?~\build\webpack.dev.conf.js?,在plugins下找到new HtmlWebpackPlugin,在其后面添加對應的多頁,并為每個頁面添加Chunk配置

chunks: ['app']中的app對應的是webpack.base.conf.jsentry設置的入口文件

plugins:[// https://github.com/ampedandwired/html-webpack-plugin// 多頁:index.html → app.jsnew HtmlWebpackPlugin({filename: 'index.html',//生成的htmltemplate: 'index.html',//來源htmlinject: true,//是否開啟注入chunks: ['app']//需要引入的Chunk,不配置就會引入所有頁面的資源}),// 多頁:index2.html → app2.jsnew HtmlWebpackPlugin({filename: 'index2.html',//生成的htmltemplate: 'index2.html',//來源htmlinject: true,//是否開啟注入chunks: ['app2']//需要引入的Chunk,不配置就會引入所有頁面的資源}),// 多頁:index3.html → app3.jsnew HtmlWebpackPlugin({filename: 'index3.html',//生成的htmltemplate: 'index3.html',//來源htmlinject: true,//是否開啟注入chunks: ['app3']//需要引入的Chunk,不配置就會引入所有頁面的資源})
]

run build 編譯

修改 config/index.js

打開~\config\index.js,找到build下的index: path.resolve(__dirname, '../dist/index.html'),在其后添加多頁

build: {index: path.resolve(__dirname, '../dist/index.html'),index2: path.resolve(__dirname, '../dist/index2.html'),index3: path.resolve(__dirname, '../dist/index3.html'),
},

修改 webpack.prod.conf.js

打開~\build\webpack.prod.conf.js,在plugins下找到new HtmlWebpackPlugin,在其后面添加對應的多頁,并為每個頁面添加Chunk配置

HtmlWebpackPlugin?中的?filename?引用的是 config/index.js 中對應的?build

plugins: [// 多頁:index.html → app.jsnew HtmlWebpackPlugin({filename: config.build.index,template: 'index.html',inject: true,minify: {removeComments: true,collapseWhitespace: true,removeAttributeQuotes: true// more options:// https://github.com/kangax/html-minifier#options-quick-reference},// necessary to consistently work with multiple chunks via CommonsChunkPluginchunksSortMode: 'dependency',chunks: ['manifest','vendor','app']//需要引入的Chunk,不配置就會引入所有頁面的資源}),// 多頁:index2.html → app2.jsnew HtmlWebpackPlugin({filename: config.build.index2,template: 'index2.html',inject: true,minify: {removeComments: true,collapseWhitespace: true,removeAttributeQuotes: true},chunksSortMode: 'dependency',chunks: ['manifest','vendor','app2']//需要引入的Chunk,不配置就會引入所有頁面的資源}),// 多頁:index3.html → app3.jsnew HtmlWebpackPlugin({filename: config.build.index3,template: 'index3.html',inject: true,minify: {removeComments: true,collapseWhitespace: true,removeAttributeQuotes: true},chunksSortMode: 'dependency',chunks: ['manifest','vendor','app3']//需要引入的Chunk,不配置就會引入所有頁面的資源}),
]

參考:
小凡哥視頻 - 講解 vuejs2 ,使用 vue-cli 怎么搭起 多頁應用


如果頁面比較多,可以考慮使用循環將?HtmlWebpackPlugin?添加到?plugins

// utils.js
exports.getEntry = function(globPath, pathDir) {var files = glob.sync(globPath);var entries = {},entry, dirname, basename, pathname, extname;for (var i = 0; i < files.length; i++) {entry = files[i];dirname = path.dirname(entry);extname = path.extname(entry);basename = path.basename(entry, extname);pathname = path.join(dirname, basename);pathname = pathDir ? pathname.replace(new RegExp('^' + pathDir), '') : pathname;entries[pathname] = ['./' + entry];}return entries;
}
// webpack.base.conf.js
var pages = Object.keys(utils.getEntry('../src/views/**/*.html', '../src/views/'));
pages.forEach(function (pathname) {// https://github.com/ampedandwired/html-webpack-pluginvar conf = {filename: '../views/' + pathname + '.html', //生成的html存放路徑,相對于pathtemplate: '../src/views/' + pathname + '.html', //html模板路徑inject: false,    //js插入的位置,true/'head'/'body'/false/** 壓縮這塊,調用了html-minify,會導致壓縮時候的很多html語法檢查問題,* 如在html標簽屬性上使用{{...}}表達式,所以很多情況下并不需要在此配置壓縮項,* 另外,UglifyJsPlugin會在壓縮代碼的時候連同html一起壓縮。* 為避免壓縮html,需要在html-loader上配置'html?-minimize',見loaders中html-loader的配置。*/// minify: { //壓縮HTML文件//     removeComments: true, //移除HTML中的注釋//     collapseWhitespace: false //刪除空白符與換行符// }};if (pathname in config.entry) {conf.favicon = 'src/images/favicon.ico';conf.inject = 'body';conf.chunks = ['vendors', pathname];conf.hash = true;}config.plugins.push(new HtmlWebpackPlugin(conf));
});

同樣入口?entry?也可以使用

// webpack.base.conf.js
entry: {app: utils.getEntry('../src/scripts/**/*.js', '../src/scripts/')
},

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247454.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247454.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247454.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深度學習系統相比較傳統的機器學習系統,針對常見的分類問題,精度究竟能有多大提升?...

來源&#xff1a;知乎原文鏈接&#xff1a;深度學習系統相比較傳統的機器學習系統&#xff0c;針對常見的分類問題&#xff0c;精度究竟能有多大提升&#xff1f; 問題&#xff1a; 我現在手頭有一個binary classification的問題。數據量在一百萬左右。每個sample都是一個14個f…

遠程鏈接錯誤:這可能是由于credssp加密oracle修正

此錯誤解決辦法 1.WinR 輸入regedit打開注冊表 找到對應的以下目錄HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 此時如果System下沒有CredSSP時創建CredSSP沒有Parameters時,創建Parameters 創建方法:右建>>新建>>項 2.在Para…

SpringBoot入門最詳細教程

https://www.jianshu.com/p/af3d5800f763 網上有很多springboot的入門教程&#xff0c;自己也因為項目要使用springboot&#xff0c;所以利用業余時間自學了下springboot和springcloud&#xff0c;使用下來發現springboot還是挺簡單的&#xff0c;體現了極簡的編程風格&#xf…

通過Vue CLI3 快速創建Vue項目并部署到tomcat

1、前提 首先你要安裝好nodejs和yarn,直接在官網下載安裝包&#xff0c;一鍵安裝即可&#xff0c;不需要什么環境配置&#xff0c;我安裝的是最新版本&#xff08;node-v10.13.0、yarn-1.12.3&#xff09; 2、安裝 同時寫Vue CLI 3和Vue CLI 2 的原因是官方默認的是3&#x…

簡述區塊鏈(1)- 也許只有這一篇

一、嘮叨兩句 最近一直在考慮一個事情&#xff0c;就是怎么給不太了解技術的人講清楚區塊鏈。我先試著寫下來&#xff0c;然后在逐步打磨吧&#xff0c;目標就是讓哪些說看區塊鏈看的云里霧里的同學能對區塊鏈有一些認知。 二、定義 簡單的給區塊鏈下個定義&#xff1a;基于加密…

Vue CLI 3.0腳手架如何在本地配置mock數據json

前后端分離的開發模式已經是目前前端的主流模式&#xff0c;至于為什么會前后端分離的開發我們就不做過多的闡述&#xff0c;既然是前后端分離的模式開發肯定是離不開前端的數據模擬階段。 我們在開發的過程中&#xff0c;由于后臺接口的沒有完成或者沒有穩定之前我們都是采用…

python 通過下載包setup.py安裝模塊

下載安裝包&#xff0c;并解壓到相應的位置 1、打開cmd 2、到達安裝目錄 3、python setup.py build 4、python setup.py install 轉載于:https://www.cnblogs.com/liuchunxiao83/p/11207340.html

webpack之externals操作三部曲--正確的姿勢

1.作用 首先webpack提供這個externals選項作用是從打包的bundle文件中排除依賴。換句話說就是讓在項目中通過import引入的依賴在打包的時候不會打包到bundle包中去&#xff0c;而是通過script的方式去訪問這些依賴。 2.怎么用&#xff1f; 以jquery為例子&#xff0c;目的是在…

Anaconda3自帶jupyter

1、cmd命令行中輸入 JupyterNotebook 2、系統自動調起下面頁面&#xff08;注冊端口沖突是打不開的&#xff09; 轉載于:https://www.cnblogs.com/liuchunxiao83/p/11207385.html

python 的按位與 或 異或 運算

符號 描述 運算規則 by MoreWindows & 與 兩個位都為1時&#xff0c;結果才為1 &#xff08;統計奇數&#xff09; | 或 兩個位都為0時&#xff0c;結果才為0 &#xff08;統計偶數&#xff09; ^ 異或 兩…

理解Shadow DOM

1. 什么是Shadow DOM? Shadow DOM 如果按照英文翻譯的話可以理解為 影子DOM, 何為影子DOM呢&#xff1f;可以理解為一般情況下使用肉眼看不到的DOM結構&#xff0c;那如果一般情況下看不到的話&#xff0c;那也就是說我們無法直接控制操縱的DOM結構。 Shadow DOM 它是HTML的一…

046 實例11-自動軌跡繪制

目錄 一、"自動軌跡繪制"問題分析1.1 問題分析1.2 自動軌跡繪制二、"自動軌跡繪制"實例講解2.1 自動軌跡繪制2.2 數據接口定義2.3 數據文件三、"自動軌跡繪制"舉一反三3.1 理解方法思維3.2 應用問題的擴展一、"自動軌跡繪制"問題分析 …

bootstrap-select采坑

bootstrap-select采坑 1.class"selectpicker" 普通的下拉框功能 2.title"請選擇城市名稱" title的作用與palcehoder一樣。 3.select class"selectpicker" multiple selectpicker和multiple屬性的搭配使用可實現多選 4.data-live-search"tru…

對vue虛擬dom的研究

Vue.js通過編譯將template 模板轉換成渲染函數(render ) &#xff0c;執行渲染函數就可以得到一個虛擬節點樹在對 Model 進行操作的時候&#xff0c;會觸發對應 Dep 中的 Watcher 對象。Watcher 對象會調用對應的 update 來修改視圖。這個過程主要是將新舊虛擬節點進行差異對比…

element-ui之dialog組件title插槽的使用

dialog對話框組件title屬性的slot使用方法 使用背景 需要單獨控制title中某個數據顯示及樣式&#xff0c;footer也一樣 <el-dialog// 也可以這樣寫,但是沒有辦法單獨控制name age的顯示// title"name age"title"提示":visible.sync"dialogVisi…

css3自適應布局單位vw,vh

視口單位(Viewport units) 什么是視口&#xff1f; 在桌面端&#xff0c;視口指的是在桌面端&#xff0c;指的是瀏覽器的可視區域&#xff1b;而在移動端&#xff0c;它涉及3個視口&#xff1a;Layout Viewport&#xff08;布局視口&#xff09;&#xff0c;Visual Viewport…

python 操作 elasticsearch-7.0.2 遇到的問題

錯誤一&#xff1a;TypeError: search() got an unexpected keyword argument doc_type&#xff0c;得到不預期外的參數 解決方法&#xff1a;elasticsearch7里不用文檔類型&#xff0c;所以去掉 doc_typecredit_data 錯誤二&#xff1a;RequestError(400, illegal_argument_ex…

用到的Shell

sed 1i 添加的內容 file #這是在第一行前添加字符串 sed $i 添加的內容 file #這是在最后一行行前添加字符串 sed $a添加的內容 file #這是在最后一行行后添加字符串 sed -i s/.*/行首添加內容&行尾添加內容/ 文件名 //每一行 sed -i $a新增的一行 tars_build_tar.sh a…

如何解決瀏覽器縮小出現橫向滾動條時網頁背景圖出現空白的問題

原因&#xff1a; 當窗口縮小時&#xff0c;瀏覽器默認100%寬度為瀏覽器窗口的寬度。而忽略了下部內容層固定寬度(1024px)。從而出現了固定寬度大于100%寬度的現象。瀏覽以此理解來解析頁面&#xff0c;就出現了容器寬度理解上的差異&#xff0c;出現了一個非常奇特的BUG。 解…

前端設計模式

1. 單例模式 2.裝飾器模式 轉載于:https://www.cnblogs.com/lyraLee/p/11210985.html