جاوا اسکریپت چیست؟
شاید تا به حال اسم زبان برنامهنویسی جاوا اسکریپت را نشنیده باشید اما جاوااسکریپت در ۹۸ درصد سایتهایی شما در طول روز با آنها سرکار دارید وظیفه مهمی را ایفا میکند. در مقاله “ساختار اصلی صفحات وبسایت ”به این موضوع پرداختیم که ساختار اصلی صفحات هر وب سایت با Html ساخته میشود و با css به ظاهری دلنشین تر تبدیل میشود. اما اگر دقت کرده باشید٫ وب سایتها در حال حاضر توانایی تعامل با کاربر را دارند برای مثال زمانی که روی یکی از گزینههای منو کلیک میکنید و وب سایت در جواب کار شما منو را برای راحتی شما بزرگ تر میکند یا با دکمهای تم رنگی سایت را از روشن به تاریک تبدیل میکنید. تمام این کارها با جاوا اسکریپت انجام میشود.
به طور کلی صفحات وب از ۳ بخش تشکیل میشوند:
- Html که ساختار را میسازد
- Css که به ساختار ما استایل میدهد
- JavaScript که به سایت ما قدرت تعامل میدهد.
جاوا اسکریپت یک زبان برنامهنویسی تحت وب است که به شما این قابیلت را میدهد تا امکاناتی که با html و css قابل پیداسازی نیستند را به سایت خود اضافه کنید. اگر در وب سایتی نقشههای جغرافیایی٫ انیمشینهای ۲ و ۳ بعدی ٫ منو های بازشونده (DropDown) و.... دیدید بی شک میتوانید بگویید که در این وبسایت از جاوااسکریپت استفاده شده است. در ابتدای شکل گیری صفحات وب٫ صفحات به صورت ثابت (static) نمایش داده میشدند و این موضوع هیچ جذابیتی برای کاربر نداشت و وب سایتها هم کاربرد خاصی جز ارائه محتوا نداشتند ولی با پیشرفت تکنولوژی جاوا اسکریپت به کمک صفحات وب آمد تا این مشکل را حل کند.
جاوا اسکیریپت طبق نظرسنجی در سایتهای stackoverflow.com و github.com محبوب ترین زبان برنامهنویسی جهان است به طوری که طبق آمارهای سایت Wikipedia.org نزدیک به ۹۸ درصد وبسایتهای جهان از جاوا اسکریپت استفاده میکنند.
بالاتر اشاره کردیم که جاوااسکریپت توانایی تعامل را به سایت ما اضافه میکند اما یک سوال مهم پیش میآید:
جاوااسکریپ چطور تعامل را به سایت ما اضافه میکند؟
در مقاله “مرورگرها چگونه کار میکند؟ ”به این موضوع پرداختیم که همه مرورگرهایی که امروزه از آن استفاده میکنیم در خود JavaScript engine دارند تا بتوانند کدهای جاوا اسکریپت را اجرا کنند. زمانی که صفحه وبی را باز میکنید html و css ساختار اصلی صفحهها را میسازند در مرحله بعدی موتور جاوااسکریپت در مرورگر شروع به اجرای جاوااسکریپت میکند.
کد های جاوااسکریپت این قابلیت را دارند که کد های html را از صفحات وب (Dom) حدف اضافه کنند ٫ کد هایی css مربوط به تگها را تغیر دهند یا در صورت نیاز یک alert برای کاربر ایجاد کنند. اینها کم ترین تواناییهایی هستند که جاواسکریپت میتواند به سایت شما اضافه کند.
اگر بخواهیم به صورت پیشرفتهتر جاوااسکریپت را بررسی کنیم می توانیم به این موضوع اشاره کنیم که جاوا اسکریپت یک زبان مفسری است. در دنیای برنامهنویسی دو نوع زبان وجود دارد.
- کامپایلری: این مدل از زبانها قبل از اجرا به صورت کامل کامپایل میشوند و یک فایل قابل اجرا مثل exe میسازند
- مفسری : این مدل از زبانها٫ برنامه به صورت خط به خط و به شکل همزمان کامپایل میشود.
بنابر توضیحات بالا جاوااسکریپت به صورت مفسری و خط به خط در مرورگرها اجرا میشود. در بعضی از مواقع سرعت اجرا زبانهای کامپایلری نسبت به زبانهای مفسری بیشتر است. الان حتما با خود فکر میکنید که افزودن جاوااسکریپت به سایت خود٫ زمان لود سایت را افزایش میدهد اما کاملا اشتباه فکر میکنید. جاوا اسکریپت از تکنولوژی تحت عنوان jit یا just-in-time برای کامپایل کدهای خود استفاده میکند. صحبت در مورد jit محبث طولانی دارد ولی به صورت خلاصه میتواند گفت که jit به مفسر جاوا اسکریپت در مرورگرها این قابلیت را میدهد تا کدهایی که بیشتر استفاده شده را در خود cache کند و دفعات بعدی که از این کد استفاده میکند با سرعت بیشتری بتواند دستورات را اجرا کند.
یکی دیگر از کمکهای بزرگی که جاوا اسکریپت به ما میکند استفاده از امکاناتی است که مرورگر در اختیار ما میگذارد. برای مثال دقت کردهاید اگه با لپتاپ خود در سایت دیجیکالا لاگین کنید دفعات بعدی که با لپتاپ خود وارد سایت سایت دیجیکالا شوید٫ دیجیکالا می داند که کدام حساب کاربری مربوط به لپتاپ شماست. در این حالت سایت دیجیکالا با استفاده از جاوااسکریپت اطلاعات حساب کاربری شما را در Cookie یا LocalStorage که مرورگر در اختیار دیجیکالا قرار داده است ذخیره میکند تا دفعات بعدی از آن استفاده کند. یکی دیگر از امکاناتی که مرورگرها در اختیار ما قرار داده اند امکان استفاده از دوربین و میکروفون است. زمانی که قصد دارید از سایت google meet استفاده کنید٫ مرورگر تصویر و صدای شما را در اختیار وب سایت قرار میدهد تا شما بتوانید جلسه تان را برگذار کنید. به این امکاناتی که در مرورگر به صورت پیشفرض (built-in) وجود دارند browser api میگویند و جاوا اسرکیپت یکی از راههای دسترسی شما به این api هاست. البته این نکته را هم اضافه کنم که شما میتوانید با third party ها api دیگری هم مثل نقشه گوگل به سایت خود اضافه کنید.
مرورگرها چگونه کدهای جاوا اسکریپت را اجرا میکنند؟
همانطور که بالاتر و در مقالههای دیگر اشاره کردیم٫ هر مرورگر JavaScript engine خود را برای اجرا کدهای JavaScript دارد. بباید برخی از موتورهای جاوا اسکریپت در مرورگرهای مختلف را با هم بررسی کنیم.
- موتور V8 برای مرورگرهای اپرا و کروم
- موتور SpiderMonkey برای فایرفاکس
- موتورهای Trident و Chakra برای ورژنهای مختلف اینترنت اکسپلورر
- موتور ChakraCore برای مرورگر Edge
- موتورهای Nitro و SquirrelFish برای مرورگر سافاری
اینها JavaScript engine ها در مرورگرهای مختلف هستند. هر مرورگر موتوری مخصوص به خودش را دارد و همه موتور ها به روشهای مختلفی عمل میکنند اما ساختار کلی در همه موتورها ثابت است.اگر قصد کسب اطلاعات بیشتر در مورد نحوه کار موتورهای جاوااکریپت را دارید میتواند ویدیو زیر از Franziska Hinkelmann که جز تیم سازنده موتور v8 برای گوگل کروم بوده است را در کانال JSConf در پلتفرم یوتیوب ببینید. (فیلترشکن خود را روشن کنید)
نقاط ضعف جاوا اسکریپت چیست؟
تا الان فقط در مورد قدرت جاوااسکریپت صحبت کردیم و شکی در این نیست که زبان برنامهنویسی جاوااسکریپت بسیار قدرتمند است. اما از آنجا که هیچ چیز کامل نیست جاوا اسکریپت هم تعدای نقاط ضعف دارد.
همان طور که بالاتر اشاره کردیم جاوا اسکریپت توسط موتور جاوااسکریپت در مرورگر اجرا میشود. این موضوع مشکل ساز است وقتی کاربر از نسخههای قدیمی مرورگر استفاده میکند. چون مرورگرهای قدیمی امکان اجرا کدهای نسخه بالاتر جاوااسکریپت را ندارد اما جاوااسکریپ تا حدودی این مشکل را حل کرده است. با کمک babel کد جاوااسکریپت شما در هر نسخه که باشند در زمان اجرا به پایین ترین نسخه جاوا اسکریپت که امکانش باشد تبدیل میکند تا در همه مرورگرها اجرا شود.
از طرفی دیگر چون کد های شما در سیستم و مرورگر کاربر اجرا میشود باید مباحث امنیتی را جدی بگیرید چون این امکان فراهم است که سایت شما یک فایل مخرب را در مرورگر کاربر اجرا کند و اطاعات کاربر را بردارد ولی شما از وجود این فایل مخرب خبر نداشته باشید. نام این مدل از حملات XSS است.
تاریخچه جاوا اسکریپت
جاوا اسکریپت از تاریخی جذاب بهره میبرد. در سال ۱۹۹۵ یکی از کارکنان شرکت netScape مامور به ساخت زبان برنامهنویسی برای سایت شرکت ميشود چون مدیران شرکت از سایت خود راضی نبودن و میخواستم کمی سایت خود را جذاب کنند. برای همین آقای برندن ایچ در ۱۰ روز زبانی با نام mocha میسازد و بعدها به mona تغیر نام میدهد. اما این نام هم از نظر شرکت مناسب نبود برای همین در سپتامبر سال ۱۹۹۵ نام زبان را به livesctipt تغیر میدهند اما باز هم به نام مطلوب خود نرسیده بودند.
منتشر شدن این زبان همراه بود با اوج محبوبیت زبان Java از این رو نام زبان را JavaScript گذاشتند تا از محبوبیت زبان جاوا برای تبلیغات خود استفاده کنند.
فریمورکهای جاوا اسکریپت
شاید تا به حال نام فریمورک به گوش شما نرسیده باشد٫ در آینده با مقاله کاملی فریمورک و لایبری را با هم بررسی میکنیم. اما به طور کلی زمانی که بخوایم در یک سایت مثل سایت فروشگاهی یا سایت خبری ا جاوااسکریپت به صورت خام استفاده کنیم٫ مسیر خیلی سخت و طولانی در پیش داریم اما یک گروه از برنامهنویسان تمام ابزارهایی که برای ساخت وب سایت نیاز است را برای ما آماده کرده اند و به صورت لایبری یا فریمورک در اختیار ما قرار می دهند. با استفاده از فریمورک اتبدایی ترین نیازهای ما برای ایجاد وب سایت فراهم شده و ما نیازی برای زمان گذاشتن روی این موضوع نداریم. جاوا اسکریپت چندین فریمورک و لایبری محبوب دارد که در دنیای وب بسیار مورد استفاده قرار میگریند. اگر بخواهیم این فریمورکها یا لایبریها را نام ببریم میتوانیم به نامهای :
- Vue
- React
- Angular
- JQuery
اشاره کنیم.اگر قصد کسب اطلاعات بیشتر در مورد فریمورک های جاوااسکریپت را دارید٫ ویدیو زیر در انتظار شماست (لطفا فیلترشکن خود را روشن کنید)
کاربردهای دیگر زبان برنامهنویسی جاوا اسکریپت
تا اینجا متوجه شدیم که زبان جاوا اسکریپت زبان بسیار قدرتمندی است پس به نظر شما بهتر نیست از این زبان در محیطهای دیگری به جز فرانتاند کمک بگیریم؟
خوشبختانه این مورد زودتر از ما به ذهن دیگر برنامهنویسان و شرکتها رسیده است و الان از جاوااسکریپت در نوشتن نرمافزار های موبایل ٫ استفاده در محیط بکاند ٫ بازی سازی ٫ هوش مصنوعی و تحیلیل داده استفاده میشود. برای برنامهنویسی نرم افزارهای موبایل میتوانید از react native استفاده کنید و کدهای جاوااسکریپ خود را در دو سیستمعامل ios , android اجرا کنید. اگر میخواهید وارد حوزه بکاند با جاوا اسکریپت شوید٫ Nodejs و expressjs از بهترین انتخابهای شما هستند..
اگر نیاز به اطلاعات ییشتر در مورد زبان برنامهنویسی جاوااکسریپت دارید میتوانید ویدیو زیر را تماشا کنید تا اطلاعات تکمیلی در مورد جاوااسکریپت داشته باشید.
حرف آخر
اگر قصد شروع یادگیری برنامهنویسی را دارید٫ من به شما جاوااسکریپت را پیشنهاد میکنم چون با تسلط به جاوا اسکریپت میتوانید در هر حوزه که به آن علاقه دارید ورود کنید. این از قدرت جاوا اسکریپت است که در همه حوزه حرفی برای گفتنن دارد. اگر قصد کسب اطلاعات بیشتر در مورد زبان جاوااکریپت را دارید میتوانید از داکیومنت رسمی جاوااکسریپت استفاده کنید
اگر در مورد محتوای مطرح شده در مقاله انتقاد یا سوالی دارید از طریق ایمیل [email protected] با من در ارتباط باشید.
با آرزوی موفقیت٫ علی امیری
منابع
What is JavaScript? A Definition of the JS Programming Language
Powered by Froala Editor