Views and holes

A View is a hybrid value — the value is the render tree. A bare member or $name is a reactive hole; if/else and for are the only structural joints. Everything is known at compile time, so there is no virtual DOM: a state write runs exactly the statements bound to that key.

View {
	article {
		h1 { title }                  // a hole: patched when title changes
		if (draft) { p { 'unsaved' } }  // a structural joint
		for (n of notes) {            // the other structural joint
			li { n.label }
		}
	}
}