在首次访问网页时,可以将部分数据放到localStorage中。
    再次访问时,可以优先从localStorage拿出数据来做展示,避免白屏问题,然后,再去拉远程数据覆盖上来。

    vue项目可以通过现成的vuex插件来做数据持久化,比如:vuex-persistedstate

    vue项目、小程序(uniApp)都可以使用,使用示例:

    1. import Vue from "vue";
    2. import Vuex from "vuex";
    3. import createPersistedState from "vuex-persistedstate";
    4. Vue.use(Vuex);
    5. const modules = {};
    6. const context = require.context("./modules", false, /\.js$/);
    7. context.keys().map(key => {
    8. // 获取读取到的文件名字并且截取
    9. const name = key.slice(2, -3);
    10. modules[name] = context(key).default;
    11. });
    12. export default new Vuex.Store({
    13. modules,
    14. plugins: [
    15. createPersistedState({
    16. paths: [
    17. 'theme',
    18. 'auth.openid',
    19. 'route.history',
    20. 'route.collectedPlaces',
    21. 'nearby.history',
    22. 'ad'
    23. ],
    24. // uniapp小程序项目,需要配置好对应的存取删api
    25. storage: {
    26. getItem: (key) => uni.getStorageSync(key),
    27. setItem: (key, value) => uni.setStorageSync(key, value),
    28. removeItem: (key) => uni.removeStorageSync(key),
    29. },
    30. filter: (mutation) => {
    31. const arr = [
    32. "theme/updateTheme",
    33. "auth/setOpenid",
    34. "route/setHistory",
    35. "route/setCollectedPlaces",
    36. "nearby/setHistory",
    37. 'ad/updateInterstitialAdTime'
    38. ];
    39. return arr.includes(mutation.type);
    40. },
    41. }),
    42. ],
    43. });