灰儿 发表于 2022-8-2 17:03:48

Vue配置多页面应用

Vue配置多页面应用
vue常用单页面开发,在系统越做越大的时候,常会在系统内嵌套另外的页面,单页面程序已经不太适用了。

单页面应用(SinglePage Web Application,简称SPA)
只有一个html页面,只需要一开始加载一次js、css的相关资源。所有内容都包含在主页面。跳转是通过组件的切换完成的,跳转较为流畅,组件化开发,易维护。缺点:首次进入加载过慢,只能刷新局部资源。

多页面应用(MultiPage Application,简称MPA)
有多个html页面,每个页面都需要加载js、css的相关资源,首屏加载较快。缺点:跳转较慢。

多页面应用配置
单页面程序在这里不做过多介绍,接下来已vue3脚手架为例介绍多页面程序如何配置:

1. 创建项目后创建vue.config.js文件,配置多页面的映射
module.exports = {
    pages: {
      system: {
            // 入口文件
            template: "src/pages/system/index.html",   // 模板文件
            entry: "src/pages/system/index.js",// 这个是根入口文件
            filename: "system.html",   // 输出文件
            title: "system" // 页面title
      }
    }
}
每一个页面都可以拥有一份独立的配置,如路由、vuex等,下面是我的配置目录:


index.html 可以将public/index.html 文件复制过来,当然,这个要看你自己了,在我的目录中index.js相当于main.js,其余的和单页面程序配置一致,就不一一说明了。

2. 但是当需要配置很多页面的时候,这样一个一个页面配置就稍微麻烦一点了,所以可以利用glob包来进行配置。glob模块包用于检索相应所匹配的目录。

glob下载
$ npm install glob --save-dev

vue.config.js配置
// 引入
const glob = require('glob')

function getEntry() {
    let entrys = {}
    // 获取pages目录下后缀为html的路径
    glob.sync('./src/pages/**?/*.html').forEach(item => {
      // 获取页面匹配名称
      let urlArr = item.split('/').splice(-3)
      entrys] = {
            entry: 'src/pages/' + urlArr + '/index.js',
            template: 'src/pages/' + urlArr + '/index.html',
            filename: urlArr + '.html',
            title: 'pages-' + urlArr
      }
    })
    return entrys
}

let pages = getEntry()

module.exports = {
    pages
}

欢迎指教!!!


页: [1]
查看完整版本: Vue配置多页面应用