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)

相关推荐
gc_229936 分钟前
Vue框架学习(1:环境搭建)
vue.js
原则猫1 小时前
UDP 到底怎么实现可靠的
前端
Java后端的Ai之路1 小时前
14、ReactJS - 路由(Router)
前端·react.js·状态模式
持敬chijing1 小时前
白盒测试与代码审计-js登录逆向实战
javascript·网络·安全·web安全·网络安全·网络攻击模型
优选资源分享2 小时前
PicGo v3.0.3 新版 | 开源免费图床工具
javascript·笔记·electron
裕晟资质规划3 小时前
三类涉密资质延续时限差异分析:军工60日与集成印制3个月的边界
java·服务器·前端·网络·安全
ShineWinsu3 小时前
对于JavaScript:JavaScript基础语法的解析
开发语言·前端·javascript·面试·web·基础语法·循环
月夏3 小时前
Vue3 转 React:18 项对照表 + 5 个必踩的坑(附 7 天上手路线)
前端
广州华水科技3 小时前
单北斗GNSS位移监测系统的应用与维护解析
前端
普通人64 小时前
php+html+canvas实现树状打开的结构
开发语言·javascript·html5·1024程序员节