package html_of_jsx

  1. Overview
  2. Docs
Render HTML with JSX

Install

dune-project
 Dependency

Authors

Maintainers

Sources

html_of_jsx-0.1.0.tbz
sha256=a62b73fe66b6e40196cc06cc0771184d42923e9c571183ecc793cd58f0b407dd
sha512=b25ba1321a5413942bf781aa9a8cacdc92eb03c1099a4c564a061b32cc57bbae571465d123d98548aba1cc78c3bb79fbf415e29934a8318c15ab9ffc0ea8cceb

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

Html_of_jsx logo Html_of_jsx logo

Render HTML with JSX

html_of_jsx is a JSX transformation and a library to write HTML in OCaml, Reason and mlx.

Features

  • Brings the "component model" to HTML
  • 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, no htmlFor, no onChange, etc...)
  • Integrates well with htmx
  • Type-safe, validates attributes and their types (it can be better thought)
  • Works with OCaml, Reason and mlx
  • Minimal core API

    • JSX.render to render a JSX element to an HTML string
    • Helpers to construct nodes: JSX.string, 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> {"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

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 demo

Credits

This library was extracted from server-reason-react and later simplified to work only with HTML5.

License

MIT © David Sancho

Dependencies (4)

  1. pretty_expressive >= "0.5"
  2. ppxlib >= "0.25.0"
  3. ocaml >= "4.14"
  4. dune >= "3.24"

Dev Dependencies (15)

  1. omd with-dev-setup
  2. tm-grammars with-dev-setup
  3. ochre with-dev-setup
  4. yocaml_unix with-dev-setup
  5. yocaml with-dev-setup
  6. tiny_httpd with-dev-setup
  7. ocaml-lsp-server with-dev-setup
  8. ocamlformat-mlx with-dev-setup | with-test
  9. mlx with-test | with-dev-setup
  10. ocamlformat >= "0.26.1" & (with-dev-setup | with-test)
  11. reason >= "3.10.0" & with-test
  12. benchmark with-test
  13. alcotest with-test
  14. odoc-parser with-doc
  15. odoc with-doc

Used by (2)

  1. dream >= "1.0.0~alpha7"
  2. ochre

Conflicts

None