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

vue3+vite配置多頁面的示例代碼

 更新時間:2023年06月16日 14:40:33   作者:清風白水  
通過配置多頁面應用,從而將給子模塊依賴分隔開各自加載,可以減少初始資源的請求,加快頁面的訪問速度,這篇文章主要介紹了vue3+vite配置多頁面的詳細過程,需要的朋友可以參考下

通過配置多頁面應用,從而將給子模塊依賴分隔開各自加載,可以減少初始資源的請求,加快頁面的訪問速度。
比如我們有很多H5頁面,并且相互獨立,比如報修,購卡,計價規(guī)則等等,那我們?nèi)绻L問購卡,只需要通過/buyCards/進行訪問,不需要初始資源的加載支持。

目錄結(jié)構(gòu)

├── build       打包后的靜態(tài)資源目錄
├── mock            mock服務 todo
└── src             項目資源目錄
    └── assets          項目靜態(tài)資源
    ├── common          全局方法公共庫
        └── utils.ts            全局公共方法
        └── constants.ts        全局公共常量
    ├── components      公共組件
    ├── interface       公共模型
    ├── pages           頁面模塊
        ├── xxx         頁面模塊A
            ├── apis            接口定義
            ├── components      頁面組件
            └── router          路由配置
            └── store           store配置
            └── common           模塊公共庫
                └── utils.ts           模塊公共工具方法
                └── constants.ts        模塊常量
                └── eventMap.ts         模塊埋點枚舉
            └── views           模塊頁面
            └── App.vue         入口根節(jié)點
            └── index.html      入口頁面
            └── main.ts         入口頁面文件
        ├── xxx         頁面模塊B
            ├── apis            接口定義
            ├── components      頁面組件
            └── router          路由配置
            └── store           store配置
            └── common           模塊公共庫
                └── utils.ts           模塊公共工具方法
                └── constants.ts        模塊常量
                └── eventMap.ts         模塊埋點枚舉
            └── views           模塊頁面
            └── App.vue         入口根節(jié)點
            └── index.html      入口頁面
            └── main.ts         入口頁面文件
        ├── xxx         初始化入口文件
    ├── style                   公共樣式模塊
    ├── types                   依賴庫類型定義
    └── .browserslistrc         瀏覽器兼容配置
    └── .eslintignore           eslint忽略文件配置
    └── .eslintrc.cjs           eslint規(guī)則配置
    └── .gitignore              gitignore配置
    └── .prettierignore         prettier忽略文件配置
    └── .prettierrrc.js         prettier文件配置
    └── .vue.config.ts          項目打包配置文件

src/index.html是默認啟動初始化項目時候的一個入口文件,代碼如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>初始化頁面路由</title>
</head>
<body>
  <p><a href="">重定向頁面</a></p>
<script>
</script>
</body>
</html>

vite配置多頁面 vite.config

修改root

修改root參數(shù)為多頁面的根目錄: 根據(jù)不同的目錄結(jié)構(gòu)而修改
● 類型: string
● 默認: process.cwd()
項目根目錄(index.html 文件所在的位置)??梢允且粋€絕對路徑,或者一個相對于該配置文件本身的相對路徑。
根據(jù)上述目錄工程里,所以修改為root: './src/pages'

修改base

base修改為'/',避免后續(xù)打包路徑有問題
● 類型: string
● 默認: /
開發(fā)或生產(chǎn)環(huán)境服務的公共基礎路徑。合法的值包括以下幾種:
● 絕對 URL 路徑名,例如 /foo/
● 完整的 URL,例如 https://foo.com/● 空字符串或 ./(用于嵌入形式的開發(fā))

修改build.outDir

outDir: resolve(process.cwd(), 'build'), // 指定輸出路徑(相對于 項目根目錄)
● 類型: string
● 默認: dist
指定輸出路徑(相對于 項目根目錄).

修改rollupOptions.input

rollupOptions.input配置多個頁面的輸入,可以動態(tài)根據(jù)/pages文件夾下讀取,可參考如下代碼

const getEntryPath = (globPath: string) => {
  const pageEntry = {}
  glob.sync("./src/pages/**/index.html").forEach((entry: string) => {
    const pathArr: string = entry.split("/");
    const name: string = pathArr[pathArr.length - 2];
    pageEntry[name] = join(process.cwd(), `/src/pages/${name}/index.html`)
  })
  delete pageEntry.pages
  delete pageEntry.index //此處是為了刪除初始化頁面,這個可根據(jù)頁面需要自行決定
  return pageEntry // 整體效果如下圖
}
// 自定義底層的 Rollup 打包配置
rollupOptions: {
  input: getEntryPath()
}

訪問頁面

頁面A:http://127.0.0.1:8080/newWallet/index.html#/頁面B:http://127.0.0.1:8080/demo/index.html#/

以下是完整vite.config 僅供參考

import { defineConfig,loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import path, { resolve, join } from 'path'
import autoprefixer from 'autoprefixer';
import postCssPxToRem from 'postcss-pxtorem';
import AutoImport from "unplugin-auto-import/vite"
import glob from "glob";
import eslintPlugin from 'vite-plugin-eslint' //導入包
const assetsPath = (path: string) => {
  return join('static', path)
}
const getEntryPath = (globPath: string) => {
  const pageEntry = {}
  glob.sync("./src/pages/**/index.html").forEach((entry: string) => {
    const pathArr: string = entry.split("/");
    const name: string = pathArr[pathArr.length - 2];
    pageEntry[name] = join(process.cwd(), `/src/pages/${name}/index.html`)
  })
  delete pageEntry.pages
  delete pageEntry.index
  console.log(pageEntry)
  return pageEntry
}
export default defineConfig({
  root: './src/pages',
  base: '/',     
  define: {},
  plugins: [
    vue(),
    AutoImport ({
      imports: ["vue", "vue-router", "pinia"], // 自動導入vue和vue-router相關(guān)函數(shù)(只有組件里哦,ts或js文件里面不行~~~)
      dts: 'types/auto-import.d.ts' //生成全局引入的文件
    }),
    // 增加下面的配置項,這樣在運行時就能檢查eslint規(guī)范
    eslintPlugin({
      include: ['src/**/*.js', 'src/**/*.vue', 'src/*.js', 'src/*.vue'],
      exclude: ['./node_modules/**', './src/types/**'],
      cache: false
    }),
  ],    
  resolve: { 
    alias: [
      {
        find: "@",
        replacement: resolve(__dirname, "src")
      }
    ] 
  },  
  css: {
    postcss: {
      plugins: [
        autoprefixer({
          overrideBrowserslist: ['Android 4.1', 'iOS 7.1', 'Chrome > 31', 'ff > 31', 'ie >= 8'],
        }),
        postCssPxToRem({
          // 自適應,px>rem轉(zhuǎn)換
          rootValue: 75, // 75表示750設計稿,37.5表示375設計稿
          propList: ['*'], // 需要轉(zhuǎn)換的屬性,這里選擇全部都進行轉(zhuǎn)換
          selectorBlackList: ['norem'], // 過濾掉norem-開頭的class,不進行rem轉(zhuǎn)換
        }),
      ],
    }
  },
  server: {
    host: 'localhost',        // 指定服務器應該監(jiān)聽哪個 IP 地址
    port: 8080,               // 端口
    strictPort: false, // 若端口已被占用,嘗試下移一格端口
    open: true,   
    proxy: {                
      '/gateway': {
        target: process.env.VITE_API_URL || 'https://pinzhi.didichuxing.com',
        ws: true,
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ''),
      },
    },
  },
  build: {
    outDir: resolve(process.cwd(),'build'),// 指定輸出路徑(相對于 項目根目錄)
    sourcemap: false, // 構(gòu)建后是否生成 source map 文件
    chunkSizeWarningLimit: 1500, // 規(guī)定觸發(fā)警告的 chunk(文件塊) 大小
    assetsDir: 'static',
    minify: 'esbuild',
    rollupOptions: {  // 自定義底層的 Rollup 打包配置
      input: getEntryPath(), 
      output: {
        entryFileNames: assetsPath('js/[name].js'),
        chunkFileNames: assetsPath('js/[name].js'),
        assetFileNames: assetsPath('css/[name].[ext]'),
        compact: true,
        manualChunks: (id: string) => {
          if(id.includes("node_modules")) {
            return id.toString().split('node_modules/')[1].split('/')[0].toString(); // 拆分多個vendors
          }
        }
      },
    },
    emptyOutDir: true,
  }
})

到此這篇關(guān)于vue3+vite配置多頁面的文章就介紹到這了,更多相關(guān)vue3 vite配置多頁面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue 的 Render 函數(shù)

    vue 的 Render 函數(shù)

    Vue 推薦在絕大多數(shù)情況下使用模板來創(chuàng)建你的 HTML。然而在一些場景中,你真的需要 JavaScript 的完全編程的能力。這時你可以用渲染函數(shù),它比模板更接近編譯器。下面就和小編一起來學習下面文章內(nèi)容吧
    2021-09-09
  • 使用Vue3創(chuàng)建多布局系統(tǒng)的三種方法

    使用Vue3創(chuàng)建多布局系統(tǒng)的三種方法

    布局是中大型網(wǎng)站或應用的基礎,假設你正在創(chuàng)建一個網(wǎng)頁應用,它包括主頁、營銷頁面和應用頁面,你不會想要為每一頁重復所有的工作,對吧,與Nuxt不同,Vue 3并沒有內(nèi)置的布局系統(tǒng),但是別擔心,這里將向你展示3種簡單的方法來實現(xiàn)這一點,需要的朋友可以參考下
    2023-08-08
  • Vue3中操作dom的四種方式總結(jié)(建議收藏!)

    Vue3中操作dom的四種方式總結(jié)(建議收藏!)

    VUE是通過傳遞一些配置給Vue對象和頁面中引用插值表達式來操作DOM的,下面這篇文章主要給大家介紹了關(guān)于Vue3中操作dom的四種方式總結(jié),文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • vue 里面的 $forceUpdate() 強制實例重新渲染操作

    vue 里面的 $forceUpdate() 強制實例重新渲染操作

    這篇文章主要介紹了vue 里面的 $forceUpdate() 強制實例重新渲染操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue引入js數(shù)字小鍵盤的實現(xiàn)代碼

    vue引入js數(shù)字小鍵盤的實現(xiàn)代碼

    這篇文章主要介紹了vue引入js數(shù)字小鍵盤的實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-05-05
  • vue3使用高德地圖,自定義點標記、默認點聚合樣式、點擊點標記獲取信息

    vue3使用高德地圖,自定義點標記、默認點聚合樣式、點擊點標記獲取信息

    這篇文章主要介紹了vue3使用高德地圖,自定義點標記、默認點聚合樣式、點擊點標記獲取信息的相關(guān)知識,本文結(jié)合示例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • Vue自嵌套樹組件使用方法詳解

    Vue自嵌套樹組件使用方法詳解

    這篇文章主要為大家詳細介紹了Vue自嵌套樹組件的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue實現(xiàn)移動端適方案的完整步驟

    vue實現(xiàn)移動端適方案的完整步驟

    現(xiàn)在的手機五花八門,造就了移動端窗口分辨率繁多的局面,在不同分辨率的屏幕下保持與UI圖一致的效果,就成了讓前端不得不頭疼的問題,下面這篇文章主要給大家介紹了vue實現(xiàn)移動端適方案的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • vue+element+Java實現(xiàn)批量刪除功能

    vue+element+Java實現(xiàn)批量刪除功能

    這篇文章主要介紹了vue+element+Java實現(xiàn)批量刪除功能,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • vue導入.md文件的步驟(markdown轉(zhuǎn)HTML)

    vue導入.md文件的步驟(markdown轉(zhuǎn)HTML)

    這篇文章主要介紹了vue導入.md文件的步驟(markdown轉(zhuǎn)HTML),幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-12-12

最新評論