reactjs / express-react-views

This is an Express view engine which renders React components on server. It renders static markup and *does not* support mounting those views on the client.
Other
2.74k stars 261 forks source link

Allow to use React.renderToString instead of React.renderToStaticMarkup to allow isomorphic React use? #31

Open sbichenko opened 9 years ago

sbichenko commented 9 years ago

Is there anything wrong with making this a configurable option? For example, this fork does that: https://github.com/AndrewGuenther/express-react-views/commit/d9fb082f2b073534ffa68a3ec64de6c7139cf25c

The fact that this wasn't made configurable makes me thinks that there's more to this problem. I'm new to React, so sorry if I'm asking something obvious.

zpao commented 9 years ago

There is more too it, see #11 and #15 for some more discussion. It's not off the table just haven't seen a good solution for actually being client-mountable that I'm happy with.

vikeen commented 9 years ago

@zpao Has anything ever come from these talks. Are there good solutions now for a simple isomorphic react architecture? The only example I was able to find that I could produce workable solutions from was https://github.com/mhart/react-server-example. While this worked for me and I appreciate the example / effort; I can't code a project like this. Do you or anyone else have insights on how I can make this easier or if there are better avenues now?

Thanks

zpao commented 9 years ago

No, nothing has really come of it.

https://github.com/reactjs/express-react-views/tree/master/examples/dynamic exists which was an interesting solution to the problem. That came in https://github.com/reactjs/express-react-views/pull/17 (and has some discussions about the tradeoffs).

There should be a bunch of isomorphic solutions out there, maybe even some using express.

I'm definitely open to making changes here but I haven't seen anybody make a compelling case about how their solution actually works.

vikeen commented 9 years ago

@zpao Thanks for the response. I hadn't done enough research on the topic when I posted here. I have been able to find a ton of solutions for isomorphic solutions. Mostly through react-europe 2015 video on youtube. It has taken some time for me to grasp the concepts. It's mostly challenging for me because many of the solutions are adding new technologies that I'm unfamiliar with (babel, es6, webpack, redux, react-router, flux, fluxible, etc..).

Thank you for the response back though. The example of you provided is a good reference for the main concepts of what's happening in the client / server shared architecture. The readme had some 404 links though. I'll get PR for this.

vikeen commented 9 years ago

Reference #50 for this fix. Let me know if you don't want the pr into master.

wesleytodd commented 8 years ago

Maybe this is not the place to mention this, but we have been using a pattern in a bunch of our express apps that I just bundled up into a module. It solves this problem when you are also using a front-end router that uses middleware like express. Maybe some solution like this would work here?

https://github.com/wesleytodd/react-express-middleware

Thoughts? Feedback?