Meine Website ist in PHP geschrieben. Node.js ist auch für socket.io eingerichtet. Ich habe über das serverseitige Rendering mit Reactjs nachgedacht, damit ich die Ansichten wiederverwenden kann. v8js Erweiterung verwenden planen, aber dann stieß ich auf this article reden über zwei mögliche Lösungen:Ist node.js mit reactjs als php template rendering service eine gute Idee?
1.Verwenden v8js Erweiterung und Reagieren-PHP-V8Js
2.Send Daten von PHP node.js Ansichten zu machen , Beispiel:
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);
});
Der Autor sagt, dass er die zweite Methode vorziehen würde, weil die erste:
Sofern Sie bequem Installation sind (und Aktualisierung) libv8 und die V8Js PECL-Erweiterung auf Produktionsmaschinen, das ist keine Option . Persönlich würde ich diesen Weg nicht gehen. Das Installieren der Abhängigkeiten ist umständlich, Abhängigkeitsverwaltung ist schwierig, und gibt es nicht viele Ressourcen, die Sie entlang des Weges führen. In , müssen Sie die Tatsache berücksichtigen, dass Ihre Javascript Builds nicht mit Reagieren gebündelt werden soll, wenn Sie diese wiederverwenden möchten.
Können Sie mir sagen, was er meint mit "Javascript baut nicht in der Lage zu bündeln mit reagieren"? Ich habe darüber nachgedacht, v8js
+ React-PHP-V8Js
zu verwenden, also möchte ich einige der Nachteile davon verstehen. Würden Sie die zweite Methode (node.js als Vorlage-Rendering-Dienst) bevorzugen? Ich habe node.js bereits ausgeführt, also scheint das ein guter Vorschlag zu sein.