html
是对应页面的实际DOM
内容。之后在页面内进行跳转都是用内部vue-router
方式。所以导致了只触发s端的asyncData
函数serverMiddleware
服务端相关的中间件plugins
及配置为{ model: 'server' }
的nuxtServerInit
函数middleware
全局/页面/路由中间件asyncData
触发流程,服务器端的只执行一次vue
生命周期只有beforeCreate/created
vuex
会执行两次,但实际赋值是在serverInit
阶段源码共有两个入口,一个server-entry
, 一个client-entry
。分别生成一个bundle。服务器执行server-bundle创建Renderer,在接收到请求并渲染出对应的首屏页面后,会将渲染结果以HTML字符串的形式返回,并携带着剩余的路由信息给客户端去渲染其他路由的页面。
为了客户端能够同步Vuex中已有的数据,当我们将状态附加到上下文context中,并且 template 选项用于 renderer 时,状态将自动序列化为window.INITIAL_STATE,并注入 HTML。与此同时,客户端也需要使用这个值作为store的初始状态,以此来完成同步。客户端的代码看上去如下: