همان طور که در مقدّمه اشاره شد جاوااسکریپت منحصر به مرورگر نیست و کاربردهای فراوان دیگری هم دارد. شما میتوانید با جاوااسکریپت نرم افزارهای ویندوزی، اندرویدی، ربات تلگرام و… نیز بسازید. در این بخش اشارهای به کاربردهای جاوااسکریپت و ابزارهای مربوطه خواهیم داشت.
وب (سمت کاربر)
همه میدانیم که اصلیترین کاربرد جاوااسکریپت در مرورگرهای اینترنت است. البته برنامهنویسی وب دارای دو زیرشاخهی اصلی است. وقتی شما وبسایتی طرّاحی میکنید، بعضی از کدهایی که مینویسید را Server شما اجرا میکند، و بعضی دیگر را مرورگر کاربر. که به دستهی اوّل کدهای «سمت سرور – Server Side» و به دستهی دوم کدهای «سمت کاربر – Client Side» گفته میشود.
تنها زبانی که برای برنامهنویسی سمت کاربر میتوان از آن استفاده کرد جاوااسکریپت است. از این رو جاوااسکریپت در این زمینه منحصر به فرد است. البته همان طور که گفتیم زبانهای دیگری همچون تایپاسکریپت هستند که به جاوااسکریپت تبدیل میشوند.
ناگفته نماند که چند وقتی است قابلیتی تحت عنوان WebAssembly یا به اختصار WASM وارد دنیای وب شده است که با استفاده از آن میتوان با زبانهای برنامهنویسی دیگری غیر از جاوااسکریپت هم کدهای سمت کلاینت را نوشت.
وب (سمت سرور)
خبر خوش این که برای برنامهنویسی سمت سرور نیز میتوان از جاوااسکریپت استفاده کرد. حتماً تا به حال نام Node.js را شنیدهاید. هدف Node.js اجرای جاوااسکریپت خارج از محیط مرورگر است. حالا چون مسائل امنیّتی مرورگر برایمان اهمیتی ندارد، محدودیتهای جاوااسکریپت مرورگری نیز در Node.js وجود ندارد. مثلاً به راحتی میتوانیم به فایلها دسترسی داشته باشیم و…
Node.js دارای پکیجهای بسیار فراوانی است. تقریباً برای هر کاری که میخواهید انجام دهید میتوانید جستجو کنید و پکیج مربوط به انجام آن را پیدا کنید. ضمناً میتوان از کدهایی که به زبان C یا C++ نوشته شده است در Node استفاده کرد. به همین دلیل عملاً هیچ گونه محدودیتی ندارد.
حتّی میتوان به راحتی با کمک Node برای پیامرسانهایی همچون Telegram و گپ ربات نوشت.
اپلیکیشن تحت دسکتاپ
بله، با جاوااسکریپت میتوانید نرم افزارهای تحت دسکتاپ هم بسازید. در ابتدا شرکت Intel ابزاری را تحت عنوان Node-Webkit تولید کرد. هدف این ابزار تولید نرم افزارهای دسکتاپی با فناوریهای سمت کاربر وب، یعنی HTML و CSS و JavaScript است.
ولی چند مشکل اساسی وجود داشت. یکی این که در برنامههای ویندوزی نوار آدرس مرورگر و بقیهی اجزایی که مربوط به مرورگر است نباید وجود داشته باشد، و دوم این که جاوااسکریپت مرورگری محدودیتهای زیادی دارد که اصلاً مناسب نرم افزار ویندوزی نیست. همچنین باید کارهایی مثل تعیین اندازهی پنجره و… نیز از طریق جاوااسکریپت قابل انجام باشد.
شرکت Intel برای مقابله با محدودیتهای جاوااسکریپت مرورگری از Node.js استفاده کرد. در کنار آن برای پردازش HTML و CSS و نمایش محتوا از موتور Webkit که متعلّق به مرورگر Chrome و Safari است استفاده کرد. به همین دلیل این ابزار را Node-Webkit نامید. بعدها تیم توسعهی مرورگر کروم روی موتور Webkit تغییراتی اعمال کردند و آن را Blink نامیدند. از این رو Node-Webkit که دیگر از Webkit استفاده نمیکرد نام خود را به NW.js تغییر داد، که شاید بتوان گفت مخفف Native Web است.
NW.js از مشکلاتی اساسی رنج میبُرد که موجب شد در نسخهی ۰.۱۳ بازنویسی شود. ولی این بازنویسی به شدّت طولانی شد. در این حین شرکت معروف GitHub که به تازگی ابزاری مشابه NW.js تحت عنوان «Electron» تولید کرده بود در این رقابت پیروز شد، و برنامهنویسان بیشتری را جذب کرد. ولی NW.js نیز همچنان طرفداران خود را دارد.
از جمله نرم افزارهای دسکتاپی معروفی که به این شکل با HTML و CSS و JavaScript نوشته شده اند میتوان به Visual Studio Code، Discord، Brackets، Atom و Postman اشاره کرد.
اپلیکیشن موبایلی
دو رویکرد برای تولید اپلیکیشنهای موبایلی با جاوااسکریپت وجود دارد.
روش اوّل (Cordova)
همان طور که میدانیم در هر سیستم عامل یک مرورگر از همان ابتدا برای مشاهدهی صفحات وب وجود دارد. از این رو در هر سیستم عامل و دستگاهی میتوان کدهای HTML و CSS و JavaScript را اجرا کرد. در این رویکرد یک برنامهی تحت وب مینویسیم، ولی نوار آدرس و بقیهی اجزای مربوط به مرورگر را نمایش نمیدهیم. معروفترین ابزاری که این کار را به خوبی انجام میدهد Cordova نام دارد.
شما کد HTML و CSS و JavaScript خود را به Cordova میدهید. Cordova هم به ازای پلتفرمهای مختلف از جمله اندروید و iOS خروجی میدهد، مثلاً برای پلتفرم اندروید یک فایل apk میدهد.
Cordova برای غلبه بر محدودیتهای جاوااسکریپت مرورگری، مفهوم پلاگین (Plugin) را در ساختار خود گنجانده است. به این صورت که میتوان هر قابلیّتی را که از طریق جاوااسکریپت قابل انجام نیست، در قالب یک پلاگین Cordova در آورد و آن قابلیت را به جاوااسکریپت اضافه کرد. از طریق سایت اصلی Cordova میتوانید لیست پلاگینهای موجود آن را ببینید. از این رو Cordova نیز عملاً از لحاظ قابلیتها نامحدود است.
این روش تحت عنوان روش Hybrid نیز شناخته میشود.
روش دوم (React Native)
مشکل روش اوّل این است که اپلیکیشن تولیدشده در اصل تحت وب است. بنابراین پردازش و نمایش کدهای HTML و CSS توسّط مرورگر اصلی موبایل انجام میشود، که معمولاً این مرورگرها نیز چندان سریع نیستند. در روش دوم اصلاً کد HTML و CSS نمینویسیم، و بنابراین سربار پردازشی آن حذف میشود. این رویکرد موجب میشود سرعت اپلیکیشن موبایلی ما با سرعت اپلیکیشنهای عادی برابری کند. شرکت فیسبوک ابزاری تحت عنوان React Native ساخته است، که در حال حاضر معروفترین ابزاری است که طبق روش دوم کار میکند.
از معروفترین اپلیکیشنهایی که به این شکل با جاوااسکریپت تولید شده اند میتوان به اینستاگرام، اسکایپ و فیسبوک اشاره کرد.
بازیسازی
موتور بازیسازی معروف Unity به صورت پیشفرض دو زبان برنامهنویسی را پشتیبانی میکند که یکی از آنها جاوااسکریپت است. ولی جاوااسکریپت درون Unity همهی استانداردهای ECMA را رعایت نمیکند، و میتوان گفت جاوااسکریپتی است که به دلخواه خودشان تغییر داده اند. از این رو به جاوااسکریپتِ موتور یونیتی Unity Script نیز گفته میشود.
موتور بازی Cocos هم از جاوااسکریپت پشتیبانی میکند. علاوه بر اینها خود جاوااسکریپت مرورگری نیز دارای فریمورکهایی همچون Phaser برای ساخت بازی است.
در موتور بازی کانستراکت (Construct) نیز میتوان با کمک جاوااسکریپت پلاگینهایی تولید کرد و امکاناتش را گسترش داد.
همهجا جاوااسکریپت!
علاوه بر موارد فوق در زمینههایی همچون IoT و تولید رباتهای سختافزاری نیز میشود از Node.js استفاده کرد. فریمورکهایی مثل Cylon.js برای این منظور وجود دارند.
برای تولید پلاگین و افزونهی مرورگرهایی همچون Chrome و Firefox و نیز نرم افزارهایی همچون Visual Studio Code و Brackets از جاوااسکریپت استفاده میشود.
شرکت Adobe نیز علاقهی خاصی به جاوااسکریپت دارد، به طوری که اگر به محل نصب نرم افزار فتوشاپ مراجعه کنید، فایل اصلی Node.js را در آن جا میبینید! در کل برای نوشتن پلاگین در نرم افزارهای مختلف شرکت Adobe از زبان جاوااسکریپت استفاده میشود.
قبل از انقضای Adobe Flash این نرم افزار با زبان Action Script کار میکرد. اکشن اسکریپت نیز همان استانداردهای ECMA را پیادهسازی کرده بود، و بنابراین فرقی با زبان جاوااسکریپت نداشت (البته با این تفاوت که ActionScript 3 استانداردهای ECMAScript 4 را پیادهسازی کرده بود، ولی مرورگرها هیچگاه ECMAScript 4 را پیادهسازی نکردند).
علاوه بر این درون فایلهای PDF نیز میتوان کد جاوااسکریپت اجرا کرد. در سایت PDF Scripting نمونههایی از این طور فایلهای PDF وجود دارد.
کاربردهای جاوااسکریپت تنها به موارد فوق محدود نمیشود، ممکن است کاربردهای دیگری نیز برای جاوااسکریپت پیدا کنید.
ما در فصل اوّل به خود زبان جاوااسکریپت میپردازیم، بدون توجّه به این که کجا اجرا میشود. زیرا افراد مختلف برای کاربردهای مختلفی میخواهند جاوااسکریپت یاد بگیرند. کسی که فقط میخواهد با Node.js کار کند، یا در نرم افزار Cocos کد جاوااسکریپت بزند، لزومی ندارد دربارهی نحوهی تعامل جاوااسکریپت با صفحهی وب اطّلاعاتی داشته باشد. به همین دلیل این موارد را به فصل دوم موکول میکنیم، تا مخاطبینی که علاقهای به آن ندارند اذیت نشوند.