vue 3 多页面应用(mpa)需在项目初始化后通过配置实现:vue cli 用 vue.config.js 的 pages 选项定义多入口,vite 则直接放置多个 html 文件并引入对应 js 入口,二者均生成独立 html,跳转用 a 标签。

Vue 3 项目初始化后配置多页面应用(MPA),核心是利用 Vue CLI 3+ 或 Vite 的多入口能力,不依赖 Vue Router 做全局跳转,而是为每个页面生成独立的 HTML 文件。关键不在“初始化时”就写死多页,而是在脚手架创建后,通过配置文件快速启用 MPA 支持。
用 Vue CLI 3+ 初始化并配置 pages
先确保已安装 Vue CLI:
- npm install -g @vue/cli(或使用 yarn global add @vue/cli)
- 执行 vue create my-mpa-app 创建标准 Vue 3 项目(选 TypeScript、Router、Pinia 等按需,不影响 MPA)
- 进入项目,编辑根目录下的 vue.config.js(若无则新建)
配置示例(定义首页和关于页):
module.exports = {
pages: {
index: {
entry: 'src/pages/index/main.js',
template: 'public/index.html',
filename: 'index.html',
title: '首页'
},
about: {
entry: 'src/pages/about/main.js',
template: 'public/about.html',
filename: 'about.html',
title: '关于我们'
}
}
}
注意:template 路径指向 public 下的 HTML 模板;entry 必须是 JS 入口,每个页面需有自己独立的 main.js 和根组件(如 App.vue)。
项目结构要提前规划好
推荐在 src/pages/ 下按页面分目录,避免混杂:
Vue 3 组合式 API 与 <script setup> 最佳实践,涵盖代码组织、useXxx 模式、组合式函数设计、Store 集成、响应式优化及功能抽取。</p> </div> <a rel="nofollow" href="/xiazai/skill8748" title="vue-composition-api-best-practices" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div> <ul> <li> <font color="#2E8B57">src/pages/index/</font> → <font color="#2E8B57">main.js</font> + <font color="#2E8B57">App.vue</font> </li> <li> <font color="#2E8B57">src/pages/about/</font> → <font color="#2E8B57">main.js</font> + <font color="#2E8B57">App.vue</font> </li> <li> <font color="#2E8B57">public/index.html</font> 和 <font color="#2E8B57">public/about.html</font> 可复用基础结构,仅修改 title 和 id 容器</li> </ul> <p>每个 <font color="#2E8B57">main.js</font> 写法与根目录一致,例如:</p> <pre class="brush:php;toolbar:false;">// src/pages/index/main.js import { createApp } from 'vue' import App from './App.vue' createApp(App).mount('#app')</pre> <h3>用 Vite 初始化并支持多页(更轻量推荐)</h3> <p>Vite 对 MPA 更友好,无需插件即可支持多 HTML 入口:</p> <ul> <li>运行 <font color="#2E8B57">npm create vite@latest</font>,选 Vue + JavaScript/TypeScript</li> <li>在项目根目录直接放多个 HTML 文件(如 <font color="#2E8B57">index.html</font>、<font color="#2E8B57">about.html</font>)</li> <li>每个 HTML 中用绝对路径引入对应入口 JS:<br><font color="#2E8B57"><script type="module" src="/src/pages/index/main.js"></script>
开发时访问 http://localhost:5173/ 和 http://localhost:5173/about.html 即可分别预览。
构建与部署注意事项
打包后每个页面生成独立 HTML,资源自动按页分割:
- Vue CLI:运行 npm run build,输出 dist/index.html 和 dist/about.html
- Vite:运行 npm run build,HTML 文件保留在 dist 根目录,JS/CSS 自动注入对应 HTML
- 部署时确保服务器能正确返回每个 HTML(如 Nginx 配置不要全部 fallback 到 index.html)
MPA 不需要全局路由守卫,页面间跳转用普通 a 标签即可,例如:关于我们。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!
相关文章
Vue 3 中异步组件怎么处理多语言包的异步加载与切换
Vue 路由守卫怎么在组件内使用 beforeRouteLeave 处理离开
Vue Router 怎么获取动态路由传递的路径参数
Vue 3 生命周期钩子怎么管理图表实例的初始化与销毁
Vue 3 组合式函数怎么处理离线缓存数据同步的逻辑
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn









