smalljs$molПошук⌘ KДокументаціяПісочницяПорівнянняЕкосистемаПро проєктUK
Ментальна модельGetting StartedВступМентальна модельПочаток роботиВід TypeScript до view.treeСтруктура проєктуІнструментарійEssentialsВстановленняВидиСтан і реактивністьМаршрутизаціяРендерингТестуванняДеплойРозв'язання проблемDataОтримання данихСхеми данихGiper BazaMoreВітринаЗ React, Vue та SvelteЗбірник рецептівAdvancedПлагіниМетадані модуляОфлайнПодання-привиди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

Ментальна модель

Якщо ви прийшли з React чи Vue, перші дні в $mol минають у пошуках того, чого тут немає: computed, watch, useEffect, onMounted, fetch у хуку життєвого циклу. Вони не заховані десь в API — для них просто немає місця в моделі. Ця сторінка — п'ятихвилинна версія цієї моделі. Прочитайте її перед Видами і повертайтеся, коли чергове знайоме ім'я не знайдеться.

Тягнемо, а не штовхаємо

Ніщо не обчислюється, доки цього хтось не прочитає. Подання малюється, читаючи свої властивості; кожна властивість читає те, що потрібно їй; ланцюг залежностей збирається з цих читань сам. Немає підписки, яку треба оголосити, і немає watch, який треба зареєструвати: читання і є підпискою.1$my_profile $mol_view2 sub /3 <= Name $mol_view4 sub / <= name \1namespace $.$$ {2 export class $my_profile extends $.$my_profile {3 @ $mol_mem4 user() {5 return this.$.$mol_fetch.json( 'https://api.example.com/me' ) as { name: string }6 }7 name() {8 return this.user().name9 }10 }11}Рендеринг Name читає name(), name() читає user(), user() іде в мережу. Ніхто не розповідав поданню про запит і ніхто не розповідав запиту про подання. Коли user() змінюється, переобчислюється все, що його читало, і більше нічого.

Жодного життєвого циклу

Немає ні mounted, ні useEffect, ні created. Дані запитуються читанням властивості, а свої властивості подання читає тоді, коли малюється. Тож приклад вище завантажує користувача тієї миті, коли $my_profile з'являється на екрані, і не раніше. Коли подання йде з екрана, user() більше ніхто не читає, і комірка звільняється разом із поданням.Це і є вся заміна шаблону «завантажити на монтуванні»: подання просить те, що йому потрібно, а фреймворк вирішує, коли питати. Завантаження прив'язане не до події сторінки, а до того, що подання видно.

Властивість — це комірка

Один метод із необов'язковим аргументом — це водночас гетер, сетер, обчислюване значення і стан:1@ $mol_mem2count( next?: number ) {3 return next ?? 04}Виклик без аргументу читає, з аргументом — записує. @ $mol_mem перетворює метод на кешовану комірку, яка переобчислюється, коли змінилося щось із прочитаного нею. Обчислюване значення — це просто метод із @ $mol_mem, що читає інші методи. Спостерігач не потрібен: побічний ефект належить події, а обробник події — це метод, оздоблений @ $mol_action.1@ $mol_mem2doubled() {3 return this.count() * 24}5 6@ $mol_action7increment() {8 this.count( this.count() + 1 )9}
Редагувати цю сторінку на GitHubЦе було корисно?ТакНіНазадВступДаліПочаток роботи
На цій сторінціТягнемо, а не штовхаємоЖодного життєвого циклуВластивість — це коміркаСинхронний код, що вміє чекатиУсе — це перевизначенняЯк читати вихідникиІменаДалі
Type to search the documentation.