Роутинг в $mol — не отдельная библиотека: URL это просто ещё один кусок реактивного состояния. Читайте его, пишите в него — и вью реагируют так же, как на любую ячейку. Кнопка «назад», глубокие ссылки и делимые URL достаются даром.
$mol_state_arg выставляет параметры URL реактивными значениями. Свяжите один со свойством, и адресная строка станет вашим источником истины:1namespace $.$${2export class $my_appextends$.$my_app{3@ $mol_mem4page(next?:string){5return $mol_state_arg.value('page',next)??'home'6}7}8}Чтение page() возвращает текущее значение; вызов page('about') переходит по адресу. Всё, что читает page(), перерисовывается при изменении — включая кнопку «назад» браузера, которая обновляет ячейку за вас.
Скомбинируйте маршрутизируемое значение с обычным switch, чтобы выбрать, что рендерить. Поскольку вью ленивы, экраны, которые вы не показываете, никогда не строятся:1@ $mol_mem2body_content(){3switch (this.page()){4case 'about':return[this.About()]5case 'docs':return[this.Docs()]6default:return[this.Home()]7}8}
В view.tree ссылка может задавать аргументы URL декларативно — клик по ней переходит без обработчика:1<= About_link $mol_link2 arg *3 page \about4 sub /<= about_label \About$mol_link также помечает себя активной (mol_link_current), когда её аргументы совпадают с текущим URL, так что подсветка текущей страницы не требует дополнительного состояния.