keep-alive和router-view配合使用缓存整个路由页面以及路由切换

这篇具有很好参考价值的文章主要介绍了keep-alive和router-view配合使用缓存整个路由页面以及路由切换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

keep-alive和router-view配合使用缓存整个路由页面以及路由切换,缓存

实现内容:通过vue实现,在页面有侧边栏动态来展示当前页面流程,右边进行页面的切换,左右两边都是组件,但是A/B/C组件的切换是通过keep-alive搭配router-view实现的,首先在当前文件中创建五个文件:index.vue,A/B/C.vue,router.json
在index.vue中,实现的是整个页面的布局,左边组件的引入具体样式看具体需求不再列出,右边主页面的内容实现缓存如下:

<keep-alive>
	<router-view @toggle='toggleHander' />
</keep-alive>

toggle是A/B/C组件中emit事件绑定的,用来实现左边栏动态的切换,不再具体展示,具体页面路由切换在具体的A/B/C页面中,toggleHa
在router.json中我们将主页面路由配置进去:

{
	"pages":["pageA","pageB","pageC"]
}

通过这些能实现是基于在router.js里的配置
router.js文件关于这块的处理

// 每个小文件里面的json
    const childernRouter = require(`@/${fileName}/router.json`)
    childernRouter.pages.forEach((childFileName)=>{
        const childComponentConfig=(resolve)=>require([`@/${fileName}/${childFileName}`],resolve)
        const childComponentName=upperFirst(
            camelCase(
                //	 剥去文件名开头的`'./`和结尾的扩展名
                childComponentName.replace(/^\.\/(.*)\.w+$/,'$1')
            )
        )
        const child ={
            path:childFileName,
            name:fileName+'./'+childComponentName,
            component:childComponentConfig.default || childComponentConfig
        }
        singlePage.children.push(child)
    })
    singlePage.redirect = singlePage.path+'/'+singlePage.children.path // 根据配置的顺序展示第一个
    // 构造路由
    pageArr.push(singlePage)

router.js整个文件具体实现文章来源地址https://www.toymoban.com/news/detail-573223.html

let pageArr=[]
// 整个项目的json 
let requireComponent=require('@/app.json')
requireComponent.pages.forEach((trade)=>{
    const fileName=trade.path
    // 获取路由,路由懒加载
    const componentConfig=(resolve)=>require([`@/${fileName}`,resolve])
    const componentName=upperFirst(
        camelCase(
            //	 剥去文件名开头的`'./`和结尾的扩展名
            fileName.replace(/^\.\/(.*)\.w+$/,'$1')
        )
    )
    let singlePage={
        path:'/'+fileName,
        name:String(String(componentName)),
        component:componentConfig.default || componentConfig,
        children:[],
        props:(route)=>({query:{transType:route.query.transType,oldTask:route.query.taskId}})
    }
    // 每个小文件里面的json
    const childernRouter = require(`@/${fileName}/router.json`)
    childernRouter.pages.forEach((childFileName)=>{
        const childComponentConfig=(resolve)=>require([`@/${fileName}/${childFileName}`],resolve)
        const childComponentName=upperFirst(
            camelCase(
                //	 剥去文件名开头的`'./`和结尾的扩展名
                childComponentName.replace(/^\.\/(.*)\.w+$/,'$1')
            )
        )
        const child ={
            path:childFileName,
            name:fileName+'./'+childComponentName,
            component:childComponentConfig.default || childComponentConfig
        }
        singlePage.children.push(child)
    })
    singlePage.redirect = singlePage.path+'/'+singlePage.children.path // 根据配置的顺序展示第一个
    // 构造路由
    pageArr.push(singlePage)
})
// 如果路由默认找不到匹配首页
pageArr.push(
    {
        path:'*',
        redirect:pageArr[0].path, // 默认跳转到首页
        component:pageArr[0].component 
    }
)
export const constantRouterMap= pageArr
export default new Router({
    mode:'hash',
    scrollBehavior:()=>({
        y:0
    }),
    routes:constantRouterMap,
    base:ProcessingInstruction.env.BASE_URL
})

到了这里,关于keep-alive和router-view配合使用缓存整个路由页面以及路由切换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • keep-alive组件缓存

    从 a跳b,a已经销毁,b重新渲染;b跳a,b销毁a重新渲染 源组件销毁,目标组件渲染 组件缓存:组件实例等相关(  包括vnode )存储起来 重新渲染指的是:把视图重新编译成新的vnode-dom diff-渲染成真实dom 真实dom被我移除了只是从页面上移除,只是把vnode重新渲染成真实dom或者

    2024年01月21日
    浏览(41)
  • keep-alive的作用和应用

    keep-alive是Vue提供给我们的一个内置组件,会缓存不活动的组件实例,而不是销毁它们。作为标签使用包裹这需要缓存的组件。 在组件切换过程中,把切换出的组件保存在内存中,防止重新渲染DOM,减少加载时间及性能消耗,提高用户体验。避免左慈重复渲染降低性能 举个例

    2024年01月19日
    浏览(42)
  • Vue-组件缓存-keep-alive

    在Vue.js中,组件的复用和缓存是一个重要的优化手段。当我们频繁切换组件时,频繁的销毁和重建会带来一定的性能开销。为了解决这个问题,Vue提供了一个名为 keep-alive 的抽象组件。下面我们将深入探讨 keep-alive 的工作原理、使用场景和最佳实践。 keep-alive是什么 keep-aliv

    2024年01月16日
    浏览(45)
  • vue使用路由router-view

    前言: router-view 与 NavMenu 导航栏的配合,在 web 应用中极为常见。其原理就是采用 SPA(single-page-application) 模式,就是只有一个 Web 页面的应用,通过 router 来控制页面的刷新和迭代。 提示: 以下示例基于 vue2.6.14 版本, vue-router3.5.2 版本, element-ui2.15.12 版本。 好了,废话不多

    2024年02月13日
    浏览(34)
  • keep-alive组件的作用与原理

    原文合集地址如下,有需要的朋友可以关注 本文地址 “keep-alive” 是 Vue.js 中的一个特殊组件,用于缓存组件的状态,以提高应用性能。在 Vue.js 中,组件通常是动态创建和销毁的,当切换到另一个页面或组件时,之前的组件会被销毁,再次进入时会重新创建和初始化。这样

    2024年02月12日
    浏览(36)
  • keep-alive缓存三级及三级以上路由

    需求:需要缓存这个出入记录,当tab切换时不重新加载,当刷新页面时,或把这个关闭在重新打开时重新加载如图: (我这里用的是芋道源码的前端框架) 1、include 包含页面组件name的这些组件页面,会被缓存起来 2、exclude 除了这些name以外的页面组件,会被缓存起来 3、没有

    2024年02月09日
    浏览(43)
  • react 实现页面状态缓存(keep-alive)

    因为 react、vue都是单页面应用,路由跳转时,就会销毁上一个页面的组件。但是有些项目不想被销毁,想保存状态。 比如:h5项目跳转其他页面返回时,页面状态不丢失。设想一个 页面我滑倒了中间,然后跳转到 详情页然后 返回,之前的页面刷新了,回到顶部了肯定不行(

    2024年01月23日
    浏览(45)
  • vue3.0中的keep-alive

    keep-alive是vue中的一个内置组件,通常用它来包裹一个动态组件,keep-alive 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。 它有两个特殊的生命周期钩子 activated 和 deactivated ,在vue3.0里面生命周期函数前面都要加上on, onActivated , onDeactivated 。当组件在使用了kee

    2023年04月08日
    浏览(40)
  • vue keep-alive 中的生命周期

    keep-alive 是 Vue 提供的一个内置组件,用来对组件进行缓存——在组件切换过程中将状态保留在内存中,防止重复渲染DOM。 如果为一个组件包裹了 keep-alive,那么它会多出两个生命周期:deactivated、activated。同时,beforeDestroy 和 destroyed 就不会再被触发了,因为组件 不会被真正

    2024年02月12日
    浏览(43)
  • 【Vue3】keep-alive 缓存组件

    当在 Vue.js 中使用 keep-alive 组件时,它将会缓存动态组件,而不是每次渲染都销毁和重新创建它们。这对于需要在组件间快速切换并且保持组件状态的情况非常有用。 keep-alive 只能包含(或者说只能渲染)一个子组件,如果需要包含多个子组件,需要用 v-if 选择某个确定的组

    2024年02月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包