Vue实现简单的多页面

简介: Vue实现简单的多页面

问题描述

Vue对于单页面富应用的程序开发,有着非常友好的支持。简单到只需要通过 “ vue create 项目名称” 这一行命令,即可完成单页面富应用程序的所有环境配置.但多页面的程序呢?

通过vue脚手架vue-cli能帮助开发者快速的进行单页面应用的开发,但vue对于多页面应用的开发,可能就不是这么友好啦,你需要深入到webpack和vue的配置文件中,添加一系列的配置,才能在你原本的单页面应用中创建多个入口文件。详情请百度“vue多页面开发”。

小编查阅网上信息,发现用vue开发多页面应用,即耗时又耗力还不讨好。用vue开发单页面富应用的一大特点就是,第一次加载慢,但多个子页面间的跳转非常丝滑流畅。

如果按网上的方式,通过修改配置文件开发多页面应用,那就不止是第一次打开网页慢,之后的页面跳转速度也将下降。

因为通过配置文件添加多个入口,相当于将多个单页面应用进行整合,多个应用间的跳转,相当于重新加载了新的vue应用。

那如何用简单而又不损耗性能的方式来开发vue多页面应用呢?


解决方案

最简单的方法,就是对项目进行拆分,直接开发多个vue应用,这样就不用写配置文件,但性能损耗的问题还是存在。

那能不能直接在原有的单页面应用中开发多页面应用呢?相信有的读者应该这么干过。来个例子:

2.1 学堂在线网站首页

图2.1不就是vue开发的典型模板吗,通过点击导航栏不断切换网页的内容,但不刷新网页.(该网站并不是vue开发,只是以该网站的样式举例).

2.2 学堂在线课程详情页

图2.2 为点击具体课程后进入的详情页,如果用vue开发这个网站,很明显,首页和详情页是两个应用.需要用到多页面开发或者创建两个vue应用。

那如何通过一个vue应用来开发该网站,并且不用修改复杂的配置文件呢?

最简单的方式是不是换个导航栏就完事了,监听vue实例中的route对象,根据路由的变化显示对应导航栏即可。

但这样会不会引发其他问题呢?来思考一下。

所有子页面在配置路由时,可以用异步加载的方式,用户只有在查看对应子页面时,才会向服务器发送请求,这样再多的子页面也不会影响网页加载的速度。

//在router/index.js 中通过异步方法引入页面

const  Course=()=>import("../views/Course.vue")

const  Team=()=>import("../views/Team.vue")

const  MyCourse=()=>import("../views/MyCourse.vue")

const  Profile=()=>import("../views/Profile.vue")

那主页面呢?相比于以往的单页面应用,主页面中多了一个导航栏。如果用户需要在主页和另一个带有导航栏的页面之间频繁跳转,那么最好的方式就是通过css 中的display 来隐藏其中一个导航栏即可。

如果用户不会在两个页面之间频繁跳转,如何优化呢?

同样的对于未显示的导航栏,采用异步加载的方式,当用户需要看见这个导航栏的时候,再从服务器请求,而不是一开始就加载。这样可以避免第一次加载过多的内容,而导致速度变慢。

//在主页面app.vue中异步加载导航栏组件

const  navBar=()=>import("./components/navBar/navBar.vue")

         export  default{

                   name:'app',

                   components:{

                            navBar

                   }}

同样的,这种方式也可以应用于其它页面内容的开发。




目录
相关文章
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
938 2
|
12月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
826 137
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
1844 0
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
JavaScript 前端开发 开发者
Vue 自定义进度条组件封装及使用方法详解
这是一篇关于自定义进度条组件的使用指南和开发文档。文章详细介绍了如何在Vue项目中引入、注册并使用该组件,包括基础与高级示例。组件支持分段配置(如颜色、文本)、动画效果及超出进度提示等功能。同时提供了完整的代码实现,支持全局注册,并提出了优化建议,如主题支持、响应式设计等,帮助开发者更灵活地集成和定制进度条组件。资源链接已提供,适合前端开发者参考学习。
919 17
|
人工智能 JSON JavaScript
VTJ.PRO 首发 MasterGo 设计智能识别引擎,秒级生成 Vue 代码
VTJ.PRO发布「AI MasterGo设计稿识别引擎」,成为全球首个支持解析MasterGo原生JSON文件并自动生成Vue组件的AI工具。通过双引擎架构,实现设计到代码全流程自动化,效率提升300%,助力企业降本增效,引领“设计即生产”新时代。
1041 1
|
JavaScript 前端开发 UED
Vue 表情包输入组件实现代码及详细开发流程解析
这是一篇关于 Vue 表情包输入组件的使用方法与封装指南的文章。通过安装依赖、全局注册和局部使用,可以快速集成表情包功能到 Vue 项目中。文章还详细介绍了组件的封装实现、高级配置(如自定义表情列表、主题定制、动画效果和懒加载)以及完整集成示例。开发者可根据需求扩展功能,例如 GIF 搜索或自定义表情上传,提升用户体验。资源链接提供进一步学习材料。
1003 1
|
JavaScript 安全
在 Vue 中,如何在回调函数中正确使用 this?
在 Vue 中,如何在回调函数中正确使用 this?
746 0
|
存储 JavaScript 前端开发
如何高效实现 vue 文件批量下载及相关操作技巧
在Vue项目中,实现文件批量下载是常见需求。例如文档管理系统或图片库应用中,用户可能需要一次性下载多个文件。本文介绍了三种技术方案:1) 使用`file-saver`和`jszip`插件在前端打包文件为ZIP并下载;2) 借助后端接口完成文件压缩与传输;3) 使用`StreamSaver`解决大文件下载问题。同时,通过在线教育平台的实例详细说明了前后端的具体实现步骤,帮助开发者根据项目需求选择合适方案。
1224 0
|
JavaScript 前端开发 UED
Vue 项目中如何自定义实用的进度条组件
本文介绍了如何使用Vue.js创建一个灵活多样的自定义进度条组件。该组件可接受进度段数据数组作为输入,动态渲染进度段,支持动画效果和内容展示。当进度超出总长时,超出部分将以红色填充。文章详细描述了组件的设计目标、实现步骤(包括props定义、宽度计算、模板渲染、动画处理及超出部分的显示),并提供了使用示例。通过此组件,开发者可根据项目需求灵活展示进度情况,优化用户体验。资源地址:[https://pan.quark.cn/s/35324205c62b](https://pan.quark.cn/s/35324205c62b)。
711 0