我的網站是用PHP編寫的。 Node.js也爲socket.io設置。我一直在考慮使用Reactjs進行服務器端渲染,以便重用視圖。計劃使用v8js擴展,但後來我碰到this article來談論兩個可能的解決方案:作爲php模板渲染服務reactjs node.js是一個好主意嗎?
1.使用v8js擴展和應對-PHP-V8Js從PHP
2.發送數據的Node.js渲染視圖,例如:
Node.js的
require("babel/register");
var React = require('react');
var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.use('/', function(req, res) {
try {
var view = path.resolve('./views/' + req.query.module);
var component = require(view);
var props = req.body || null;
res.status(200).send(
React.renderToString(
React.createElement(component, props)
)
);
} catch (err) {
res.status(500).send(err.message);
}
});
PHP
use GuzzleHttp\Client;
$app->get('/{name:.*?}', function($name) use ($app) {
$client = new Client(['base_url' => 'http://localhost:3000']);
$response = $client->post('/', [
'json' => ['name' => ucfirst($name ?: 'World')],
'query' => ['module' => 'hello'],
]);
$contents = $response->getBody()->getContents();
return response($contents, 200);
});
筆者說,他傾向於第二種方法,因爲第一種:
除非你舒適的安裝(和更新)libv8和您的生產機器 V8Js PECL擴展,這不是一個 選項。就我個人而言,我不會走這條路。安裝 依賴關係很麻煩,依賴關係管理很棘手,並且沒有太多的資源可以指導你一路走來。 在 此外,如果您想要重新使用 他們,則需要考慮您的javascript 版本不應該與反應捆綁在一起。
你能告訴我他的意思是「javascript builds無法與反應捆綁」嗎?我一直在考慮使用v8js
+ React-PHP-V8Js
,所以我想了解它的一些缺點。另外,你更喜歡第二種方法(node.js作爲模板渲染服務)嗎?我已經運行了node.js,所以這似乎是一個很好的建議。