React JS:从服务端渲染迁移到纯客户端
React JS : Migrate from server rendering to pure client side
我有一个 React 项目,该项目之前是使用节点 js 服务器设置的,它同时使用了客户端和服务器端渲染和路由。我需要移动它以便它使用纯客户端 rendering/routing。我该怎么做?
server.js 文件如下所示:
var Router = require('react-router').Router;
var routes = require('./public/js/' + defaultAppName + '/' + defaultAppName + '.node.js');
app.get('*', function (req, res, next) {
var location = new Location(req.path, req.query);
try {
Router.run(routes(), location, function (e, i, t) {
var str = ReactDOMServer.renderToString(
React.createElement(Router, i));
});
} catch (e) {
console.error(e);
return next();
}
});
目录结构如下-
|- server.js
|- gulpfile.js
|- public
|- js
|- app.node.js
|- src
|-jsx
| |-app
| | |-actions
| | |-components
| | |-reducers
| | |-routes
| | |-index.html
|-sass
| |-app
| | |-main
从服务器端代码中删除路由,并为任何 url 服务 index.html 您的应用程序,并让路由由您的应用程序入口点处理。例如
var static_path = path.join(__dirname, 'public');
app.use(express.static(static_path));
app.get('/', function (req, res) {
res.sendFile('index.html', {
root: static_path
});
});
应用程序的内部入口点,例如 app.jsx
var ReactDom = require('react-dom');
var Routes = require('/path/to/routes');
ReactDom.render(Routes, document.querySelector('.any-place-on-dom'));
我有一个 React 项目,该项目之前是使用节点 js 服务器设置的,它同时使用了客户端和服务器端渲染和路由。我需要移动它以便它使用纯客户端 rendering/routing。我该怎么做?
server.js 文件如下所示:
var Router = require('react-router').Router;
var routes = require('./public/js/' + defaultAppName + '/' + defaultAppName + '.node.js');
app.get('*', function (req, res, next) {
var location = new Location(req.path, req.query);
try {
Router.run(routes(), location, function (e, i, t) {
var str = ReactDOMServer.renderToString(
React.createElement(Router, i));
});
} catch (e) {
console.error(e);
return next();
}
});
目录结构如下-
|- server.js
|- gulpfile.js
|- public
|- js
|- app.node.js
|- src
|-jsx
| |-app
| | |-actions
| | |-components
| | |-reducers
| | |-routes
| | |-index.html
|-sass
| |-app
| | |-main
从服务器端代码中删除路由,并为任何 url 服务 index.html 您的应用程序,并让路由由您的应用程序入口点处理。例如
var static_path = path.join(__dirname, 'public');
app.use(express.static(static_path));
app.get('/', function (req, res) {
res.sendFile('index.html', {
root: static_path
});
});
应用程序的内部入口点,例如 app.jsx
var ReactDom = require('react-dom');
var Routes = require('/path/to/routes');
ReactDom.render(Routes, document.querySelector('.any-place-on-dom'));