Vue3+Vite单页面应用(SPA)改造为多页面应用(MPA)

VUE3.0(一):vue3.0简介 阅读详情
AI摘要

本文介绍将 Vue 3 和 Vite 的单页面应用改造为多页面应用的方法。需调整项目结构,配置 Vite 支持多页面,创建入口文件和 HTML 文件,共享组件和样式。还提及开发与构建模式,以及路由管理、公共资源、性能和 SEO 优化等注意事项,适合多页面结构项目。

在 Vue 3 和 Vite 的单页面应用(SPA)中,改造为多页面应用(MPA)需要对项目结构和构建配置进行调整。Vite 提供了灵活的构建能力,可以通过配置支持多页面应用。以下是详细的改造步骤和实现方法:


一、项目结构调整

在 SPA 中,所有页面共享一个入口文件(通常是 main.js 或 main.ts)。而在 MPA 中,每个页面都有独立的入口文件。因此需要重新组织项目目录。

示例项目结构:
src/
├── pages/               # 存放多个页面的目录
│   ├── page1/           # 第一个页面
│   │   ├── main.js      # 页面入口文件
│   │   ├── App.vue      # 页面组件
│   │   └── assets/      # 页面资源
│   ├── page2/           # 第二个页面
│   │   ├── main.js
│   │   ├── App.vue
│   │   └── assets/
├── shared/              # 共享组件或工具
│   ├── components/
│   └── utils/
vite.config.js           # Vite 配置文件
index.html               # 默认 HTML 模板

二、配置 Vite 支持多页面应用

Vite 的多页面应用支持通过 build.rollupOptions.input 配置多个入口文件。我们需要修改 vite.config.js 文件。

示例配置:
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import path from 'path';

export default defineConfig({
  plugins: [vue()],
  build: {
    rollupOptions: {
      // 配置多页面入口
      input: {
        page1: path.resolve(__dirname, 'src/pages/page1/index.html'), // 第一个页面
        page2: path.resolve(__dirname, 'src/pages/page2/index.html'), // 第二个页面
      },
    },
  },
});

说明:

  • input 是一个对象,键是页面名称,值是对应的 HTML 文件路径。
  • 每个页面的 HTML 文件可以单独定义,也可以复用同一个模板。

三、创建多页面的入口文件

每个页面都需要一个独立的入口文件(如 main.js),用于初始化 Vue 实例。

示例:page1/main.js
import { createApp } from 'vue';
import App from './App.vue';

createApp(App).mount('#app');
示例:page2/main.js
import { createApp } from 'vue';
import App from './App.vue';

createApp(App).mount('#app');

四、创建多页面的 HTML 文件

每个页面需要一个独立的 HTML 文件,作为页面的模板。

示例:page1/index.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Page 1</title>
</head>
<body>
  <div id="app"></div>
  <script type="module" src="/src/pages/page1/main.js"></script>
</body>
</html>
示例:page2/index.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Page 2</title>
</head>
<body>
  <div id="app"></div>
  <script type="module" src="/src/pages/page2/main.js"></script>
</body>
</html>

五、共享组件和样式

如果多个页面之间需要共享组件或样式,可以将它们提取到 shared/ 目录下,并在各页面中按需引入。

示例:共享组件
// src/shared/components/Button.vue
<template>
  <button class="btn">{{ label }}</button>
</template>

<script>
export default {
  props: {
    label: String,
  },
};
</script>

在页面中使用:

import Button from '../../shared/components/Button.vue';

export default {
  components: { Button },
};
示例:共享样式
/* src/shared/styles/global.css */
body {
  margin: 0;
  font-family: Arial, sans-serif;
}

在页面入口文件中引入:

import '../../shared/styles/global.css';

六、开发与构建

  1. 开发模式:

    • 在开发模式下,Vite 会自动加载所有配置的入口文件。
    • 启动开发服务器:
      npm run dev
      
    • 访问不同页面时,URL 路径对应 input 配置中的键名。例如:
      • http://localhost:3000/page1 对应 page1。
      • http://localhost:3000/page2 对应 page2。
  2. 生产模式:

    • 构建项目:
      npm run build
      
    • 构建完成后,dist 目录下会生成多个页面的静态文件,每个页面对应一个独立的子目录。

七、注意事项

  1. 路由管理:

    • 如果每个页面需要独立的路由管理,可以在每个页面的入口文件中单独引入 Vue Router。
    • 例如,page1/router.js 和 page2/router.js 分别管理各自的路由。
  2. 公共资源:

    • 确保公共资源(如图片、字体等)在 public/ 目录下,避免重复加载。
  3. 性能优化:

    • 使用代码分割(Code Splitting)减少打包体积。
    • 对公共依赖(如 Vue、Vue Router 等)启用缓存。
  4. SEO 优化:

    • 如果需要更好的 SEO 支持,可以结合服务端渲染(SSR)或静态站点生成器(如 VitePress)。

八、总结

通过上述步骤,我们可以将 Vue 3 + Vite 的单页面应用改造为多页面应用。关键在于:

  1. 项目结构的调整:为每个页面创建独立的入口文件和 HTML 模板。
  2. Vite 配置的修改:通过 rollupOptions.input 配置多页面入口。
  3. 资源共享与优化:提取公共组件和样式,减少重复代码。

这种改造方式非常适合需要多页面结构的项目(如企业官网、管理后台等),同时保持了 Vite 的高性能和灵活性。

Vue3 多页面开发详解,详细配置、场景、问题及解决方案 在 Vue3 中,虽然默认推荐单页面应用(SPA),但多页面应用(MPA)在一些场景下更合适。 阅读详情

相关推荐

Vite多页面应用(MPA)改造实战指南

前端构建工具Vite凭借其快速的冷启动和热更新能力,已成为现代Web开发的重要选择。在大型项目架构中,多页面应用(MPA)模式能有效实现模块解耦和独立部署。通过配置Vite的rollupOptions.input参数,开发者可以灵活定义多个入口点,配合动态路由和代码分割策略,既能保持开发体验的一致性,又能获得更好的运行时性能。这种架构特别适合包含多个独立子系统的项目,如电商平台的主站与后台管理系统分离的场景。文章详细介绍了从SPA到MPA的迁移路径,包括目录结构调整、公共代码优化等核心实践。

weixin_29224589的博客 142

vue3+vite+多页面应用(MPA)示例

多页面应用无非就是单页面应用的扩展,如主页index.html,管理后台account/admin.html,购物车cart/cart.html,用户后台user/userhome.html,需要配置三个地方:根目录放挂载文件,vite.config.ts配置入口文件路径,具体资源文件编写。新建各应用挂载点文件,index.html, /account/index.html, /cart/cart.html, /user/userhome.html。密码:

dugucike的专栏 2701

Vite多入口页面配置实战:从零搭建多页面应用

本文详细介绍了如何使用Vite从零开始配置多入口页面,以构建多页面应用(MPA)。通过实战演示了项目初始化、目录结构规划、核心配置步骤,并深入讲解了如何通过Rollup选项实现多入口配置与代码分割优化,旨在帮助开发者灵活管理多个独立页面,提升项目构建效率与可维护性。

weixin_27734811的博客 439

vue3-ts-vite:vue 项目 配置 多页面应用

Vue是一种单页面应用程序(SPA)框架,这意味着Vue应用程序通常只有一个HTML页面,而在该页面上进行动态的内容更改,而不是每次都加载新的HTML页面。但是,有时候我们需要在同一应用程序中拥有多个独立的页面,每个页面都可以单独处理路由和逻辑。这就是多页面应用(MPA)的概念。在Vue中,实现多页面应用程序的方法是使用Vue的多入口特性,即通过配置多个入口文件来实现。每个入口文件都有自己的路由配置、组件和其他相关资源。

snow的博客 1万+

Vue3+Vite多页面项目实战:如何用env变量动态切换入口文件?

本文详细介绍了在Vue3+Vite多页面项目中如何利用env环境变量动态切换入口文件的实战方案。通过vite.config.ts配置和模块化项目结构设计,实现业务模块的灵活切换与公共代码复用,提升开发效率和构建性能,特别适合需要维护多个独立模块的场景。

weixin_30752699的博客 475

Vite-第9篇:Vite在多页面应用中的实践

本文介绍了如何在Vite中高效开发多页面应用。首先,合理的项目结构设计是基础,建议将页面、静态资源和可复用组件分别存放在src/pages、src/assets和src/components目录中,并遵循统一的文件命名规范。其次,通过配置vite.config.js中的build.rollupOptions.input来指定多页面入口,并借助vite-plugin-html插件自动生成HTML文件。此外,文章还探讨了页面间资源共享与优化的方法,如使用公共CSS和JavaScript文件、代码分割以及静态资源

无 544

Vue3+Vite单页面改造多页面实操:配置、原理与踩坑记录

单页面应用(SPA)与多页面应用(MPA)的本质区别不在页面数量,而在HTML入口数量。理解这一原理后,借助Vite的build.rollupOptions.input配置,可以让一个Vue3工程同时产出多个独立HTML页面,实现业务隔离、独立部署和按需缓存。该方案尤其适合后台管理系统与营销活动页并存、多模块独立交付等场景。实际改造中常遇到跨平台问题,例如在Windows下设置NODE_OPTIONS会报错'node_options' 不是内部或外部命令;同时需注意浏览器兼容性,比如Vue3项目在Edge浏

weixin_29012677的博客 220

手把手教你理解ARM SoC中的PPU:电源管理IP的配置与实战避坑指南

本文深入解析ARM SoC中的PPU(Power Policy Unit)电源管理IP,提供详细的配置指南与实战避坑技巧。从PPU基础架构、寄存器配置到与PCSM的协同工作,全面介绍如何优化电源管理策略,解决常见配置误区,并分享高级调试与性能优化方法,助力工程师提升低功耗SoC设计效率。

weixin_28693447的博客 481

Vue3+Vite单页面改多页面实践:从配置到部署的完整指南

前端工程化中,构建工具与项目架构的匹配程度直接影响开发效率和部署体验。Vite 作为现代构建工具,凭借其简洁的配置和灵活的插件机制,为多页面应用(MPA)提供了高效解决方案。在多页面架构下,每个页面拥有独立入口 HTML,可单独设置 SEO 信息、按需加载资源,并能通过 rollupOptions 精准控制构建产物。这种模式尤其适合后台管理子系统拆分、独立活动页落地及首屏性能优化等场景。然而从单页面(SPA)迁移至 MPA 并非仅调整配置,还需重构目录结构、区分公共模块、处理路由模式及部署路径。本文基于 V

weixin_30972263的博客 75

保姆级教程:在Ubuntu 22.04上用Conda搞定nuPlan数据集环境(Python 3.9 + PyTorch)

本文提供了一份详细的Ubuntu 22.04环境下使用Conda配置nuPlan自动驾驶数据集的保姆级教程,涵盖Python 3.9安装、Conda环境管理、PyTorch配置及数据集可视化验证等关键步骤,帮助开发者高效搭建开发环境。

weixin_29061997的博客 257

将点云坐标转换成世界坐标的demo

将点云坐标转换成世界坐标的demo

howard789的博客 2208

通过VITE/rollup实现一个工程的代码分别打包成SPA(单页面应用)和MPA(多页面应用)

本文介绍了对于一个使用vue开发好的标准工程,如何通过在打包中加入插件,从而使其能够按照不同的方式,分别打包成单页面应用和多页面应用。由于只介入了打包的过程,因此对于源代码是没有侵入性和污染的。只需要源代码按照一定的方式来书写即可。

2401_88352022的博客 2451

嵌入式设备系统日志记录及调试技巧_嵌入式日志系统(1),如何成为杰出的程序员

这里面我使用的芯片为哈弗体系,全局常量存储编译器默认分配在flash,需要注意如果使用片内flash时,注意存储调试等级的flash块不要与代码区重合,要不然修改调试等级擦除flash块同时PC指针指向当前块的代码区,会导致仪器死机;这个也是之前用的比较多的,以上代码是模仿linux 内核的写法,可以比较好的做到日志信息分层,编译时相加对应的编译开关即可。但有个弊端就是,切换debug等级时,需要重新编译且需更新固件,而嵌入式设备出现异常后更新固件往往复位后,故障有时很难复现,调试起来比较浪费时间。

2401_84240431的博客 1296

Vue 单页面应用 (SPA) 与 多页面应用 (MPA) 对比

在 Vue 开发中,单页面应用(SPA)和多页面应用(MPA)是前端项目的两种核心架构模式,也是前端面试高频考点、项目选型的核心依据。不管是 Vue2 还是 Vue3,都能同时支持这两种架构模式,二者没有绝对的优劣,只有场景适配性的差异。结合你前面问到的 Vue2/Vue3、Vuex/Pinia 知识点,本文会把「SPA/MPA」和 Vue 生态深度结合,从概念、核心差异、优缺点、适用场景、Vue 中实战配置、SEO 解决方案。

萌新程序员的博客,觉得有用的可以点点关注 883

Android开发者必看:5分钟搞定MQTT客户端连接EMQX服务器(附完整代码)

本文为Android开发者提供了一份快速实现MQTT客户端连接EMQX服务器的实战指南。通过引入Eclipse Paho SDK,详细讲解了从项目配置、权限申请到核心连接、主题订阅与消息发布的完整流程,并附有即拿即用的Kotlin代码,帮助开发者在物联网应用中高效集成轻量级实时通信功能。

weixin_29228781的博客 272

IPD的分析工具与模型(十六)CBB公用基础模块管理实现资源共享,缩短开发周期

CBB流程的开发环节,基于CBB规划中所识别和设计的CBB,进行CBB的详细设计(包括参数设计和接口设计),并最终实现CBB的落地开发。作为特殊类型的技术构件,CBB的开发流程,可沿用技术开发中的构件开发流程,具体包括概念、计划、开发和迁移等步骤,具体可参见前文的相关介绍。有了蓝图与架构设计,落地实施是关键攻坚。具体工作内容包括:具体工作内容包括:a. 以相似性、聚类、相对独行性、可组合、可扩展性、可维护性等原则为指导,按照产品的功能特征和业务类型,聚焦零散的功能点,形成功能模块,实现产品功能模块的划分;

corgi2020的博客 2006

2023 最新最细 vite+vue3+ts 多页面项目架构,建议收藏备用!

在搭建的过程中,一定要注意因为修改了项目根目录(root)所带来的问题,利用将路径重置到相对于项目根的位置!关于如何使用这个多页面脚手架,可以看 README.md 文件。github地址。

坚信万物皆可切的切图仔 1万+

TC3XX - MCAL知识点(二十九):FLS MCAL配置及代码实战(英飞凌DFLASH)

FLS驱动程序为DFlash 0的初始化、读取、写入和擦除提供了定义良好的配置和标准服务。除此之外,我们还提供一些非autosar服务示例 Fls_17_Dmu_CompareWordsSync、Fls_17_Dmu_CancelNonEraseJobs、Fls_17_Dmu_VerifyErase,LFls_17_Dmu_VerifySectorErase、Fls_17_Dmu_GetNotifCaller等。用户通过FLS驱动程序获得对底层DFlash0的封装访问。

梦想技术家 2365

Vue单页面应用和多页面应用

单页面应用是一种应用架构,在这种架构中,整个应用只会加载一个 HTML 文件,并且所有的页面内容都是在这个页面内通过动态更新的方式渲染出来的。当用户与应用交互时,只有页面的部分内容会更新,而不需要重新加载整个页面。多页面应用是指一个包含多个独立页面的网站,每个页面通常都是一个独立的 HTML 文件,用户访问不同页面时,浏览器会重新加载不同的 HTML 文件,且每个页面通常会有自己的路由和业务逻辑。特点单页面应用 (SPA)多页面应用 (MPA)页面刷新无需完全刷新,局部更新每个页面都独立刷新路由管理。

gklcsdn的博客 2060

YOLOv12改进策略【小目标改进】| Shape-NWD:融合改进,结合Shape-IoU和NWD 更好地适应小目标特性

Bw−wgt2h−hgt2weight2Bweight2w−wgt​2h−hgt​2​其中weight2weight = 2weight2。

Limiiiing的博客 760

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Vue3+Vite MPA多页面应用开发完整指南 – 从零搭建到部署优化

深入解析Vue3+Vite MPA多页面应用开发,包含项目结构设计、路由配置、状态管理、组件复用等核心内容。提供完整的开发指南和性能优化方案,适合大型项目开发。

前端开发-前端技术分享 1115

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Vite多页面应用(MPA)架构实战指南

多页面应用(MPA)是传统Web开发中的经典架构模式,通过物理隔离不同功能模块实现更好的工程解耦和独立部署能力。与单页面应用(SPA)相比,MPA在模块独立性、渐进式技术栈迁移和SEO友好性方面具有显著优势。现代构建工具如Vite通过原生Rollup集成和动态页面扫描能力,使MPA配置变得异常简单。本文以Vue3技术栈为例,详解如何通过Vite的rollupOptions配置实现多入口打包,包括动态HTML模板处理、模块联邦微前端集成等进阶技巧。针对企业级应用中常见的路由隔离、状态管理、Nginx部署等场景

weixin_30621465的博客 331

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Vue3+Vite单页应用改造多页应用实战指南

单页应用(SPA)与多页应用(MPA)是现代Web开发中的两种核心架构模式。SPA通过动态加载内容提供流畅交互,而MPA则更利于SEO优化和独立部署。Vite作为新一代构建工具,其原生ESM支持使得MPA配置更加高效。通过合理设计文件结构和配置rollupOptions.input,开发者可以轻松实现Vue3项目的多页面改造。这种架构特别适合企业官网、电商平台等内容型网站,能显著提升首屏加载速度和搜索引擎收录率。结合vite-plugin-ssr等插件,还能进一步优化SEO效果。

weixin_28197941的博客 26

vue -- 单页面应用和多页面应用区别及优缺点

Vue单页面应用(SPA)和多页面应用(MPA)是两种常见的前端应用架构模式,它们在开发方式、性能以及用户体验方面有着不同的特点。

2301_79420857的博客 647

Vite 7.0 多页面架构(MPA)现代演进:基于 Rolldown 的独立 HTML 统一分块

很多刚接触出海 SaaS 开发的工程师,习惯了“一个index.html走天下”的 SPA 单页面应用思维。无论产品规模多大,把官网 Landing Page、文档中心(Docs)、用户认证注册页(Auth)、结账付款页(Checkout)以及内部重型控制台(Dashboard)统统塞进同一个 Vue Router 或者 React Router 路由表中。import()在中,底层全面基于 Rust 重构的。

weixin_49475940的博客 1550
上一篇: axios 请求的底层依赖是什么?
下一篇: C语言简介
getapi
博客等级 码龄2年 618粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值