Если вы пришли из React или Vue, первые дни в $mol уходят на поиски того, чего тут нет: computed, watch, useEffect, onMounted, fetch в хуке жизненного цикла. Они не спрятаны где-то в API — для них просто нет места в модели. Эта страница — пятиминутная версия этой модели. Прочтите её перед Вью и возвращайтесь, когда очередное знакомое имя не найдётся.
Ничего не вычисляется, пока это кто-нибудь не прочитает. Вью рендерится, читая свои свойства; каждое свойство читает то, что нужно ему; цепочка зависимостей собирается из этих чтений сама. Нет подписки, которую надо объявить, и нет watch, который надо зарегистрировать: чтение и есть подписка.1$my_profile$mol_view2 sub /3<= Name $mol_view4 sub /<= name \1namespace $.$${2export class $my_profileextends$.$my_profile{3@ $mol_mem4user(){5return this.$.$mol_fetch.json('https://api.example.com/me')as{name:string}6}7name(){8return this.user().name9}10}11}Рендеринг Name читает name(), name() читает user(), user() идёт в сеть. Никто не рассказывал вью про запрос и никто не рассказывал запросу про вью. Когда user() меняется, пересчитывается всё, что его читало, и больше ничего.
Нет ни mounted, ни useEffect, ни created. Данные запрашиваются чтением свойства, а свои свойства вью читает, когда рендерится. Поэтому пример выше загружает пользователя в тот момент, когда $my_profile появляется на экране, и не раньше. Когда вью уходит с экрана, user() больше никто не читает, и ячейка освобождается вместе с вью.Это и есть вся замена паттерну «загрузить на маунте»: вью просит то, что ему нужно, а фреймворк решает, когда спрашивать. Загрузка привязана не к событию страницы, а к тому, что её видно.
Один метод с необязательным аргументом — сразу и геттер, и сеттер, и вычисляемое значение, и состояние:1@ $mol_mem2count(next?:number){3return next??04}Вызов без аргумента читает, с аргументом — пишет. @ $mol_mem превращает метод в кешируемую ячейку, которая пересчитывается, когда изменилось что-то из прочитанного ею. Вычисляемое значение — это просто метод с @ $mol_mem, читающий другие методы. Наблюдатель не нужен: побочный эффект принадлежит событию, а обработчик события — это метод, помеченный @ $mol_action.1@ $mol_mem2doubled(){3return this.count()*24}56@ $mol_action7increment(){8this.count(this.count()+1)9}Редактировать эту страницу на GitHubБыло полезно?ДаНетНазадВведениеВперёдБыстрый стартНа этой страницеТянем, а не толкаемНикакого жизненного циклаСвойство — это ячейкаСинхронный код, который умеет ждатьВсё — переопределениеКак читать исходникиИменаДальшеType to search the documentation.