package bonsai

  1. Overview
  2. Docs
A library for building dynamic webapps, using Js_of_ocaml

Install

Dune Dependency

Authors

Maintainers

Sources

bonsai-v0.14.0.tar.gz
md5=b5e743dbfa64d0da5fd660f14cd0b549

Description

Bonsai is a library for building reusable UI components inside an Incremental-style UI framework such as Incr_dom. The API is broken up into roughly two modules:

  • Creating components
  • Combining components

Published: 31 May 2020

README

"Bonsai!"

Bonsai is a library that is used to build browser-based frontend applications in OCaml. It builds on top of the technology and lessons learned from Incr_dom [^incr_dom], an incremental frontend framework.

The main differences between Incr_dom and Bonsai are

  • Bonsai has a notion of first-class components - read more

  • Incr_dom expects users to program in the Incremental monad; in Bonsai, incrementality is added for you under the hood - read more

  • Combining Bonsai components is easy (and fun!) - read more

Similarities between Incr_dom and Bonsai:

  • Both are built on top of Incremental library for performance optimizations

  • Both make use of the Vdom library and associated helper libraries (lib/vdom_input_widgets, lib/vdom_keyboard, etc..) to help developers construct the view of the app.

  • Bonsai components are embeddable inside of existing Incr_dom apps!

Table of Contents

Getting Started

Reading Bonsai Concepts is the best place to get an overview of the library and to build a mental model for structuring Bonsai applications.

Examples of using Bonsai in a web browser can be found in web/examples.

[^incr_dom]: For interoperability between Bonsai and Incr_dom, see Using Bonsai Inside Incr_dom. For a short history of Bonsai and Incr_dom, see History

Dependencies (10)

  1. dune >= "2.0.0"
  2. virtual_dom >= "v0.14" & < "v0.15"
  3. ppx_pattern_bind >= "v0.14" & < "v0.15"
  4. ppx_jane >= "v0.14" & < "v0.15"
  5. incremental >= "v0.14" & < "v0.15"
  6. incr_map >= "v0.14" & < "v0.15"
  7. incr_dom >= "v0.14" & < "v0.15"
  8. core_kernel >= "v0.14" & < "v0.15"
  9. async_kernel >= "v0.14" & < "v0.15"
  10. ocaml >= "4.08.0"

Dev Dependencies

None

Used by

None

Conflicts

None