Vue-CLI 3.x 搭建多页面项目配置

新的项目时决定继续尝试新技术,这次使用了 Vue-CLI 3作为脚手架。其他改进不提,主要记录下由于新需求要使用多页面(MPA)模式,记录下关于项目配置的信息。

在官方文档上是这样:


配置多页应用

官方文档省略了项目的改动,例如下图,compose.html装载的就是\src\pages\compose\里面的完整SPA项目:

项目配置

总结

一个页面一套SPA,入口文件、路由、资源的路径都要根据实际情况进行设置。


更新

页面间跳转问题

在页面内可以继续使用SPA模式的<router-link>,但是页面之间的跳转需要使用:

 <!-- index.html -->
<a href='/compose.html'>前往compose页面</a>

刷新不显示当前路由/404问题

实践中发现在非首页非首路由下,虽然能正常显示组件,但是进行刷新会出现找不到路由情况,解决方法是采用hash路由模式:

// router.js 
// mode: "history", 默认设置
mode: "hash",

这样,不同页面之间的指定路由跳转也可以这样实现:

<!-- index.html -->
<a href='/compose.html#/paper/library'></a>

该问题是由于history模式需要后台支持,而本地开发的webpack-dev-server服务只默认配置了单页应用的路由(index.html)。
所以还可以通过不使用默认webpack-dev-server,自定义一个本地服务来解决。

/**
 * 自定义路由
 * */

// http://localhost:8080/
router.get('/', (req, res, next)=>{
  sendFile(pathJoin('index.html'), res, next);
});
 
// http://localhost:8080/home  分配 home.html
router.get('/:home', (req, res, next) => {
  sendFile(pathJoin(req.params.home + '.html'), res, next);
});
 
// http://localhost:8080/index
router.get('/:index', (req, res, next) => {
  sendFile(pathJoin(req.params.index + '.html'), res, next);
});
 
module.exports = app.listen(PORT, err => {
  if (err){
    return
  }
  console.log(`Listening at http://${HOST}:${PORT}\n`);
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 Webpack 1.1 概念简介 1.1.1 WebPack是什么 1、一个打包工具 2、一个模块加载工具 3...
    Kevin_Junbaozi阅读 11,771评论 0 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,803评论 19 139
  • 写在开头 先说说为什么要写这篇文章, 最初的原因是组里的小朋友们看了webpack文档后, 表情都是这样的: (摘...
    Lefter阅读 10,692评论 4 31
  • 现在明子闲下来没事就会想石头,坐在第一次和他谈话的座椅上,期望他还能在旁边的转角出现,用清亮且略带口音的...
    克洛岱尔情结阅读 1,787评论 0 0

友情链接更多精彩内容