package html_of_jsx
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
Render HTML with JSX
Install
dune-project
Dependency
Authors
Maintainers
Sources
html_of_jsx-0.1.1.tbz
sha256=2de32525b5f38b4765c1bbfeba35fcfcc6d26b66a244374e86e109129bb729a6
sha512=a5a27d16aed5c3f8fcacd72578ad63c63cd33276356883fcf282709a56b574a92d35d1af2ae18a61491a28a86b89f4571d8596e000ae4e06201758eb3d8892e5
Description
html_of_jsx is a JSX transformation and a library to write HTML declaratively in OCaml (mlx) and Reason.
Added to opam-repository:
README

Render HTML with JSX
html_of_jsx is a ppx transformation and a library to write HTML in OCaml, Reason and mlx.
Features
- Brings the "component model" to HTML
- Type-safe, validates attributes and their types
- Works with OCaml, Reason and mlx.
- Supports all of the Reason's JSX features (uppercase components, fragments, optional attributes, punning)
- but with a few improvements (lowercase components, no need to add the ppx annotation)
- No React idioms (no
className, nohtmlFor, noonChange, etc...) - Integrates well with htmx
Minimal core API
JSX.renderto render a JSX element to an HTML string- Helpers to construct nodes:
JSX.string,JSX.format,JSX.int,JSX.float,JSX.null,JSX.list,JSX.array,JSX.unsafe - Advanced rendering:
JSX.render_to_channel,JSX.render_streaming
- Designed to work on the server, but can be used on the client-side as well (with Melange or jsoo)
Installation
opam install html_of_jsx -y(libraries html_of_jsx)
(preprocess (pps html_of_jsx.ppx))Usage
let element: JSX.element =
<a href="https://x.com/davesnx">
<span> (JSX.string "Click me!") </span>
</a>
let html: string = JSX.render element
(* <a href="https://x.com/davesnx"><span>Click me!</span></a> *)Check the demo/server.re file to see a full example.
Documentation
- Main docs: html_of_jsx documentation
- Getting started: setup and first render
- Core: props, children, fragments
- Rendering: string/channel/streaming APIs
- HTMX mode:
-htmxattributes and extension loaders - React compatibility:
-reactattribute aliases
Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
Development
# Install dependencies
make install
# Run tests
make test
# Build the project
make build
# Run the demo server
make demoCredits
This library was extracted from server-reason-react and later simplified to work only with HTML5.
License
Dev Dependencies (15)
-
omd
with-dev-setup -
tm-grammars
with-dev-setup -
ochre
with-dev-setup -
yocaml_unix
with-dev-setup -
yocaml
with-dev-setup -
tiny_httpd
with-dev-setup -
ocaml-lsp-server
with-dev-setup -
ocamlformat-mlx
with-dev-setup | with-test -
mlx
with-test | with-dev-setup -
ocamlformat
>= "0.26.1" & (with-dev-setup | with-test) -
reason
>= "3.10.0" & with-test -
benchmark
with-test -
alcotest
with-test -
odoc-parser
with-doc -
odoc
with-doc
Conflicts
None
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page