بررسی اجمالی فصل
در پایان این فصل، شما توانایی اعمال timeout ها و وقفه (interval)ها برای ایجاد عملکرد asynchronous در برنامه ها، شناسایی انواع مختلف رویداد های مرورگر، دریافت و هندل کردن تعاملات کاربر، جلوگیری کردن از رویداد ها، شبیه سازی رویداد ها برای بهتر کردن تجربه کاربری اپلیکیشن، خلاصه کردن کنترل های ورودی مختلف پشتیبانی شده از سمت مرورگر، و کار با فرم ها، ثبت و ارسال فرم ها (form submission) و هندل کردن رویداد های فرم ها رو خواهید داشت.
معرفی فصل
توی فصل قبل، شما با دیتا تایپ های زیادی که توسط زبان و runtime جاوا اسکریپت پشتیبانی میشن آشنا شدید، مثل فانکشن ها، که چشمگیرترین دیتا تایپ first-class جاوا اسکریپت هستن. درک تفاوت بین دیتا تایپ های مختلف اولین قدم مهم برای ساخت اپلیکیشن های کاربردی، بهینه و بدون باگ هست. اپلیکیشن های کاربردی شکل ها و موارد استفاده مختلفی دارن. توی ساده ترین شکل، یک اپلیکیشن ممکنه پارامتر ها رو بعد از اجرا بخونه، دیتا رو پردازش کنه، و در نهایت یک پاسخ برگردونه. حتی ممکنه با برنامه ها و سرویس های خارجی تعامل برقرار نکنه. یکی از این برنامه ها و سرویس ها میتونه کامند های ترمینال باشه. برای مثال، اجرای dir توی پنجره خط فرمان ویندوز یا اجرای ls توی یک ترمینال لینوکس به سادگی محتویات یک پوشه رو توی هارد دیسک میخونه و جزئیات اون فایل ها و پوشه ها رو توی پنجره ترمینال نشون میده. سیستم عامل لینوکس بر اساس چنین برنامه های کوچیک و ساده ای ساخته شده که با هم برای ایجاد یک اکوسیستم بزرگتر کار میکنن. برعکس این مورد میتونن بازی های چند نفره مدرن باشن، که معمولا به ورودی های کاربر واکنش نشون میدن و دیتا های stream شده رو از مکان های مختلف دریافت میکنن. این کانسپت ها رو میشه مثل یک فانکشن در نظر گرفت: اول ورودی از بالا وارد میشه و توی یک جایی از بدنه فانکشن برگردونده میشه، معمولا توی آخر بدنه.
اپلیکیشن های جاوا اسکریپت میتونن هردوی این کار ها رو و هر چیزی که بینشون هست رو آسون تر کنن. مرورگر های مدرن حالا کاملا توانایی فراهم کردن پایه و اساس بازی های سه بعدی چند نفره سنگین و processor-intensive (یعنی درگیر کننده پردازنده) و همچنین واکنش به دیتا های دریافت شده از چندین منبع مختلف رو دارن. با این حال جاوا اسکریپت همچنین برای تسک های خیلی ساده، مثل فرمت کردن یک string یا گرد کردن یک عدد استفاده میشه.
هسته اصلی همه این اپلیکیشن ها رویداد ها (events) هست. رویداد ها رو اگه بخوایم از لحاظ مفهومی تعریف کنیم، trigger (یکجورایی میشه گفت محرک) هایی هستن که کد خاصی رو اجرا میکنن. برای مثال این میتونه وضعیت آماده (ready) باشه که زمانی که لود کردن یک پیج تموم میشه فعال بشه، یا مثلا یک رویداد mouse باشه که زمانی که کاربر روی یک المنت توی صفحه کلیک میکنه فعال بشه. کلا بدون وجود رویداد ها، فانکشن ها نمیدونن کی باید اجرا بشن و بنابراین هیچ اتفاقی توی برنامه نمیافته.
در طول این فصل، گزینه هایی که جاوا اسکریپت برای گوش دادن به انواع مختلف رویداد ها توی مرورگر وب و هندل کردنشون در اختیارمون میگذاره رو بررسی میکنیم.