Getting Started
→ in-browser demo - see Bruck for a nicer editor experience, possibly even a proper editor
API
Examples
- embeddable-content: minimal markup (container + link), PE results in augmented DOM thanks to custom element's client-side processing
Tips
- JSX conventions: uppercase vs. lowercase, looping, Fragment
- limited post-processing (unlike DOM) ⇒ explicit wrapping macros (e.g.
<CardHeader> <h3> because if(children[0].tagName === "h3") { addWrapper(…); } doesn't work)
- scalar vs. complex attributes
Internals
Background
Marketing
-
component-oriented templating
traditional templating does not sufficiently account for components (≈ abstraction + composition)
-
nutshell: generating static HTML, typically server-side rendering
-
"declarative rendering", "expressive, declarative UI components"
-
tech-agnostic (JS as lingua franca)
-
JSX for markup abstraction
-
JavaScript import semantics
-
testimonials
-
an example on Glitch might double as effective marketing
-
blurbs
if you're stuck on a JVM project but expect a suitable FE environment anyway
if you like React's developer workflow (modern front-end tooling), but are
unhappy with consequences for users (bloat, performance) and complexity
(SSR + rehydration)
Alternatives
- Pug
- mixins for abstraction,
named blocks for composition
- implementations in various langauges, but with differences and thus limited portability? (e.g. versioning: uncertain whether Java implementation supports named blocks)
- global namespace for mixins? potentially brittle, also less explicit and flexible than JavaScript imports
- Mustache:
- lacks abstraction/composition capabilities
- implementations in many langauges, but with differences and thus limited portability?
- React SSR:
- same abstraction/composition capabilities
- client-side origins (e.g. state, component life cycle) might complicate debugging and overhead while browsing official documentation
- uncanny valley (e.g.
className)
- runtime-agnosticism; Node only? (i.e. integration with other languages/runtimes would require a sidecar with a corresponding API - i.e. a contract specification between application and renderer - and thus additional overhead/complexity)
Getting Started
views/manifest.jsconvention)→ in-browser demo - see Bruck for a nicer editor experience, possibly even a proper editor
API
<Fragment>(cf. 867417f)paramsetc.)BufferedStreamto emit string rather than writing to streamExamples
Tips
<CardHeader> <h3>becauseif(children[0].tagName === "h3") { addWrapper(…); }doesn't work)Internals
generateHTML, JSX idiosyncrasies)createElement,Renderer)Background
resulted in experimenting (flailing) with Nashorn and servlets
Marketing
component-oriented templating
traditional templating does not sufficiently account for components (≈ abstraction + composition)
nutshell: generating static HTML, typically server-side rendering
"declarative rendering", "expressive, declarative UI components"
tech-agnostic (JS as lingua franca)
JSX for markup abstraction
JavaScript import semantics
testimonials
an example on Glitch might double as effective marketing
blurbs
Alternatives
named blocks for compositionclassName)