رویداد
در اپادیتور، رویداد به وقوع یک کنش، اتفاق یا تغییر وضعیت گفته میشود که بهعنوان یک محرک عمل میکند و باعث اجرای یک یا چند عملکرد میشود.
به بیان ساده، رویداد مشخص میکند که اپلیکیشن چه زمانی باید به یک اتفاق واکنش نشان دهد.
نمونههایی از رویدادها:
- کلیک یا لمس کاربر روی یک دکمه
- باز شدن و بارگذاری یک صفحه
- تغییر مقدار یک فیلد ورودی
- تغییر مقدار یک متغیر
- قطع شدن یا وصل شدن اینترنت
رویداد بهتنهایی کاری انجام نمیدهد؛ فقط زمان شروع اجرای یک یا چند عملکرد را مشخص میکند.
نقش رویداد در منطق اپلیکیشن
رویدادها یکی از پایههای اصلی منطق اپلیکیشن هستند. بدون رویداد، عملکردها زمان مشخصی برای اجرا ندارند و اپلیکیشن نمیداند چه زمانی باید به رفتار کاربر یا تغییرات محیطی واکنش نشان دهد. در واقع، هر تغییری در وضعیت اپلیکیشن یا هر واکنشی به رفتار کاربر، با یک رویداد آغاز میشود.
در اپادیتور، رویدادها نقطه شروع جریان اجرا هستند. برای مثال:
- رویداد کلیک: وقتی کاربر روی یک دکمه، تصویر یا گروه کلیک میکند، یک صفحه جدید باز شود یا فرمی ارسال گردد.
- رویداد ورود به صفحه: وقتی کاربر وارد یک صفحه خاص میشود، یک متغیر ایجاد میشود یا مقدار اولیه متغیر مورد نظر ثبت می شود.
- رویداد تغییر وضعیت اینترنت: وقتی اتصال اینترنت قطع یا وصل میشود، یک پیام مناسب (مانند اسنکبار یا هشدار) به کاربر نمایش داده شود تا از وضعیت شبکه مطلع شود.
- رویداد تغییر متغیر: وقتی مقدار یک متغیر تغییر میکند (مثلاً تغییر فیلتر جستجو یا تعداد محصول)، لیست محتوا یا قیمت نهایی بهطور خودکار بهروزرسانی شود.
- رویداد باز شدن اپ: بلافاصله پس از اجرای اپلیکیشن توسط کاربر، وضعیت لاگین بودن او بررسی شود یا تنظیمات اولیه بارگذاری گردند.
در همه این مثالها، رویداد نقطه شروع جریان اجرا است که تعیین میکند کدام عملکرد در چه زمانی باید اجرا شود.
تفاوت رویداد، شرط و عملکرد
برای طراحی منطق اپلیکیشن، سه مفهوم اصلی را باید از هم تفکیک کرد:
- رویداد: چه زمانی فرآیند آغاز شود؟
- شرط: آیا فرآیند اجازه اجرا دارد؟
- عملکرد: چه کاری باید انجام شود؟
به زبان ساده:
| مفهوم | پرسش اصلی | نقش |
|---|---|---|
| رویداد | چه زمانی؟ | شروعکننده جریان |
| شرط | با چه وضعیتی؟ | کنترلکننده مجوز اجرا |
| عملکرد | چه کاری؟ | نتیجه یا عملیات اجرایی |
الگوی رایج اجرا:
وقوع رویداد ⟵ بررسی شرط ⟵ اجرای عملکرد در صورت برقرار بودن شرط
برای طراحی هر منطق در اپلیکیشن، این سه سؤال را بپرسید:
«چه زمانی؟»، «با چه شرطی؟»، «چه کاری؟»
برای آشنایی بیشتر با مفاهیم مرتبط، این صفحات را ببینید:
محل تعریف رویدادها
رویدادها در اپادیتور بر اساس ماهیت و محل استفاده، در دو سطح اصلی تعریف میشوند:
- رویدادهای سطح ویجت
- رویدادهای سطح صفحه
۱. رویدادهای سطح ویجت
رویدادهای سطح ویجت مستقیماً به یک ویجت متصل هستند. این رویدادها معمولاً زمانی فعال میشوند که کاربر با همان ویجت تعامل داشته باشد یا وضعیت آن تغییر کند.
نمونههای رایج رویدادهای ویجت:
کلیک یا لمس
رویداد کلیک / لمس زمانی فعال میشود که کاربر روی یک ویجت کلیک یا آن را لمس کند.
این رویداد معمولاً برای ویجتهایی مانند موارد زیر استفاده میشود:
- دکمه
- تصویر
- آیکون
- کارت
- گروه قابل کلیک
- آیتمهای لیست
مثال:
- رویداد: کلیک روی دکمه «ادامه»
- عملکرد: باز کردن صفحه بعدی
تغییر مقدار
رویداد تغییر مقدار زمانی فعال میشود که مقدار یک ویجت ورودی یا انتخابی تغییر کند.
این رویداد معمولاً در موارد زیر کاربرد دارد:
- تایپ در فیلد متنی
- تغییر وضعیت سوئیچ
- انتخاب گزینه از لیست کشویی
- تغییر مقدار چکباکس
- انتخاب آیتم از یک کنترل انتخابی
مثال:
- رویداد: تغییر متن فیلد جستجو
- عملکرد: ذخیره مقدار در متغیر جستجو و فیلتر کردن دادهها
رویدادهای ویجت بیشتر برای واکنش به تعامل مستقیم کاربر استفاده میشوند.
۲. رویدادهای سطح صفحه
رویدادهای سطح صفحه در تنظیمات کلی هر صفحه تعریف میشوند و برای کنترل رفتار عمومی صفحه یا واکنش به وضعیتهای کلی اپلیکیشن کاربرد دارند.
مهمترین رویدادهای سطح صفحه عبارتاند از:
باز شدن صفحه
رویداد باز شدن صفحه یا On Page Load زمانی اجرا میشود که صفحه بارگذاری و آماده نمایش شود.
کاربردهای رایج:
- دریافت دادهها از سرور
- مقداردهی اولیه متغیرها
- بررسی وضعیت ورود کاربر
- آمادهسازی محتوای صفحه
- تنظیم وضعیت اولیه رابط کاربری
مثال:
- رویداد: باز شدن صفحه «پروفایل»
- عملکرد: دریافت اطلاعات کاربر و نمایش آنها در صفحه
وضعیت اتصال اینترنت
این رویداد زمانی فعال میشود که وضعیت اتصال شبکه تغییر کند؛ یعنی اینترنت قطع یا دوباره وصل شود.
کاربردهای رایج:
- نمایش پیام قطع اتصال
- باز کردن صفحه آفلاین
- تلاش مجدد برای دریافت دادهها بعد از وصل شدن اینترنت
- غیرفعال کردن بخشهایی که نیاز به اینترنت دارند
مثال:
- رویداد: قطع شدن اینترنت
- عملکرد: نمایش پیام «اتصال اینترنت قطع است»
تایمر صفحه
رویداد تایمر صفحه امکان اجرای تکرارشونده یک یا چند عملکرد را فراهم میکند.
برای مثال، با این رویداد میتوان در هر ۱ ثانیه یک عملکرد را اجرا کرد.
این رویداد برای مواردی مانند بهروزرسانی شمارنده، بررسی وضعیت صفحه یا اجرای عملیاتهای دورهای مناسب است.
مثال:
- رویداد: تایمر صفحه
- عملکرد: افزایش مقدار متغیر ثانیهشمار
نکته: در عملکردهای متصل به تایمر صفحه، از اجرای عملیاتهای سنگین خودداری کنید.
تغییر متغیر
رویداد تغییر متغیر زمانی اجرا میشود که مقدار یک متغیر مشخص تغییر کند.
این رویداد برای ساخت رابطهای پویا و واکنشپذیر بسیار کاربردی است.
کاربردهای رایج:
- واکنش به تغییر وضعیت ورود کاربر
- بهروزرسانی رابط کاربری بر اساس تغییر داده
- اجرای عملکرد پس از تغییر مقدار یک فیلتر
- نمایش یا مخفیسازی بخشهایی از صفحه
- هماهنگ کردن چند ویجت با یک متغیر مشترک
مثال:
- رویداد: تغییر مقدار متغیر
isLoggedIn - عملکرد: نمایش بخش حساب کاربری یا هدایت کاربر به صفحه ورود
نکته: اپادیتور بهطور پیوسته در حال توسعه است و ممکن است در نسخههای بعدی، رویدادهای سیستمی جدیدی نیز اضافه شوند.
کاربردهای رویدادها
رویدادها به اپلیکیشن شما «هوشمندی زمانی» میدهند؛ یعنی اپلیکیشن میتواند در زمان مناسب به رفتار کاربر، تغییر دادهها یا شرایط محیطی واکنش نشان دهد.
مهمترین کاربردهای رویدادها عبارتاند از:
مقداردهی اولیه
با استفاده از رویداد باز شدن صفحه، میتوانید دادهها را واکشی کنید یا متغیرهای اولیه را مقداردهی کنید.
مثال:
- دریافت لیست محصولات هنگام باز شدن صفحه فروشگاه
- تنظیم مقدار پیشفرض فیلترها
- بررسی وضعیت ورود کاربر
مسیریابی
رویدادهای ویجت، مخصوصاً کلیک، برای جابهجایی کاربر بین صفحات بسیار استفاده میشوند.
مثال:
- کلیک روی دکمه «ورود» و باز شدن صفحه داشبورد
- کلیک روی کارت محصول و باز شدن صفحه جزئیات محصول
- کلیک روی دکمه «بازگشت» و انتقال به صفحه قبلی
بهروزرسانی رابط کاربری
با ترکیب رویدادها، متغیرها و شرطها، میتوان رابط کاربری پویا ایجاد کرد.
مثال:
- تغییر مقدار متغیر
showDetails - بررسی شرط نمایش یک ویجت
- نمایش یا مخفی شدن بخش جزئیات
مدیریت وضعیت شبکه
رویدادهای وضعیت اینترنت کمک میکنند اپلیکیشن در برابر قطع و وصل شدن اتصال مقاومتر عمل کند.
مثال:
- نمایش پیام آفلاین
- هدایت کاربر به صفحه مخصوص حالت آفلاین
- تلاش مجدد برای دریافت دادهها پس از وصل شدن اینترنت
اتوماسیون داخلی
با رویداد تایمر، میتوان برخی فرآیندها را بهصورت خودکار و زمانبندیشده اجرا کرد.
مثال:
- بهروزرسانی شمارنده
- بررسی وضعیت پرداخت
- بررسی وضعیت ارسال فایل
- تازهسازی دادهها در بازههای زمانی مشخص
مثالهای مفهومی از جریان رویدادها
مثال ۱: مسیریابی ساده
در این مثال، کاربر با کلیک روی یک دکمه به صفحه دیگری منتقل میشود.
- رویداد: کلیک روی دکمه «ورود»
- عملکرد: باز کردن صفحه «داشبورد»
جریان اجرا:
- کاربر روی دکمه کلیک میکند.
- رویداد کلیک فعال میشود.
- عملکرد باز کردن صفحه اجرا میشود.
- کاربر وارد صفحه داشبورد میشود.
مثال ۲: نمایش و مخفیسازی پویا
در این مثال، نمایش یک بخش از صفحه بر اساس مقدار یک متغیر کنترل میشود.
- متغیر:
showDetails - نوع متغیر: منطقی / Boolean
- رویداد: کلیک روی دکمه «نمایش جزئیات»
- عملکرد: تغییر مقدار
showDetailsازFalseبهTrue
جریان اجرا:
- کاربر روی دکمه «نمایش جزئیات» کلیک میکند.
- رویداد کلیک اجرا میشود.
- مقدار متغیر
showDetailsتغییر میکند. - شرط نمایش ویجت بررسی میشود.
- اگر مقدار
showDetailsبرابرTrueباشد، ویجت جزئیات نمایش داده میشود.
این الگو برای ساخت رابطهای پویا بسیار کاربردی است.
مثال ۳: جستجوی زنده
در این مثال، با تایپ کاربر در فیلد جستجو، نتایج بهروزرسانی میشوند.
- رویداد: تغییر مقدار متغیر
- عملکردها:
- ذخیره مقدار تایپشده در متغیر جستجو
- اجرای فیلتر یا دریافت دادههای جدید
جریان اجرا:
- کاربر در فیلد جستجو تایپ میکند.
- رویداد تغییر مقدار متغیر فعال میشود.
- مقدار جدید در متغیر ذخیره میشود.
- لیست نتایج بر اساس مقدار جدید بهروزرسانی میشود.
در جستجوی زنده، اگر با هر تغییر کوچک یک درخواست سنگین به سرور ارسال شود، ممکن است عملکرد اپلیکیشن کاهش پیدا کند. بهتر است در چنین مواردی منطق اجرا بهینه طراحی شود.
مثال ۴: مدیریت آفلاین بودن کاربر
در این مثال، اپلیکیشن هنگام قطع شدن اینترنت به کاربر واکنش نشان میدهد.
- رویداد: قطع شدن اتصال اینترنت در سطح صفحه
- عملکرد: نمایش پیام خطا یا باز کردن صفحه آفلاین
جریان اجرا:
- اتصال اینترنت کاربر قطع میشود.
- رویداد قطع اتصال فعال میشود.
- عملکرد نمایش پیام یا مسیریابی اجرا میشود.
- کاربر از وضعیت اتصال مطلع میشود.
مثال ۵: پردازش زمانبندیشده
در این مثال، یک تایمر صفحه بهصورت دورهای اجرا میشود.
- رویداد: تایمر صفحه با بازه ۱ ثانیه
- عملکرد: بهروزرسانی مقدار ثانیهشمار
جریان اجرا:
- صفحه باز میشود.
- تایمر صفحه فعال میشود.
- در هر بازه زمانی مشخص، عملکرد اجرا میشود.
- مقدار شمارنده یا وضعیت موردنظر بهروزرسانی میشود.
ترکیب رویدادها با شرطها
در بسیاری از سناریوها، لازم است عملکرد فقط در شرایط خاصی اجرا شود. در این حالت، رویداد بهتنهایی کافی نیست و باید از شرط استفاده شود.
مثال:
- رویداد: کلیک روی دکمه «خرید»
- شرط: کاربر وارد حساب کاربری شده باشد
- عملکرد: رفتن به صفحه پرداخت
اگر شرط برقرار نباشد، میتوان عملکرد دیگری اجرا کرد؛ مثلاً نمایش پیام یا انتقال کاربر به صفحه ورود.
نمونه جریان:
- کاربر روی دکمه خرید کلیک میکند.
- رویداد کلیک فعال میشود.
- شرط ورود کاربر بررسی میشود.
- اگر کاربر وارد شده باشد، صفحه پرداخت باز میشود.
- اگر وارد نشده باشد، صفحه ورود نمایش داده میشود.
ترتیب اجرای عملکردها در یک رویداد
یک رویداد میتواند چندین عملکرد را پشت سر هم اجرا کند. در این حالت، ترتیب عملکردها اهمیت زیادی دارد؛ مخصوصاً زمانی که یک عملکرد به نتیجه عملکرد قبلی وابسته باشد.
مثال:
- ذخیره مقدار فرم در متغیر
- اعتبارسنجی مقدار متغیر
- ارسال داده به سرور
- نمایش پیام موفقیت
- انتقال کاربر به صفحه بعدی
اگر ترتیب این عملکردها اشتباه باشد، ممکن است نتیجه نهایی درست نباشد. برای مثال، اگر قبل از اعتبارسنجی، داده ارسال شود، ممکن است اطلاعات نامعتبر به سرور فرستاده شود.
وقتی چند عملکرد را به یک رویداد متصل میکنید، ابتدا وابستگیهای آنها را مشخص کنید و سپس ترتیب اجرا را بچینید.
رویدادهای پرتکرار
برخی رویدادها ممکن است در مدت کوتاه چندین بار اجرا شوند. این رویدادها اگر بهدرستی مدیریت نشوند، میتوانند باعث افت عملکرد اپلیکیشن شوند.
نمونه رویدادهای پرتکرار:
- تغییر مقدار هنگام تایپ در فیلد ورودی
- تایمرهای کوتاه مثل هر ۱ ثانیه
- تغییرات سریع متغیرها
- تعاملات پیدرپی کاربر با ویجتها
در این نوع رویدادها، بهتر است از اجرای موارد زیر پرهیز شود:
- درخواستهای سنگین و متعدد به سرور
- زنجیره طولانی عملکردها
- پردازشهای غیرضروری
- تغییرات پیدرپی و بدون نیاز در رابط کاربری
بهترین تجربیات در مدیریت رویدادها
برای طراحی بهتر و پایدارتر منطق اپلیکیشن، نکات زیر را رعایت کنید:
- هر رویداد را با هدف مشخص تعریف کنید.
- از اتصال عملکردهای زیاد و غیرضروری به یک رویداد خودداری کنید.
- در رویدادهای پرتکرار، پردازشهای سنگین اجرا نکنید.
- ترتیب اجرای عملکردها را با دقت تنظیم کنید.
- اگر اجرای عملکرد به وضعیت خاصی وابسته است، از شرط استفاده کنید.
- برای رفتارهای پیچیده، از متغیرها برای مدیریت وضعیت استفاده کنید.
- رویدادهای صفحه را فقط در صورت نیاز فعال کنید.
- در تایمرها، بازه زمانی را منطقی انتخاب کنید.
- برای مدیریت آفلاین بودن، رویدادهای وضعیت شبکه را در صفحات مهم در نظر بگیرید.
- منطقهای مشابه را تا حد امکان ساده، قابل فهم و قابل نگهداری طراحی کنید.
استفاده بیش از حد از رویدادها، مخصوصاً در صفحات پیچیده، میتواند باعث سخت شدن نگهداری پروژه شود. بهتر است هر رویداد مسئولیت مشخص و محدودی داشته باشد.
جمعبندی
رویدادها مشخص میکنند اپلیکیشن چه زمانی باید واکنش نشان دهد. آنها نقطه شروع اجرای عملکردها هستند و در کنار شرطها و متغیرها، منطق تعاملی اپلیکیشن را شکل میدهند.
بهطور خلاصه:
- رویداد زمان شروع یک جریان را مشخص میکند.
- شرط تعیین میکند که آن جریان اجازه اجرا دارد یا نه.
- عملکرد مشخص میکند که چه کاری باید انجام شود.
- رویدادهای ویجت برای تعاملات مستقیم کاربر مناسباند.
- رویدادهای صفحه برای رفتارهای عمومیتر مانند بارگذاری، تایمر و وضعیت اینترنت استفاده میشوند.
پیشنهاد برای مطالعه بعدی: