اگر از 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() را نمیخواند و سلول همراهِ نما آزاد میشود.جایگزینِ الگوی «واکشی هنگام mount» تماماً همین است: نما آنچه را لازم دارد میخواهد و فریمورک تصمیم میگیرد کِی بپرسد. بارگذاری به رویدادِ صفحه بسته نیست؛ به دیدهشدن بسته است.
یک متد با یک آرگومانِ اختیاری همزمان getter است و setter و مقدارِ محاسبهشده و وضعیت:1@ $mol_mem2count(next?:number){3return next??04}بدون آرگومان صدایش بزنید میخواند، با آرگومان مینویسد. @ $mol_mem متد را به سلولی کششده تبدیل میکند که هرگاه چیزی که خوانده تغییر کرده باشد بازمحاسبه میشود. مقدارِ محاسبهشده فقط یک متدِ @ $mol_mem است که متدهای دیگر را میخواند. به watcher نیازی نیست: اثرِ جانبی به یک رویداد تعلق دارد و هندلرِ رویداد متدی است که با @ $mol_action نشاندار شده.1@ $mol_mem2doubled(){3return this.count()*24}56@ $mol_action7increment(){8this.count(this.count()+1)9}ویرایش این صفحه در GitHubآیا این مفید بود؟بلهخیرقبلیمعرفیبعدیشروع به کاردر این صفحهکشیدن، نه هلدادنبدون چرخهٔ عمرهر ویژگی یک سلول استکدِ همزمانی که منتظر میماندهمهچیز یک بازنویسی استچطور منبعها را بخوانیمنامهابعدیType to search the documentation.