keep alive和name的关系与路由懒加载的应用

keep alive

1.当项目使用keep-alive时,可搭配组件name进行缓存过滤

created():在创建vue对象时,当html渲染之前触发;但是注意,全局vue.js不强制刷新或者重启时只创建一次,也就是说,created()只会触发一次;

activated():在vue对象存活的情况下,进入当前存在activated()函数的页面时,一进入页面就触发;可用于初始化页面数据、keepalive缓存组件后,可执行方法;

deactivated():离开组件时执行;

注意:activated()和deactivated()只有在<keep-alive></keep-alive>包裹的时候才有效;

2.DOM做递归组件时

 比如说detail.vue组件里有个list.vue子组件,递归迭代时需要调用自身name

list.vue:

               

3.当你用vue-tools时

vue-devtools调试工具里显示的组见名称是由vue中组件name决定的

概念
    keep-alive 是 Vue 的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 transition 相似,keep-alive 是一个抽象组件:它自身不会渲染成一个 DOM 元素,也不会出现在父组件链中。

作用
    在组件切换过程中将状态保留在内存中,防止重复渲染DOM,减少加载时间及性能消耗,提高用户体验性 起到缓存的作用

用法 在app.vue文件中 判断缓存的页面

<router-link to="/"></router-link>

        <keep-alive>

            <router-view v-if="$route.meta.keepAlive"></router-view>

        </keep-alive>

        <router-view v-if="!$route.meta.keepAlive"></router-view>

然后在路由Index.js中 多加了一个判断

{

        path: "/",

        name: "",

        component: search,

        meta: {

            keepAlive: false // 哪个页面用到的话就把他变成true

        },

vue项目实现路由按需加载(路由懒加载)的3种方式

两种方式

1 . vue异步组件技术 ==== 异步加载 

2.组件懒加载方案二 路由懒加载(使用import)

这个是最好用,也是经常写vuepc端的标配

const 组件名=() => import('组件路径'); 如下是万孚生物的例子,如何合并的方法,更好的管理

// 合并模块路由

const modulesRoutes = [...circle, ...show, ...personal, ...wind]

    //懒加载

const MainPage = () =>

    import ('@/home.vue');

// 首页

const Home = () =>

    import ('@/views/home/index.vue');

const routes = [{

        path: "/",

        name: "MainPage",

        component: MainPage,

        meta: {

            keepAlive: false

        },

        redirect: '/home',

        children: [{

                path: "/home",

                name: "home",

                component: Home,

                meta: {

                    keepAlive: false

                },

            },

            ...modulesRoutes

        ]

    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Vue 2 中,keep-alive 可以通过路由来缓存路由。具体的做法是在路由配置中,将需要缓存的路由组件包裹在 <keep-alive> 标签中,并给 <keep-alive> 标签添加一个属性 include,值为一个数组,包含需要缓存的路由组件的名称。 例如,我们需要缓存 /home 和 /profile 两个路由组件,那么路由配置可以这样写: ```javascript import Home from './views/Home.vue' import Profile from './views/Profile.vue' export default new Router({ routes: [ { path: '/', name: 'home', component: Home, meta: { keepAlive: true // 标记需要缓存 } }, { path: '/profile', name: 'profile', component: Profile, meta: { keepAlive: true // 标记需要缓存 } } ] }) ``` 然后,在 App.vue 中,我们可以将 <router-view> 标签包裹在 <keep-alive> 标签中,并将 include 属性设置为需要缓存的路由组件名称的数组: ```html <template> <div id="app"> <keep-alive :include="cachedViews"> <router-view/> </keep-alive> </div> </template> <script> export default { name: 'App', computed: { cachedViews () { // 获取需要缓存的路由组件名称 return this.$store.state.cachedViews } } } </script> ``` 最后,在路由守卫中,我们可以通过 meta 字段来判断当前路由是否需要缓存,并将需要缓存的路由组件名称添加到缓存数组中: ```javascript router.beforeEach((to, from, next) => { if (to.meta.keepAlive) { store.commit('addCachedView', to.name) } else { store.commit('removeCachedView', to.name) } next() }) ``` 这样就可以通过路由路径缓存路由了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值