vue单页缓存组件

Posted afterwawa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue单页缓存组件相关的知识,希望对你有一定的参考价值。

实现前进刷新,返回不刷新的功能,并且返回时可以记住上一页的滚动位置,有两套方案可选

第一套方案:vue的keep-alive组件,vue-router提供的scrollbeheavior API

keep-alive:可以实现把要缓存的组件渲染的vnode记到cache里边,当返回的时候用缓存里边的dom直接渲染,但是存在的问题是存储vnode节点的key是name,也就是定义路由时组件对应的name,这就会导致同样的path,不同参数的时候打开的是从cache里边拿到的vnode,很多业务场景都是根据参数来显示不同内容,而keep-alive底层并没有对此做扩展,可以看下keep-alive源码:https://github.com/vuejs/vue/blob/dev/src/core/components/keep-alive.js,

 vnode.key就是路由里边定义的name,关于vnode的源码里可以看
const key: ?string = vnode.key == null
        // same constructor may get registered as different local components
        // so cid alone is not enough (#3269)
        ? componentOptions.Ctor.cid + (componentOptions.tag ? `::${componentOptions.tag}` : ‘‘)
        : vnode.key
      if (cache[key]) {
        vnode.componentInstance = cache[key].componentInstance
        // make current key freshest
        remove(keys, key)
        keys.push(key)
      } else {
        cache[key] = vnode
        keys.push(key)
        // prune oldest entry
        if (this.max && keys.length > parseInt(this.max)) {
          pruneCacheEntry(cache, keys[0], keys, this._vnode)
        }
      }

 

以上是关于vue单页缓存组件的主要内容,如果未能解决你的问题,请参考以下文章

hbuilder+vue单页应用打包成APP后退按钮返回上一页的问题

Vue 使用路由链接到单页组件

Vue单页应用,前进刷新后退不需要刷新

vue-router单页应用简单示例

不构建单页应用程序时,如何构建 Vue.js 单文件组件并导入它们?

使用 Vue + Flask 搭建单页应用