DEV Community

Discussion on: A First Look at MarkoJS

Collapse
 
peerreynders profile image
peerreynders • Edited

I think I became aware of MarkoJS in early 2018 - but it seems to have been pretty quiet since then - hype wise at least.

Would it be an accurate guess that MarkoJS uses distinct but integrated rendering approaches on the server and client side?

The mainstream JS frameworks tend to have SSR "bolted on" after the fact by running a surrogate client environment on the server but it sounds like MarkoJS has a more phased approach:

  1. Render as much as possible on the server first - with server style rendering techniques.
  2. On the client take full advantage of the server pre-rendered content but have the dynamic behaviour (more or less) "hook" into that content.

I've been working on a future version

Something to do with this, from Maybe you don’t need that SPA?

These new reactive primitives will replace the VDOM in our runtime ...

Collapse
 
ryansolid profile image
Ryan Carniato

Yes, Marko's hybridness is part of its DNA. Marko started its life more like Jade/Pug with a light hydration layer. Marko 4 in 2017 brought the VDOM which was pretty late to the party, but it is largely since client rendering wasn't its focus.

The unique feature being a combination of separating out JS component code that doesn't need to be shipped to the client, and out of order streaming async content. This means it doesn't wait to render the static parts of the page rendering placeholders and then inserts the async rendered sections in the same stream via script tag insertion as it finishes. Both of these are hype new experimental features in popular frontend libraries and are getting names like Island's Architecture or Suspense, but Marko has been using these in production for years.

But addressing the elephant in the room. You are right there has been a dip in momentum. Patrick the creator of Marko moved on in late 2017 and that definitely affected its presence in the community. The team continued the effort of supporting eBay and has been working to modernize tooling but we definitely need to improve public transparency.

As for what I've been doing on the team, definitely. It's been a lot of designing, but we've been working on a new client runtime. As one would expect with reactivity and client profiling being my strong points. I'm comfortable saying the runtime will be significantly smaller, and client performance in a tier very few UI libraries have seen. This though only serves as a foundation for being able to achieve the type of partial hydration in the article. Still a lot more to be done, but it's definitely really interesting work given how ahead of the curve Marko is in certain areas, and where it is classically weak are my specialties.