-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Differences with yew
#30
Comments
But I really can't speak on In terms of what We've chosen
I think that Percy's only goal is to make it easy to build production grade web applications in Rust without needing to learn a ton of new concepts. And it should be dead simple to choose which pieces you use and which you decide to replace with other libraries. The biggest milestone will be a With all types of production level considerations like:
But before that we'll need to learn a bit more about what a production grade Rust web application should look like (by actually using Percy ourselves and fixing points of friction) |
Closing but feel free to re-open if ya have more thoughts to add!!! |
re:fetch, I was talking about something that can be used both on the server side and the clientside transparently. Something like what |
re: What level of interop with JS libraries are we aiming for? As for For percy core itself, such as the dom patching, |
I now see that the |
Ahh now I see what you're saying. At first thought I'd actually be against that idea since it would mean you'd have to wait for a bunch of async requests to finish before the page was served. I think that is best to happen on the frontend with a load spinner and the backend should do nothing more than render a string of HTML and send it down Also |
Like many other ideas, I took that from Next.js (
Perhaps, but that is more of a cached-single-page-app pattern, vs isomorphic which is one of this project's keywords. Of course, SPA may be a better pattern for wasm at this point, what with no code splitting |
Hmm interesting.. I was imagining that users would be seeing absolutely nothing until these async requests finished which sounded like a poor experience, but okay it sounds like that doesn't need to be the case when you have code splitting.
Ya that's probably a blocker for exploring something like this. Hmmm so maybe exploring code splitting could be its own issue? There's already an example of using That's just off the top of my head though... we'd probably have to think a bit more about the ergonomics |
Going to the other module through JS seems quite a bit of painal. Better tools for that will hopefully materialize soon, and native support for wasm-wasm splitting is also in the works. That said, |
Another totally insane approach would be to have async fragments in the page. This way components can first give the page a placeholder, so that something appears and then follow that by a proper render, all of this streamed as dumb html a-la Facebook's BigPipe / SPA + fetch:
SSR:
|
That's a very interesting visual. It would be nice if it was easy to choose what made sense in your own situation. Because in some situations
Will not feel faster to a user than seeing something immediately with a load spinner. It's probably a bit case by case. This certainly sounds like something that we could proof of concept to see how it feels in different scenarios though. I think we're already recommending a structure that makes this pretty "simple" to try out.
Then on the client side we'd use fetch requests, and on the server side we'd use Of course there are probably more fine grained considerations than that but that sounds like how something like that could generally look. |
too bad async/await is taking foreverish |
What are the architectural differences to
DenisKolodin/yew
that are intentional, and what are incidental?What is the project's stance on
koute/stdweb
?This question was prompted by thinking of what an isomorphic network fetch would look like, and looking at https://github.com/DenisKolodin/yew/blob/master/src/services/fetch.rs
The text was updated successfully, but these errors were encountered: