关于vue服务端渲染 2 数据预存取

在我看来服务端的主要痛点就是数据的存取,有各种不同的解决方法但是哪一种都感觉不够完美。
这里通过vuex来进行服务端和客户端的数据同步,主要根据是服务端渲染完成之后如果存在store,会在window中插入一个字段来表示,客户端可以通过这个字段来直接加载。

上文里配置router,vuex的配置方式类似

先声明一个vuex的工厂函数

import Vue from 'vue'
import Vuex from 'vuex'
import {itemApi} from './api' //忽略实现细节,请求数据并返回一个promise
Vue.use(Vuex)
export function createStore(){
   
    return new Vuex.Store({

        state:{
  items:{}}
        mutations:{
            addItem(state,{id,item}){
                Vue.set(state.items,id,item)
            }
        },
        actions:{
            fetchItem({commit},id){
                //store.dispatch需要返回一个Promise来判断数据请求情况                
                return itemApi(id).then(item=>{
                    commit('addItem',{id,item})
                })
            }
        }
    })
}

在main里面加入vuex

import Vue from 'vue'
import {createRouter} from '@/router'
import {createStore} from '@/store'
import {sync} from 'vuex-router-sync' //新增的工具包,需要npm install安装,用来同步store和router
import App from '@/App' //根组件

export default ()=>{
  const router=createRouter()
  const store=createStore()
  sync(store,router)
  const app=new Vue({
    router,
    store,
    render:h=>h(App)
  })
  return {app,router,store} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值