# 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. ## How to use it in your project ### As a [`SJW`](https://git.marvid.fr/Tissevert/SJW) package. #### With [`guix`](https://guix.gnu.org/) The easiest way to use it in your web projects is to simply [package them with `guix`](https://git.marvid.fr/Tissevert/SJW#how-not-to-install). #### Otherwise You can follow [these instructions](https://git.marvid.fr/Tissevert/SJW#when-guix-is-not-an-option) to use it without `guix`. ### Without `SJW` 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. When used that way, the `UnitJS` library will be available to your Javascript code as a global variable `unitJS` containing each of the modules (`Async`, `Dom`, etc.) as an attribute.