# Views, rendering, and the reactive data model
Source of truth: `src/js/elements/View.js` (`MMO.elements.View`) and `src/js/core/Template.js`
(`MMO.core.Template`, its base class). `MMO.core.Map` (`src/js/core/Map.js`) is the underlying reactive data
container — read that file directly for its exact API before relying on details not covered here.
## The three layers
```
MMO.core.Template – imperative DOM builder: open()/attr()/text()/html()/close(), no data binding
↑ extends
MMO.elements.View – + binds a subtree to a MMO.core.Map path: get/set/watch/loop/test, sub-views
↑ used by
CustomElement/CustomShadowElement – wires a View to a Web Component's lifecycle (see the custom-elements resource)
```
A `.jhs` file's compiled `render($view)` method is just a long chain of calls on a `View` (`$view` =
`this.view` for a custom element) — everything in the **jhs-syntax** resource is sugar over this API. You can
call the same methods yourself from a `