Hacker News new | ask | show | jobs
by webmaven 1495 days ago
React fails the main requirements: “Server rendered web pages, no fancy client side js, just good old websites.”
3 comments

"By default, Next.js pre-renders every page. This means that Next.js generates HTML for each page in advance, instead of having it all done by client-side JavaScript. Pre-rendering can result in better performance and SEO."
Good to know. Thanks for correcting my misapprehension!
React JSX is hands down the best templating engine for Server Rendered Pages, imo.

Doesn't have to be a SPA or include a bunch of fancy client side JS or anything.

Cool, good to know. What makes JSX such a good templating engine?
It's personal preference of course, but imo JSX is just a very clean way of writing frontends. Easy composability, easy data bindings which don't have to be two-way if you don't want.

My sense with many templating engines is they are trying to crowbar programming functionality into HTML and always comes across clunky. It's usually a separate language from your server code entirely. Inline If statements and For Loops embedded in your HTML. And composing a template with a subtemplate is often clumsy.

With JSX you just write your normal JavaScript or Typescript and output JSX. Then the JSX is turned into HTML and returned to the browser.

But of course I'm not familiar with every HTML templating library out there, but I've used a few and I really love working with JSX.

My own favorite syntax(es) are TAL, TALES, and METAL (Template Attribute Language, TAL Expression Syntax, and Macro Expansion TAL). There are many implementations in various languages. The OG implementation was in Python as part of the Zope:

https://pagetemplates.readthedocs.io/en/latest/tal.html

These days I reach for Chameleon, another Python implementation:

https://chameleon.readthedocs.io/

I'm aware of at least five implementations for JS: template-tal, jstal, Distal, DomTal, ZPT-JS.

Cool, thanks for the recommendations! I don't write a lot of python anymore but I'll check these out.
I guess you've never used NextJS because it basically uses JS as a server side templating language, and since pages are by default server side rendered, there's no client side JS (unless you want to add it).

You can go to a server side NextJS rendered page that worked even when JS is disabled, that uses only HTML and CSS and no JS whatsoever.

You're right. As my other comment makes explicit, my wheelhouse is mostly Python. The last time I really dug into JS frameworks was about a decade ago, and was largely jQuery, D3, and friends.

Thanks for bringing to my attention something I didn't know!