Wrapper for MattEsch's virtual-dom with a bit of Haxe awesomeness sprinkled around the edges.
You can use create, diff and patch from vdom.VDom yourself, if you wish, or you can use a VRoot like so:
import vdom.VDom.*;
import js.Browser.*;
class Main {
static function main() {
var root = new vdom.VRoot();
document.body.appendChild(root);
root.update(
div({ className: 'test' }, ['hello world'])
);
root.update(
div({ className: 'test' }, ['holla mundo'])
);
//And with tink_hxx
root.update('
<div class="test">Hi HXX!!!</div>
');
}
}When compiling with -lib tink_hxx the argument can either be a string constant or a VNode. If you call update with a string constant without -lib tink_hxx you will get a compiler warning, if it looks vaguely like HXX (i.e. the first non-whitespace character is "{" or "<").
While a VRoot can be used as an Element it is not quite the same. For example if you were to call root.update(span({ })) then the <div> will be transparently replaced with a <span>. You can poll the current element with root.currentElement() but keep in mind that it might change over the life time of a VRoot.