vue+webpack搭建單檔案應用和多檔案應用webpack.con
1.前言
這幾天,都遇到過有人問過相似的問題,就是用vue和webpack搭建目錄的時候,怎麼把單頁面應用的配置改成多檔案應用,或者是怎麼把多檔案應用的配置改成單檔案應用。這個情況,我之前有處理過,公司的同事教過我,我就針對這個情況寫下此篇文章。各位如果覺得我哪裡寫得不夠好,寫錯了,歡迎指出,大家一起進步。
2.說明
首先,我用的vue和webpack的版本都是2.x的,請大家留意自己使用的版本,特別是webpack的版本,1和2還是有些區別的。
然後,專案搭建的流程我不多說了,之前寫過文章,網上也有很多好文章值得學習。接下來我只針對webpack.config.js這個配置檔案說明,因為我做專案的時候,改動的基本就是這裡,專案的檔案雖然也有寫法上的改動,但是那個改動相信不會難到大家,如果真的不知如何下手,我往後可能會再寫文章。
3.單檔案應用的配置
由於現在單檔案應用寫得比較多,一開始我就先放單檔案應用的配置檔案吧,程式碼如下
let path = require('path'); let webpack = require('webpack'); /* html-webpack-plugin外掛,webpack中生成HTML的外掛, 具體可以去這裡檢視 */ let HtmlWebpackPlugin = require('html-webpack-plugin'); /* 一個根據模式匹配獲取檔案列表的node模組。 有關glob的詳細用法可以在這裡看到—— */ let glob = require('glob'); /* webpack外掛 */ let CommonsChunkPlugin = webpack.optimize.CommonsChunkPlugin; let UglifyJsPlugin = webpack.optimize.UglifyJsPlugin; let publicPath = '/dist/'; //IP地址 let serverHost = getIPAdress(); let config = { //入口檔案 entry: { index: path.resolve(__dirname, 'src/js/page/index.js'), vendors: ['vue', 'vue-router','vue-resource','vuex','element-ui','element-ui/lib/theme-default/index.css'] // 需要進行單獨打包的檔案 }, //出口檔案 output: { path: path.join(__dirname, 'dist'), //輸出目錄的配置,模板、樣式、指令碼、圖片等資源的路徑配置都相對於它 publicPath: publicPath, //模板、樣式、指令碼、圖片等資源對應的server上的路徑 filename: 'js/[name].js', //每個頁面對應的主js的生成配置 // chunkFilename: 'js/[name].asyncChunk.js?[chunkhash]' //chunk生成的配置 chunkFilename: 'js/[name].asyncChunk.js?'+new Date().getTime() //chunk生成的配置 }, module: { //載入器 rules: [ { test: /.vue$/, loader: 'vue-loader', options: { loaders: { scss: 'vue-style-loader!css-loader!sass-loader', //
4.多檔案應用的配置
多檔案現在用的不算很多,主要有時候會負責公司一些活動的小專案會用到,程式碼如下。
let path = require('path'); let webpack = require('webpack'); /* html-webpack-plugin外掛,webpack中生成HTML的外掛, 具體可以去這裡檢視 */ let HtmlWebpackPlugin = require('html-webpack-plugin'); /* 一個根據模式匹配獲取檔案列表的node模組。 有關glob的詳細用法可以在這裡看到—— */ let glob = require('glob'); /* webpack外掛 */ let CommonsChunkPlugin = webpack.optimize.CommonsChunkPlugin; let UglifyJsPlugin = webpack.optimize.UglifyJsPlugin; let publicPath = '/dist/'; //透過getEntry函式獲取所有js指令碼 let jsEntries = getEntry('./src/js/page/*.js'); //IP地址 let IPAddress = getIPAdress(); let serverHost = IPAddress; let config = { //入口檔案 entry: jsEntries, // entry: { // index:jsEntries, // vendors: ['vue', 'vue-router','vue-resource'] // 需要進行單獨打包的檔案 // }, //出口檔案 output: { path: path.join(__dirname, 'dist'), //輸出目錄的配置,模板、樣式、指令碼、圖片等資源的路徑配置都相對於它 publicPath: publicPath, //模板、樣式、指令碼、圖片等資源對應的server上的路徑 filename: 'js/[name].js', //每個頁面對應的主js的生成配置 chunkFilename: 'js/[id].chunk.js?[chunkhash]' //chunk生成的配置 }, module: { rules: [ { test: /.vue$/, loader: 'vue-loader', options: { loaders: { scss: 'vue-style-loader!css-loader!sass-loader', //
5.區別總結
一對比,區別就是出來了,但是寫法是大同小異的。有區別是主要是下面幾點
1.入口檔案的區別,單頁面應用入口檔案是就是一個index.js('src/js/page/index.js'
)。而多頁面應用的入口檔案是所有需要用到的頁面let jsEntries = getEntry('./src/js/page/*.js');
。(getEntry方法是返回一個目錄下所有的.js檔案的名稱和路徑,jsEntries就是一個物件陣列,裡面包含著./src/js/page
目錄下所有的.js檔案的名稱和路徑)
2.在多檔案應用的配置中,HtmlWebpackPlugin這個外掛是提取出來,在遍歷getEntry('./src/html/*.html')
的過程中,執行一次就往配置(config.plugins)那裡push一次(config.plugins.push(new HtmlWebpackPlugin(conf))
)。為什麼這樣寫,大家應該很清楚了,有多少個入口檔案,就得寫多少次這個外掛,new HtmlWebpackPlugin
多少次,如果入口檔案只有一兩個,兩三個還好,如果有100個入口檔案,豈不是要在config.plugins
那裡寫100次new HtmlWebpackPlugin
,所以就標題文字遍歷了,方便點。
結語
好了。單檔案應用和多檔案應用上,webpack.config.js是大同小異的,區別就討論到這裡了。如果文章覺得那裡寫得不好或者寫錯了,歡迎指出。同時也希望,這篇文章能幫到大家!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2983/viewspace-2806641/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python讀寫excel檔案簡單應用PythonExcel
- ThinkPHP多應用/專案配置技巧(使用同一配置檔案)–(十六)PHP
- 1.4檔案操作之修改程式配置檔案小應用
- Java io.File應用(建立路徑和檔案)Java
- ORACLE UTL_FILE檔案包的應用,檔案I/O操作Oracle
- webpack 搭建vue多單頁應用WebVue
- 單頁面應用和多頁面應用
- 用Pandas讀寫Excel檔案-輸出單sheet和多sheetExcel
- Nano v1.0 釋出!一個 PHP 檔案搭建 Hyperf 應用NaNPHP
- Export for iTunes for Mac(音樂檔案管理應用)ExportMac
- Bootstrap檔案上傳元件應用:bootstrap fileinputboot元件
- Xamarin Essentials應用教程檔案系統FileSystem
- C#讀寫xml檔案應用案例C#XML
- 製作tld檔案及應用詳解
- 實驗7 檔案應用程式設計程式設計
- vue+webpack打造todo應用VueWeb
- 釋出 .NET 5 帶執行時單檔案應用時優化檔案體積的方法優化
- SpringMVC檔案上傳下載(單檔案、多檔案)SpringMVC
- 整合中的小應用--檔案轉換或簡單的UIUI
- 基於Docker應用容器日誌檔案收集Docker
- 哈夫曼樹及其應用(檔案壓縮)
- 通過基準配置檔案改善應用效能
- Spring Boot: 加密應用配置檔案敏感資訊Spring Boot加密
- 在Web應用中動態建立PDF檔案Web
- Linux檔案系統的桌面應用(轉)Linux
- 實驗7_檔案應用程式設計程式設計
- 檔案同步是什麼?解析6個最佳的檔案同步應用軟體
- Wpf應用程式作為一個單獨的可執行檔案
- .net6+ 在單檔案應用程式中獲取程式集位置
- 詳細介紹Quake2BSP檔案格式和應用(轉)
- Windows 2000分散式檔案系統分析和應用(轉)Windows分散式
- 利用Inotify和Rsync將web工程檔案自動同步到多臺應用伺服器Web伺服器
- #用openfiledialog檔案和savefileDialog開啟和儲存檔案
- Spring Boot加密應用配置檔案敏感資訊(jasypt)Spring Boot加密
- 為你的 Linux 應用建立 .desktop 檔案Linux
- day07.檔案操作/綜合應用【Python教程】Python
- EBS應用臨時檔案或資料的清理
- 靈活應用Windows XP硬體配置檔案(轉)Windows