【发布时间】:2019-02-12 14:08:53
【问题描述】:
我正在开发一个 Symfony 应用程序,并且刚刚使用 https://github.com/spatie/server-side-rendering 获得了用于 JS 的 SSR。到目前为止,我只为 React 使用“现成的”SSR 解决方案,但目前我正在尝试使用 hyperHTML/viperHTML 并且面临一些到目前为止我无法通过查看可用文档/示例来解决的问题。
我目前的测试sn-p是这样的:
const viperHTML = require('viperhtml');
class Component extends viperHTML.Component {
constructor(props) {
super();
this.props = props;
}
render() {
return this.html`
<h1>Hello, ${this.props.name}</h1>`;
}
}
console.log(new Component({ name: 'Joe' }).render().toString());
这里的问题是,如果没有显式调用render(),我就没有输出。查看一些官方示例,这不应该是必要的,至少不是Component。例如,我已经尝试在构造函数中使用setState(),但没有区别。
另外,如果不同时使用console.log() 和toString(),我也没有输出。这是出乎意料的。我知道这里可能需要toString()(没有它,正在渲染<buffer />),但console.log() 似乎很奇怪。当然,这可能根本与 viperHTML 无关。但是实例化组件是我唯一需要做的事情。
我还不清楚如何编写一个同构/通用组件,即一个包含标记、事件处理程序等的文件,在服务器上呈现,然后在客户端上水合。当我根据文档 (https://viperhtml.js.org/hyperhtml/documentation/#essentials-6) 添加内联事件处理程序时,它实际上被内联到呈现的标记中,这不是我想要的。 我检查了超形态和 viperNews 应用程序,但到目前为止这对我没有帮助。
【问题讨论】:
标签: prerender server-side-rendering hyperhtml