wayfair / hypernova-php
hypernova的PHP客户端。https://github.com/airbnb/hypernova
Requires
- php: >=5.6.0
- guzzlehttp/guzzle: ^6.2
- ramsey/uuid: ^3.5
Requires (Dev)
- phpunit/phpunit: ^9.0
This package is not auto-updated.
Last update: 2024-09-21 01:37:25 UTC
README
PHP客户端,用于您的Hypernova服务。
为什么选择Hypernova?
更广泛的问题往往是“我该如何在服务器端渲染我的React应用?”这可能是一个业务需求(例如SEO)或只是想为用户提供最快的初始渲染。
假设您有一个PHP后端(否则您为什么会在这里?),通常您会想要搭建一个node.js服务来为您进行渲染。您可以尝试phpv8js,但我认为在任何规模的生产环境中使用都是不合适的。这只是我的观点,请自行研究 😁
那么——编写自己的node.js服务,或者使用现成的。编写自己的node.js服务并不特别困难——您可以用大约20行代码搭建一个东西来为您渲染React组件。我们个人选择Hypernova是因为它轻量级、可插件(见插件系统)、性能良好(见createVM中的巧妙字节码缓存),并且当服务有问题时具有良好的客户端回退行为。
入门指南
composer require wayfair/hypernova-php
创建一个Renderer
use \WF\Hypernova\Renderer;
$renderer = new Renderer('http://localhost:3030/batch');
给它一些工作
$renderer->addJob('myViewId', ['name' => 'my_module_name', 'data' => ['some' => ['props']]]);
可选地添加一个或两个插件(见插件部分)
$renderer->addPlugin($myPlugin);
$renderer->addPlugin($myOtherPlugin);
然后获取您的渲染Response
$response = $renderer->render();
echo $response->results['myViewId']->html;
插件API
这是您如何自定义客户端行为的方式。常见用例包括
- 记录请求元数据,如性能计时
- 错误记录
- 注入/删除属性
- 在开发环境中内联堆栈跟踪
- 完全停止对服务的请求,让所有内容回退到客户端渲染
通常,您可能只想实现生命周期钩子的一部分;也许您需要onError
处理但没有必要使用shouldSendRequest
。为了方便开发者,您可以扩展\WF\Hypernova\Plugin\BasePlugin
,它提供了所有钩子的无操作实现。
请参阅js客户端文档以获取可用钩子的完整描述。
贡献
分叉它,提交PR。
运行测试
composer test