欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue單頁面改造多頁面應用詳解第1/2頁

 更新時間:2022年06月26日 10:03:57   作者:web老猴子  
本文主要介紹了vue單頁面改造多頁面應用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

單頁面和多頁面的區(qū)別這里就不細說了。我司業(yè)務適合多頁面,許多小應用都是通過iframe整體嵌入的形式。

  • 如果項目過于龐大,就會有很不好的體驗問題。
  • 拆分多個項目的話,又會有額外的開支,如服務器資源部署等問題。

基于此改造的目標

  • 單獨業(yè)務邏輯單獨一個頁面
  • 可實現(xiàn)單命令打包
  • 可單獨打包

首先我們準備一個基礎(chǔ)的項目,目錄結(jié)構(gòu)如下

image.png

src目錄為我們平時開發(fā)的目錄,dist為打包后的目錄,整體結(jié)構(gòu)如圖

1 將當前項目改造成多頁面目錄

image.png

pages下為我們開發(fā)的目錄文件,改造過程就是將原src下所有目錄結(jié)構(gòu)復制到home,index每個頁面單獨一份 為了提現(xiàn)多頁面優(yōu)勢,這里我們選用兩款ui框架,以便最后做下打包體積對比

npm i element-ui -S
npm i ant-design-vue -S 

在home和index中分別引入

image.png

home頁面類似,然后我們更改vue.config.js

module.exports = {
  publicPath: './',
  productionSourceMap: false,
  pages: { // vue cli3 自帶多頁面配置
    index: {
      entry: `src/pages/index/main.js`,
      template: `public/index.html`,
      filename: `index.html`
    },
    home: {
      entry: `src/pages/home/main.js`,
      template: `public/index.html`,
      filename: `home.html`
    }
  },
  devServer: {
    port: 8080
  },
  lintOnSave: false
} 

現(xiàn)在我們打包,看一下生成的目錄結(jié)構(gòu)

 File                                   Size              Gzipped

  dist\js\chunk-vendors.239e820f.js      2544.36 KiB       703.20 KiB
  dist\js\index.1716ccad.js              11.33 KiB         4.13 KiB
  dist\js\home.e4410a07.js               7.08 KiB          2.57 KiB
  dist\js\about.ca80b2fc.js              0.76 KiB          0.29 KiB
  dist\css\chunk-vendors.68b49edf.css    666.01 KiB        89.04 KiB
  dist\css\index.5dfa7415.css            0.45 KiB          0.28 KiB
  dist\css\home.d995708f.css             0.44 KiB          0.27 KiB

  Images and other types of assets omitted.
  Build at: 2022-05-01T12:26:06.551Z - Hash: 693bf5bdcf72896b - Time: 16240ms

 DONE  Build complete. The dist directory is ready to be deployed.
 INFO  Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html 

可以看到打包出來的是混在一起的。我們下一步就是將他們拆分開,并且可配置命令單獨打包 思路是循環(huán)pages下文件夾 我們找出pages下目錄中帶有main.js的所有文件夾名。當然我們也可以手動寫死,每次增加頁面的時候,我們單獨維護這個數(shù)組

const pages = ['home', 'index'] // 在增加頁面的時候,手動維護這個數(shù)組 

當然我們也有方法可以幫我們維護這個數(shù)組,可以在我們更新的時候省事一些

// 獲取pages下文件夾
const path = require('path')
const glob = require('glob')
// 找到pages所在文件夾 hello-world\src\pages
const PATH_ENTRY = path.resolve(__dirname, '../src/pages')
// 匹配到pages路徑下 main.js 的文件
// [
//   'D:/測試項目/hello-world/src/pages/home/main.js',
//   'D:/測試項目/hello-world/src/pages/index/main.js'
// ]
const entryFilePaths = glob.sync(PATH_ENTRY + '/**/main.js')

const buildEntries = []
entryFilePaths.forEach((filePath) => {
  // 找到對應的文件名,index  home
  const FILENAME = filePath.match(/([^/]+)\/main\.js$/)[1]
  buildEntries.push(FILENAME)
})
module.exports = {
  buildEntries
} 

buildEntries 既為我們拿到的數(shù)組

現(xiàn)在我們繼續(xù)改造vue.config.js, 我們先通過更改package.json中的命令傳參的形式,根據(jù)我們傳遞的參數(shù),單獨打包對應的page

"scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "build:index": "vue-cli-service build index --no-clean", // 注意no-clean 不能清除文件,不然可能將文件夾下打包的其他page清理掉,如果是每次部署一個page,這就無所謂了
    "build:home": "vue-cli-service build home --no-clean",
    "build:prod": "vue-cli-service build",
    "_build": "node build/build.js",
    "lint": "vue-cli-service lint"
 } 

我們?nèi)绾文苣玫?傳入的index 或者home參數(shù)呢 結(jié)果是process.argv這個參數(shù)中可以取到,具體可以自行搜索下 process.argv為一個數(shù)組,第一項為可執(zhí)行文件的目錄 第二項為當前執(zhí)行的JavaScript文件路徑 剩余的是傳遞的參數(shù),就如我們傳遞的index 是在process.argv[3]中 現(xiàn)將vue.config.js改造如下

// 編譯配置的多頁面
const modules = {}
const isProduction = process.env.NODE_ENV === 'production'
const { buildEntries } = require('./config/getPages')

// 初始化頁面參數(shù)
function initPageParams(page) {
  modules
                            
                            

                        

相關(guān)文章

  • vue 使用鼠標滾動加載數(shù)據(jù)的例子

    vue 使用鼠標滾動加載數(shù)據(jù)的例子

    今天小編就為大家分享一篇vue 使用鼠標滾動加載數(shù)據(jù)的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • vue在install時node-sass@4.14.1?postinstall:node?scripts/build.js錯誤解決

    vue在install時node-sass@4.14.1?postinstall:node?scripts/buil

    最近在npm install 的時候遇到了個問題,所以給大家總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于vue在install時node-sass@4.14.1?postinstall:node?scripts/build.js錯誤的解決方法,需要的朋友可以參考下
    2023-05-05
  • vue項目中常用解決跨域的方法總結(jié)(CORS和Proxy)

    vue項目中常用解決跨域的方法總結(jié)(CORS和Proxy)

    在vue項目中,一般我們會遇到跨域的問題,vue項目中解決跨域是非常簡單的,下面這篇文章主要給大家介紹了關(guān)于vue項目中常用解決跨域的方法,主要解釋CROS和Proxy兩種方式,需要的朋友可以參考下
    2022-12-12
  • vue使用axios實現(xiàn)文件上傳進度的實時更新詳解

    vue使用axios實現(xiàn)文件上傳進度的實時更新詳解

    最近在學習axios,然后項目就用到了,所以這篇文章主要給大家介紹了關(guān)于vue中利用axios實現(xiàn)文件上傳進度的實時更新的相關(guān)資料,文中先對axios進行了簡單的介紹,方法大家理解學習,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-12-12
  • vue3導入excel并解析excel數(shù)據(jù)渲染到表格中(純前端實現(xiàn))

    vue3導入excel并解析excel數(shù)據(jù)渲染到表格中(純前端實現(xiàn))

    在Vue中實現(xiàn)導出Excel有多種方式,可以通過前端實現(xiàn),也可以通過前后端配合實現(xiàn),下面這篇文章主要給大家介紹了關(guān)于vue3導入excel并解析excel數(shù)據(jù)渲染到表格中的相關(guān)資料,文中介紹的方法是純前端實現(xiàn),需要的朋友可以參考下
    2024-04-04
  • 淺談vue父子組件怎么傳值

    淺談vue父子組件怎么傳值

    這篇文章主要介紹了淺談vue父子組件怎么傳值,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Vue開發(fā)之watch監(jiān)聽數(shù)組、對象、變量操作分析

    Vue開發(fā)之watch監(jiān)聽數(shù)組、對象、變量操作分析

    這篇文章主要介紹了Vue開發(fā)之watch監(jiān)聽數(shù)組、對象、變量操作,結(jié)合實例形式分析了vue.js使用Watch針對數(shù)組、對象、變量監(jiān)聽相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • 完美解決axios跨域請求出錯的問題

    完美解決axios跨域請求出錯的問題

    下面小編就為大家分享一篇完美解決axios跨域請求出錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • 解決Echarts2豎直datazoom滑動后顯示數(shù)據(jù)不全的問題

    解決Echarts2豎直datazoom滑動后顯示數(shù)據(jù)不全的問題

    這篇文章主要介紹了解決Echarts2豎直datazoom滑動后顯示數(shù)據(jù)不全的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Vue密碼登陸加密RSA實現(xiàn)方案

    Vue密碼登陸加密RSA實現(xiàn)方案

    這篇文章主要介紹了Vue密碼登陸加密RSA實現(xiàn)方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評論