mirror of
				https://github.com/aleleba/create-react-ssr.git
				synced 2025-10-31 06:00:39 -06:00 
			
		
		
		
	PR-753737: Agregando SSR y React Router.
This commit is contained in:
		| @@ -1,3 +1,5 @@ | ||||
| require('ignore-styles'); | ||||
|  | ||||
| require('@babel/register')({ | ||||
|     "presets": [ | ||||
|         "@babel/preset-env", | ||||
|   | ||||
| @@ -1,16 +1,26 @@ | ||||
| //Dependencies of Server | ||||
| import express from 'express'; | ||||
| import { config } from '../config'; | ||||
| import webpack from 'webpack'; | ||||
|  | ||||
| //Dependencies of HotReloading | ||||
| import webpackConfig from '../webpack.config.dev'; | ||||
| import webpackDevMiddleware from 'webpack-dev-middleware'; | ||||
| import webpackHotMiddleware from 'webpack-hot-middleware'; | ||||
|  | ||||
| //Dependencies of SSR | ||||
| import React from 'react'; | ||||
| import { renderToString } from 'react-dom/server'; | ||||
| import { StaticRouter } from "react-router-dom/server"; | ||||
| import App from '../frontend/components/App'; | ||||
|  | ||||
| const { env, port } = config | ||||
|  | ||||
| const app = express(); | ||||
|  | ||||
| if(env === 'development'){ | ||||
|     console.log('Development Config') | ||||
|     const webpackConfig = require('../webpack.config.dev'); | ||||
|     const webpackDevMiddleware = require('webpack-dev-middleware'); | ||||
|     const webpackHotMiddleware = require('webpack-hot-middleware'); | ||||
|      | ||||
|     const compiler = webpack(webpackConfig); | ||||
|     const serverConfig = {  | ||||
|         serverSideRender: true, | ||||
| @@ -25,9 +35,35 @@ if(env === 'development'){ | ||||
|     })); | ||||
| } | ||||
|  | ||||
| app.get('*', (req, res) => { | ||||
|     res.send({ hello: 'express'}); | ||||
| }) | ||||
| const setResponse = (html) => { | ||||
|     return(` | ||||
|     <!DOCTYPE html> | ||||
|     <html lang="es"> | ||||
|         <head> | ||||
|             <meta charset="UTF-8"> | ||||
|             <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||||
|             <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||
|             <link href="assets/app.css" rel="stylesheet" type="text/css"></link> | ||||
|             <title>App</title> | ||||
|         </head> | ||||
|         <body> | ||||
|             <div id="app">${html}</div> | ||||
|             <script src="assets/app.js" type="text/javascript"></script> | ||||
|         </body> | ||||
|     </html> | ||||
|     `) | ||||
| } | ||||
|  | ||||
| const renderApp = (req, res) => { | ||||
|     const html = renderToString( | ||||
|         <StaticRouter location={req.url}> | ||||
|             <App /> | ||||
|         </StaticRouter> | ||||
|     ) | ||||
|     res.send(setResponse(html)); | ||||
| }; | ||||
|  | ||||
| app.get('*', renderApp) | ||||
|  | ||||
| app.listen(port, (err) => { | ||||
|     if(err) console.error(err) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user