smalljs$molПоиск⌘ KДокументацияПесочницаСравнениеЭкосистемаО проектеRU
РоутингGetting StartedВведениеМентальная модельБыстрый стартОт TypeScript к view.treeСтруктура проектаИнструментарийEssentialsУстановкаВьюСостояние и реактивностьРоутингРендерингТестированиеДеплойРешение проблемDataЗагрузка данныхСхемы данныхГипер БазаMoreВитринаИз React, Vue и SvelteСборник рецептовAdvancedПлагиныМетаданные модуляОфлайнGhost-вьюAboutЧастые вопросыКомандаРелизыAPI$mol_button_major$mol_button_minor$mol_string$mol_number$mol_text$mol_paragraph$mol_list$mol_row$mol_link$mol_check$mol_switch$mol_select$mol_scroll$mol_page$mol_pick

Роутинг

Роутинг в $mol — не отдельная библиотека: URL это просто ещё один кусок реактивного состояния. Читайте его, пишите в него — и вью реагируют так же, как на любую ячейку. Кнопка «назад», глубокие ссылки и делимые URL достаются даром.

URL как состояние

$mol_state_arg выставляет параметры URL реактивными значениями. Свяжите один со свойством, и адресная строка станет вашим источником истины:1namespace $.$$ {2 export class $my_app extends $.$my_app {3 @ $mol_mem4 page( next?: string ) {5 return $mol_state_arg.value( 'page', next ) ?? 'home'6 }7 }8}Чтение page() возвращает текущее значение; вызов page('about') переходит по адресу. Всё, что читает page(), перерисовывается при изменении — включая кнопку «назад» браузера, которая обновляет ячейку за вас.

Переключение экранов

Скомбинируйте маршрутизируемое значение с обычным switch, чтобы выбрать, что рендерить. Поскольку вью ленивы, экраны, которые вы не показываете, никогда не строятся:1@ $mol_mem2body_content() {3 switch ( this.page() ) {4 case 'about': return [ this.About() ]5 case 'docs': return [ this.Docs() ]6 default: 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, так что подсветка текущей страницы не требует дополнительного состояния.

Несколько параметров

Аргументы независимы, поэтому экран может маршрутизироваться сразу по нескольким. Этот самый сайт документации маршрутизируется и по section, и по page:1<= Guide_link $mol_link2 arg *3 section \docs4 page \viewsКаждый ключ ходит туда-обратно через URL, поэтому любое вью делимо и добавляемо в закладки по построению. Задание одного аргумента оставляет остальные нетронутыми, что превращает глубокие ссылки — конкретную секцию и страницу и якорь — просто в вопрос установки тех ключей, которые вам важны.
Редактировать эту страницу на GitHubБыло полезно?ДаНетНазадСостояние и реактивностьВперёдРендеринг
На этой страницеURL как состояниеПереключение экрановСсылки, задающие аргументыНесколько параметровСостояние, которого не должно быть в URLДальше
Type to search the documentation.