vue多页面应用MPA

与单页面应用(SPA)只有一个 index.html 不同,MPA 要求每个页面都有自己独立的 HTML 入口文件和 JS 入口文件。以下是一个具体的工程化实战例子:

1,在 src 目录下创建一个 pages 文件夹,将每个页面的入口独立存放:
pages -> about->index.html 以及 main.js

index.html

html 复制代码
<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="utf-8" />
    <meta name="renderer" content="webkit" />
    <meta http-equiv="Expires" content="0" />
    <meta http-equiv="Cache" content="no-cache" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Cache-control" content="no-cache" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="force-rendering" content="webkit" />
    <meta name="google" content="notranslate" />
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0" />

    <link rel="Bookmark" href="static/favorite.ico" />
    <link
      rel="shortcut icon"
      type="image/x-icon"
      media="screen"
      href="static/favorite.ico"
    />
    <link
      rel="stylesheet"
      href="static/external/normalize/8.0.1/normalize.min.css"
    />
    <link rel="stylesheet" href="static/external/element-ui/index.css" />
    <link
      rel="stylesheet"
      href="static/external/animate.css/4.1.0/animate.min.css"
    />
    <link
      rel="stylesheet"
      href="static/external/hover.css/2.3.2/hover-min.css"
    />
    <link
      rel="stylesheet"
      href="static/external/font-awesome/5.11.2/css/font-awesome.min.css"
    />
    <title>模块预览</title>
  </head>

  <body>
    <div id="app"></div>
    <script src="static/external/vue/<%= process.env.NODE_ENV==='development' ? 'vue.js' : 'vue.min.js' %>"></script>
    <script src="static/external/vuex/vuex.min.js"></script>
    <script src="static/external/vue-router/vue-router.min.js"></script>
    <script src="static/external/axios/axios.min.js"></script>
    <script src="static/external/dayjs/1.9.7/dayjs.min.js"></script>
    <script src="static/external/dayjs/1.9.7/zh-cn.js"></script>
    <script src="static/external/jquery/jquery.min.js"></script>
    <script src="static/external/element-ui/index.js"></script>
    <script src="static/config/system.js"></script>
    <script
      type="text/javascript"
      src="static/external/tinymce/tinymce.min.js"
    ></script>
    <script>
      dayjs.locale('zh-cn')
    </script>
  </body>
</html>

main.js

javascript 复制代码
import '@/assets/index.scss'
import Vue from 'vue'
import Zujian from 'zujianku'
import store from '@/store'
import { apiHelper } from 'vue-x-axios'
import { requestConfig } from '@/config'
import yemiandaima from '@/views/yemiandaima/index.vue'

Vue.config.productionTip = false
Vue.prototype.$ELEMENT = { size: 'mini' }
Vue.use(Zujian)

apiHelper.register(requestConfig).then(() => {
  new Vue({
    store,
    render: h => h(yemiandaima)
  }).$mount('#app')
})

2,配置:vue.config.js

声明所有的 HTML 入口文件路径:

javascript 复制代码
const { defineConfig } = require('...')

module.exports = defineConfig({
  pages: {
    index: {
      entry: 'src/main.js'
    },
    'about': {
      name: 'about',
      template: 'src/pages/about/index.html',
      entry: 'src/pages/about/main.js',
      filename: 'about.html'
    }
  },
  // webpack配置
  chainWebpack: config => {...}
})

最终打包后的 dist 目录会生成多个独立的 HTML 文件(如 index.html、about.html)

相关推荐
FRing033 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
Penge6664 小时前
《Go 后端开发者学 TypeScript:typescript 类型断言》
javascript
Penge6664 小时前
《Go 后端开发者学 TypeScript:Symbol》
javascript
疯华整猫6 小时前
被杀掉之后:我把 Android 的「唤起 + 常驻」重做了一遍
前端·面试·架构
ruanno_top6 小时前
点全选,已选的被清空了:Transfer 三态复选框的三个 bug
vue.js
三*一7 小时前
Mapbox‑GL JS 多边形折点编辑工具:实现原理、功能拆解与踩坑总结
开发语言·javascript·ecmascript
时间的情敌7 小时前
Cesium 加载 3D Tiles 倾斜摄影、压平、样式设置(Vue3 实战)
vue.js·3d·cesium
IT_陈寒8 小时前
Java开发实战:从入门到精通
前端·人工智能·后端
FungLeo8 小时前
成为全栈·基础补充·Node.js 运行时:事件循环与异步
javascript·node.js·事件循环·后端开发·异步编程·成为全栈
风骏时光牛马8 小时前
生成一个AI转岗经历标题,只需要一个标题,不需要其他的任何文本。
前端