Vue路由器是否使用keep-alive来缓存某些组件?

Prz*_*mek 5 vue.js vue-router vue-component vuejs2

我最近开始使用vue,并且已经设法创建了一些简单的页面,但是我注意到加载后的组件没有被缓存,因此,例如在下面的链接(这是我正在研究的)上,youtube视频需要时间加载,如果我单击任何其他链接并返回到视频,则会再次加载它们。

是否可以用来缓存组件?最好将它们全部替换为1比1。

这是我的主意:

import VueRouter from 'vue-router';
import Create from '../components/homepage/create.vue';
import How from '../components/homepage/how.vue';
import About from '../components/homepage/about.vue';
import Youtube from '../components/homepage/youtube.vue';
import Navigation from '../components/homeNavigation.vue';
import Login from '../components/auth/login.vue';
import Register from '../components/auth/register.vue';


const routes = [
    { path: '/create', component: Create },
    { path: '/how', component: How },
    { path: '/about', component: About},
    { name: 'youtube', path: '/youtube', component: Youtube},
    { path: '/login', component: Login},
    { path: '/register', component: Register},
];

Vue.use(VueRouter);
Vue.component('navigation', Navigation);

const router = new VueRouter({
    routes,
});

new Vue({
    el: '#app',
    router,
    updated: function () {
        Pace.restart()
    },
    mounted: function() {
        Pace.restart()
    }
});
Run Code Online (Sandbox Code Playgroud)

视图:

<div id="app">
        <navigation></navigation>
            <transition appear name="slide-fade" mode="in-out">
                <keep-alive include='youtube'>
                    <router-view></router-view>
                </keep-alive>
            </transition>
</div>
Run Code Online (Sandbox Code Playgroud)

我的应用程式:

http://b2750916.ngrok.io/#/youtube

Iso*_*riq 7

在此处检查此答案:https : //forum.vuejs.org/t/keep-alive-specific-component/2372/2

从v2.1开始,您可以使用“ include”和“ exclude”属性作为正则表达式来控制要缓存的组件。这些属性也可以进行v绑定:https ://vuejs.org/v2/api/#keep-alive

另一种方法是通过使用deactivated不想保留缓存的组件上的钩子。在挂钩中,您调用this.$destroy();会在不使用缓存时将其删除。

另外,也许这可以帮助您? https://github.com/LinusBorg/portal-vue

不确定portal-vue是否会工作,但我的想法是将视频放置在外面,以便独立渲染(在根组件中的“门户”中),并使用“门户目标”将其显示在您想要的位置。