package html_of_jsx
Render HTML with JSX
Install
Dune Dependency
Authors
Maintainers
Sources
html_of_jsx-0.0.4.tbz
sha256=12c49cb44a7476921d097248540e222cb412cf49a283cc20b92775e2bf2b9c39
sha512=96748d99db49817a900ce2b310d5f496cee5e96ba1c90611d204c397549e55797eb76f0952912bcfd5be17e06cf5029fb85b19417ea47ba4543103eb0536ab55
Description
html_of_jsx is a JSX transformation that allows you to write HTML declaratively.
Published: 27 Jun 2024
README
"
"
Render HTML with JSX
html_of_jsx is a JSX transformation to write HTML declaratively in OCaml, Reason and mlx.
Features
- Brings the component model to HTML
- Supports most of features from JSX (uppercase components, fragments, optional attributes, punning)
- but with a few improvements (lowercase components, no need to add annotations)
- No React idioms (no
className
, nohtmlFor
, noonChange
, etc...) - Integrates well with htmx
- Type-safe, validates attributes and their types (it can be better thought)
- Works with OCaml, Reason and mlx
Minimal
JSX.render
to render a JSX element to a HTML stringJSX.*
to construct DOM Elements and DOM nodes (JSX.string
,JSX.int
,JSX.null
,JSX.list
)
- Created to work on the server-side, but can be used on the client-side as well (with Melange or jsoo)
Installation
opam install html_of_jsx
+ (library html_of_jsx)
+ (preprocess (pps html_of_jsx.ppx))
Usage
let element: JSX.element = <a href="https://x.com/davesnx">
<span> {"Click me!"} </span>
</a>
let html: string = JSX.render(element);
Check the demo/server.re file to see a full example.
Documentation
Check the Documentation to know more about the API and features.
Credits
This library was extracted from server-reason-react and later simplified to work only with HTML5.
Dev Dependencies (7)
-
tiny_httpd
with-dev-setup
-
ocaml-lsp-server
with-dev-setup
-
ocamlformat
= "0.26.1" & (with-dev-setup | with-test)
-
odoc
with-doc
-
reason
>= "3.10.0" & with-test
-
benchmark
with-test
-
alcotest
with-test
Used by (1)
-
dream
>= "1.0.0~alpha7"
Conflicts
None
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page