我想创建一个自定义Vue
指令,让我可以在我的页面上选择我想要补充的组件。换句话说,这就是我要归档的
Vue
我在服务器上呈现我的应用程序 (ssr
)我将指令附加到某些组件,如下所示:
<template> <div v-hydrate @click="do-something"> I will be hydrated</div> </template>
我将我的代码发送给客户端,只有那些具有该
v-hydrate
属性的组件才会在客户端上进行水合(作为root
元素)。
我想以这种方式大致实现这一点:
我将创建一个标记并记住组件的指令:
import Vue from "vue";
Vue.directive("hydrate", {
inserted: function(el, binding, vnode) {
el.setAttribute("data-hydration-component", vnode.component.name);
}
});
我的想法是在我的inserted
方法中为服务器呈现的元素编写一个数据属性,我可以在客户端中读取它,然后用它来水合我的组件。
现在我有两个问题:
- 这是一个可行的方法吗
- 如何获取组件名称
el.setAttribute
?vnode.component.name
只是虚拟代码,不存在这种方式。
PS:如果你想知道为什么我只想对我网站的某些部分进行补水:这是广告。他们弄乱了破坏 Vue 的 DOM。