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

1,185 阅读3分钟

在 Vue 开发中,默认创建的项目通常是单页面应用(SPA)。然而,在某些特定场景下,我们可能需要将其改造成多页面应用(MPA)以满足不同的业务需求。以下是详细的改造步骤,以通过 Vue CLI 创建的项目为例进行说明。

1. 创建项目

在开始之前,请确保你已经正确安装了 npm(推荐 node.js v20+)。安装完成后,我们可以使用以下命令创建一个新的 Vue 项目:

npm create vue@latest
# 按照脚手架的提示信息,创建一个名称为 my-mpa-project 的项目,创建完成后进入该项目目录
cd my-mpa-project

2. 配置多页面

2.1 新增目录结构

为了支持多个静态页面,我们需要创建一个新的目录 src/pages/。接着,将 index.htmlsrc/App.vuesrc/main.js 文件移动到 src/pages/index/ 目录下。在移动文件后,需要调整页面中的组件引用地址,确保所有引用的地址都是正确的。以下是修改后的 index.html 文件示例:

<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>首页</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/pages/index/main.js"></script>
  </body>
</html>

2.2 创建一个新页面

为了实现多页面应用,我们可以复制 src/pages/index 目录到 src/pages/about 目录。复制完成后,需要调整 about 目录下 index.html 文件中的 script 地址,使其指向正确的 main.js 文件。调整后的 index.html 文件内容如下:

<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>关于我们</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/pages/about/main.js"></script>
  </body>
</html>

2.3 集成多页面插件

为了更好地管理多页面应用,我们需要集成一个多页面插件。这里我们使用 vite-plugin-mpa 插件,可以通过以下命令进行安装:

npm install -D vite-plugin-mpa

安装完成后,需要修改 vite.config.js 文件,添加与多页面应用相关的配置代码。具体代码如下:

import mpa from 'vite-plugin-mpa';

export default defineConfig({
  base: '/',
  plugins: [
    ...
    mpa.default({
      open: 'index/index.html',
      scanDir: 'src/pages',
      scanFile: 'main.js',
      filename: 'index.html',
    }),
  ],
})

3. 多页面路由支持(可选)

如果你的项目需要不同的页面使用不同的路由,可以将 src/router/index.js 文件复制为 indexRouter.jsaboutRouter.js,并分别用于不同的页面。复制完成后,需要同步调整页面 main.js 文件中的路由引用地址,确保路由的正确使用。

4. 运行和构建项目

4.1 运行项目

使用以下命令运行项目:

npm run dev

项目运行后,你可以通过 http://localhost:5173/index/http://localhost:5173/about/ 访问不同的页面,检查多页面应用是否正常工作。

4.2 构建项目

当项目开发完成后,需要进行构建以生成生产环境所需的文件。使用以下命令进行项目构建:

npm run build

构建完成后,在 dist 目录下会生成多个 HTML 文件目录,这些目录包含了多页面应用的静态文件。

通过以上步骤,你就可以将 Vue 的单页面应用成功改造成多页面应用。

项目地址源码github.com/midfar/my-m…

在线示例