This version of HotDrink is not under active development. A completely rewritten and redesigned implementation based on our newest research findings can be found here.
An experimental (and partial) Rust/WebAssembly-based implementation is also available hotdrink-rs repo.
HotDrink is a JavaScript library for User Interface programming. Instead of requiring programmers to write explicit event handlers, HotDrink derives user interface behavior from a declarative specification of data dependencies.
For a brief overview on the functionality HotDrink provides, see the HotDrink overview.
For a thorough introduction on how to use HotDrink, see How to use HotDrink.
You can find compiled versions of HotDrink on GitHub under releases.
Building is performed with the make
tool. Run make
with no arguments to
get a list of possible make targets. They are:
hotdrink
- Compile the HotDrink library; this is probably the target you wanthotdrink.min
- Compiled minified version of HotDrink library; same library, smaller filefn-worker
- Include file for HotDrink's web worker framework; only needed if you want to write web workers using HotDrink's frameworkcompile-dfa
- A DFA compiler for models; this tool can make a more efficient constraint solver for certain types of constraint systems; it's unlikely that you'll need thisqunit
- QUnit tests; for testing purposes onlyhowto
- Export how-to documentation; note, however, that you can find this on GitHuball
- all of the aboveclean
- remove all created files
Build results may be found in the scripts
directory, with the exception of
the how-to, which is found in docs/howto/publish
.
The following tools are required for building.
- The Node.js runtime is necessary to run the following tools
- The TypeScript compiler for compiling TypeScript files into JavaScript
- The mapcat tool for concatenating resulting map files.
- The uglify-js tool for creating minimized version.
- GNU Emacs with org mode version 8.3 for generating the how-to. Note that it's probably easier to download the generated how-to on GitHub under releases.
This repository is organized as follows.
docs
- Documentationdocs/howto
- The HotDrink how-to: in-depth instructions on using HotDrink
src
- Source codesrc/apps
- Stand-alone applicationssrc/hd
- HotDrink source codesrc/qunit
- QUnit testssrc/workers
- HTML5 web workers
test
- Files for testingtest/cases
- Stand-alone web pages using HotDrinktest/models
- JavaScript defining various models using HotDrink; no web pagestest/qunit
- Harness for running QUnit teststest/vis
- Visualizer for viewing models
In addition, building HotDrink will create the following directories.
modules
- Compiled versions of each TypeScript modulescripts
- Build resultstmp
- Temporary compilation results
These directories are deleted by make clean
.