在 Nuxt 的 SSR 期间未调用 Vue 实例`watcher`

Vue instance `watcher` not called during SSR with Nuxt

我有一个插件,代码如下:

   let vm = new Vue({
      data: {
        foo: 1,
      },
      watch: {
        $data: {
          deep: true,
          handler(){
            console.log('changed')
          }
        }
      }
    })

    vm.foo = 123; // should trigger watcher

问题是消息'changed'只在clientside打印,也就是说在SSR的时候没有调用serverside的watcher?对这种行为有什么解释吗?谢谢!

这是一个纯 Vue SSR 的小实现:https://codesandbox.io/s/oqx461ll8z

结果与预期有点不同。观察者将在 SSR 处理后以最新值进行挖掘。由于服务器上没有反应,并且出于一致性和性能原因,Vue 必须预取数据 (source),这会发生什么。

结果:

<div data-server-rendered="true">123</div>
{ foo: [Getter/Setter] } 123 123
changed