smalljs$molجستجو⌘ Kمستنداتزمین بازیمقایسهاکوسیستمدربارهFA
مدل ذهنیGetting Startedمعرفیمدل ذهنیشروع به کاراز تایپ‌اسکریپت به 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() را نمی‌خواند و سلول همراهِ نما آزاد می‌شود.جایگزینِ الگوی «واکشی هنگام mount» تماماً همین است: نما آنچه را لازم دارد می‌خواهد و فریم‌ورک تصمیم می‌گیرد کِی بپرسد. بارگذاری به رویدادِ صفحه بسته نیست؛ به دیده‌شدن بسته است.

هر ویژگی یک سلول است

یک متد با یک آرگومانِ اختیاری هم‌زمان getter است و setter و مقدارِ محاسبه‌شده و وضعیت:1@ $mol_mem2count( next?: number ) {3 return next ?? 04}بدون آرگومان صدایش بزنید می‌خواند، با آرگومان می‌نویسد. @ $mol_mem متد را به سلولی کش‌شده تبدیل می‌کند که هرگاه چیزی که خوانده تغییر کرده باشد بازمحاسبه می‌شود. مقدارِ محاسبه‌شده فقط یک متدِ @ $mol_mem است که متدهای دیگر را می‌خواند. به watcher نیازی نیست: اثرِ جانبی به یک رویداد تعلق دارد و هندلرِ رویداد متدی است که با @ $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.