1 <img src="raw/retrov.svg" alt="RetroV 1970s colors svg logo">
2
3 # RetroV
4
5 RetroV (pronounced "retro vee") is a virtual DOM (VDOM) rendering library.
6 It is browser-native and has no dependencies or build system.
7
8 It's tiny: **1129 bytes** (the usual minified gzipped metric).
9
10 Read more on the World Wide Web here:
11
12 http://ratfactor.com/retrov/
13
14 ## Installation
15
16 <script src="retrov.js"></script>
17
18 ## Example
19
20 Here's a quick glimpse (a whole web page!):
21
22 <!DOCTYPE html>
23 <html><body>
24 <script src="retrov.js"></script>
25 <script>
26 RV.render(
27 document.body,
28 ['div',
29 ['h1', 'Hello'],
30 ['p', 'Hello world, this is ',
31 ['em', 'RetroV'],
32 '!',
33 ]
34 ]
35 );
36 </script>
37 </body></html>
38
39 For more examples and fairly complete **tutorial**, take a look at
40 at `demo.html` in this repo or see it live here:
41
42 http://ratfactor.com/retrov/demo.html
43
44 You can also run the test suite `test.html` or run it live:
45
46 http://ratfactor.com/retrov/test.html
47
48 ## Updates!
49
50 * Raw verbatim HTML string nodes now update when they've changed.
51 * Added 'rvid' special property. See demo.html for demo/documentation.
52 * Added Crockford's jsmin.c to do minifying with no external dependencies.
53
54 ## Why?
55
56 I couldn't find anything exactly like it. Lots of bits and pieces
57 I liked, but not this exact thing.
58
59 ## Inspiration
60
61 [.dom](https://github.com/wavesoft/dot-dom/) -
62 Full hyperscript and DOM diff in 512 bytes! A direct inspiration. In fact, I
63 was originally going to fork this and change it to suit my preferences until I
64 decided to go in a radically different direction for VNode creation.
65
66 [Mithril](https://github.com/MithrilJS/mithril.js/) -
67 My old favorite, still getting updates. This is how I learned these practices
68 and it's the standard by which I judge them.
69
70 [ijk](https://github.com/lukejacksonn/ijk) -
71 DOM without the 'h()' function - pure JS data structures.
72 I _think_ I'd seen this concept before, but maybe not. At any rate, this
73 has heavily influenced RetroV. This library is for transforming data,
74 not rendering. Super compact code!