# UnitJS UnitJS is a tiny Javascript framework to write web applications. It provides four essential modules to deal with asynchronous functions (technically, it's a monad obtained by currifying the CPS functions of Javascript like `setTimeout`), value caching, DOM manipulation and basic functional needs like composition or object projections. ## Usage ### With [SJW](https://git.marvid.fr/Tissevert/SJW) UnitJS comes as a SJW package. You can install it by copying the `src/` directory of this repository to your package database by issuing the following command from the current directory : ``` $ cp -r src/ ~/.sjw/unitJS ``` Then, using unitJS in your projects is as simple as writing : ``` import * as Async from UnitJS.Async; ``` in any module if you want to use the `Async` module for instance and compile your code using the `--include` option of `sjw` with package `unitJS` : ``` $ sjw -I unitJS your/code/src -o your/code/main.js ``` Note that all modules have their path prefixed by a common `UnitJS` component and that SJW will only include the modules actually used in your code, not all of UnitJS. ### As a standalone JS script If you don't want to or can't use SJW, it's still possible to use UnitJS by generating a single script that can then be loaded from your web page like this : ``` ``` The file `unit.js` can be easily generated with `make`, which actually just calls the `unit.js.tpl` script. Note that you can still generate custom «partial» versions of `unit.js` if you don't use all of it by overriding the `SRC` variable of the `Makefile` like so : ``` make SRC="src/UnitJS/Dom.js src/UnitJS/Cache.js" ``` or by manually calling `./unit.js.tpl` with the files you want, like the `Makefile` does.