جاوا اسکریپت چیست؟ | بررسی صفر تا صد Javascript

معمولا یکی از چالشهایی که افراد در حوزهی برنامه نویسی و توسعه نرم افزار و وب سایتها با آن دست و پنجه نرم میکنند، انتخاب یک زبان برنامه نویسی مناسب و کاربردی برای پیشبرد اهدافشان میباشد. ما در این مقاله قصد داریم یکی از محبوب ترین و پرطرفدارترین زبانهای برنامه نویسی دنیا، یعنی جاوا اسکریپت (JavaScript) را به شما معرفی کنیم. همچنین ضمن معرفی کامل زبان جاوا اسکریپت (JavaScript) به بررسی چالشهای پیرامون آن میپردازیم، تا تمامی دغدغههای ذهنی شما را در ارتباط با اینکه جاوااسکریپت چیست؟، چه ویژگیهایی دارد؟، چگونه کار میکند؟ و بسیاری از سوالهای دیگر… پوشش دهیم و در نهایت دید مناسبی هم جهت آموزش جاوااسکریپت برای شما ایجاد شود. پس تا انتهای این مقاله جذاب و کاربردی با ما همراه باشید.
نیازمندیها: درک ابتدایی از مفاهیم کامپیوتر- آشنایی متوسط با HTML و CSS
فهرست مطالب
جاوا اسکریپت (JavaScript) چیست؟
شما در طول روز هنگامیکه از وب سایتها، اپلیکیشنها و… استفاده میکنید با جاوا اسکریپت سر و کار دارید در حالی که شاید در ابتدا خودتان هم متوجه این موضوع نباشید. به عنوان مثال به نمونههایی که در ادامه گفته میشود دقت کنید: ارسال درخواست و گرفتن پاسخ از سرور یک وب سایت (مانند درخواست ورود/ثبت نام حساب کاربری، جستجوی یک پست/محصول و … )، ذخیره کردن دادههای موردنیاز در مرورگر کاربر، پیجهایی که هنگام لایک و فالو کردن در اینستاگرام به کاربر پیشنهاد میشود، استفاده از سرویس گوگل مپ، نمایش آمار لحظه ای وضعیت سهامهای بورس یا قیمت ارزهای جهانی و بسیاری از مثالهای متنوع دیگر چیزهایی هستند که استفاده گسترده از جاوااسکریپت را نشان میدهند.

جاوااسکریپت زبان بسیار قدرتمند و گسترده ای است و تعریف آن در دو یا چند خط نمیگنجد، اما به طور خلاصه میتوان آن را این گونه تعریف کرد: جاوااسکریپت (JavaScript) یا به اختصار JS یک زبان برنامه نویسی متن باز (Open-source)، سطح بالا (High-level)، شی گرا (Object-based)، چند سکویی (Cross-platform)، پویا (Dynamic) و مفسری (Interpreter) میباشد.
این زبان دارای کتابخانهها و فریمورکهای گسترده و متنوعی است که علاوه بر طراحی صفحات وب تعاملی، در ساخت نرم افزارهای دسکتاپ، اپلیکیشنها، برنامه نویسی سمت کاربر (Client-side)، برنامه نویسی سمت سرور (Server-side)، بازیها و … نیز کاربرد دارد.
اگر کمیگیج و سردرگم شدید و با این اصطلاحات آشنایی ندارید، نگران نباشید؛ در ادامه به توضیح هر یک از این اصطلاحات میپردازیم. اما پیش از دانستن این اصطلاحات بهتر است بدانیم این زبان چه کارهایی را میتواند در صفحات وب انجام دهد و اصولا کاربرد آن چیست؟ و چه کسی برای اولین بار آن را طراحی کرد.
کاربرد های جاوا اسکریپت
شاید تا به حال این سوال برای شما هم به وجود آمده باشد که چرا از جاوااسکریپت استفاده میکنیم؟ برای پاسخ به این سوال بهتر است نگاهی به فناوریهایی که بشر در طول تاریخ به آن دست یافته است، بیندازیم. هر چه علم پیشرفته تر میشود انسانها به فکر تولید محصولات و تکنولوژیهایی میباشند که تعامل و ارتباط بیشتری با انسانها برقرار کند. این موضوع در طراحی صفحات وب و سایتها نیز صدق میکند زیرا هم به زیبایی سایت میافزاید و هم کاربر را به بازدید مجدد از سایت متقاعد میکند. جاوااسکریپت زبانی است که به آسانی این تعامل را ایجاد میکند و در واقع میتوان گفت به جسم بی جان صفحات وب روح میبخشد.
همانگونه که میدانید هسته اصلی یک سایت را زبانهای HTML، CSS و JS تشکیل میدهند.

- اچ تی ام ال (HTML) یک زبان برنامه نویسی (به صورت تخصصی تر : زبان نشانه گذاری) برای طراحی اسکلت بندی و ساختار ظاهری تمام وب سایتها و صفحات موجود در وب است که مخفف Hyper Text Markup Language و به معنای “زبان نشانه گذاری فرامتن” میباشد. به عنوان مثال متنها، تصاویر، ویدیوها و … در قالب زبان HTML در ساختار صفحه وب قرار میگیرند.
- CSS زبان استایل دهی به صفحات سایت میباشد. به عنوان مثال اعمال رنگ به المانهای مختلف، انتخاب عکس پس زمینه، تغییر فونت و اندازه و فاصله ی خطوط یک پاراگراف، اندازه تصاویر، قرار دادن حاشیه و … که به ظاهر سایت بهبود میبخشد، وظیفه سی اس اس میباشد.
- JS همان گونه که پیش از این بیان شد، جاوااسکریپت یک زبان برنامه نویسی است که به المانهای یک صفحه وب تماما دسترسی داشته و میتواند المانهای HTML یا CSS یا دادههای مربوط به آنان را تغییر دهد (رفتار تعاملی). همچنین به کمک جاوااسکریپت میتوان دادههای گوناگونی که در صفحه وب موجود است (یا دادههایی که کاربر وارد میکند) را به سرور ارسال و پاسخ آن را دریافت نمود و اطلاعات گوناگونی را در اختیار کاربر قرار داد.
برای درک بهتر از مفهوم «رفتار تعاملی سایت» به این مثالها توجه کنید:
- تغییر رنگ دکمهها با کلیک کردن روی آنها
- تصاویر اسلایدری در صفحههای مختلف سایت
- نمایش و یا پنهان کردن اطلاعات
- زوم کردن روی یک تصویر
- ادیت کردن یک عکس
- و …
مثالهای فوق همگی کاربردهای ساده و متعارف جاوااسکریپت میباشد.
یکی از کلیدیترین مفاهیمی که در طراحی سایت و نرم افزارها با آن سرو کار داریم مفهومی به نام UX میباشد. UX مخفف User Experience یا همان تجربه کاربری میباشد که یک موضوع بسیار مهم برای توسعه دهندگان نرم افزارها و سایتها است.
در یک تعریف ساده تجربه کاربری، مجموعه اعمال و استراتژیهایی است که بر روی یک سایت و یا نرم افزار اعمال میکنیم به گونه ای که کاربر پس از استفاده از سایت یا اپلیکیشنی که ما طراحی کردیم احساس رضایت کرده و حس خوبی از آن دریافت کند تا موجب شود کاربر مجددا از سایت و یا اپلیکیشن ما استفاده کند و حتی به آن وفادار بماند.
حالا با توجه به مفهوم UX میتوانیم به این موضوع پی ببریم که، جاوااسکریپت با تبدیل صفحات ایستا (Static) به صفحات پویا (Dynamic) تجربه کاربری را نیز به طور چشمگیری بهبود میبخشد.
تاریخچه جاوا اسکریپت
در ابتدای پیدایش جاوااسکریپت هیچ گاه تصور نمیشد این زبان در این حد پیشرفت کند و تکنولوژیهای روز دنیا را تحت تاثیر خود قرار دهد، زیرا این زبان در ابتدا به عنوان ابزاری برای افزودن عناصر پویا و تعاملی به وب سایتها ساخته شد.

در سال ۱۹۹۴ آقای Brendan Eich (برندان ایچ) در شرکت Netscape مشغول به طراحی زبانی بود که صفحات بی روح وب را که کمترین تعامل را با کاربران داشتند کمیبهبود ببخشد و بتواند روی صفحات ایستای وب، انیمیشنها، محتوای تطبیقی و… را اضافه کند. زبان طراحی شده توسط آقای ایچ در ابتدا به نام Mocha سپس LiveScript و در نهایت به JavaScript تغییر نام داد؛ به نظر میرسد تغییر نام به JavaScript صرفا به دلیل بازار خوبی که آن زمان جاوا در اختیار داشت برمیگردد و هیچ ارتباط دیگری به هم ندارند.
در ابتدا مرورگرهای کمی از این زبان استفاده میکردند اما مدتی بعد در سال ۱۹۹۶ شرکت Microsoft زبانی بسیار مشابه با این زبان طراحی کرد و آن را به دلایل حقوقی Jscript نامید و در مرورگر Internet Explorer از آن پشتیبانی شد. کمیبعد شرکت Netscape جاوااسکریپت را برای استاندارد سازی به سازمان ECMA International که سازمانی در سوییس است و وظیفه آن تعریف استانداردهای بین المللی میباشد، ارسال کرد و در نتیجه نسخه نهایی به نام ECMAScript روانه بازار شد.
ویژگی های جاوا اسکریپت
خب تا اینجا یاد گرفتیم جاوااسکریپت چیست؟ برای اولین بار چگونه و توسط چه کسی طراحی شد؟ و یک دید کلی نسبت به این زبان و کاراییهایش پیدا کردیم. حالا وقت آن رسیده که به سراغ ویژگیهای این زبان قدرتمند برویم!

جاوااسکریپت یک زبان متن باز (Open-source)
اگر کمیبا زبانهای برنامه نویسی آشنایی داشته باشید حتما اصطلاح متن باز یا همان Open-source را شنیده اید. زبان متن باز به زبانی گفته میشود که، کد منبع (Source Code) آن در اختیار عموم برنامه نویسان در سراسر دنیا قرار میگیرد تا بتوانند به صورت رایگان از آن استفاده کنند. همچنین، میتوانند تغییراتی در کد ایجاد کنند و آن را اصلاح کرده و به اشتراک بگذارند.
با توجه به مفهوم Open-source میتوانیم بگوییم، این یک ویژگی عالی برای زبان برنامه نویسی به حساب میآید، زیرا:
- دسترسی رایگان برای همه توسعه دهندگان؛ با این کار جمعیت زیادی از توسعه دهندگان به این زبان روی آورده اند که این گستردگی به نوعی یک مزیت میباشد.
- حق دسترسی و اصلاح Source Code؛ این ویژگی باعث میشود تا توسعه دهندگان زیادی در سراسر دنیا سعی به اصلاح و بهتر شدن زبان را داشته باشند که باعث پیشرفت هر چه بیشتر یک زبان برنامه نویسی میشود.
شاید بتوان گفت بخشی از محبوبیت بالای جاوااسکریپت همین ویژگی اش باشد!!!
جاوااسکریپت زبانی سطح بالا (High-level)
برای دانستن مفهوم زبان سطح بالا بهتر است کمی به عقب برگردیم، جایی که اولین زبانهای برنامه نویسی طراحی شدند. در ابتدای کار با کامپیوترها از زبانهایی استفاده میشد که کامپیوتر آنها را درک کند یعنی زبان ماشین! که به آن باینری یا صفر و یک هم میگویند. به زبان ماشین، زبان سطح پایین (Low-level) گفته میشود.
اما استفاده از این زبانها سختیهای بسیاری داشت چون برای ما انسانها قابل درک نیستند و طبیعتا کار با آن هم دشوار میباشد. در سال ۱۹۶۰ برای اولین بار از زبانهایی استفاده شد که اشتراکات بسیاری با زبان انسانها داشت که به آن زبان سطح بالا گفته میشود. زبان COBOL و Fortran از اولین زبانهای سطح بالا میباشند.
در زبانهای سطح بالا از عناصر طبیعی زبان انسان استفاده میشود و انتزاع زیادی از جزییات کامپیوتر دارد. به عنوان مثال استفاده از کلمه کلیدی «if» در زبانهای C، C++، Java، JavaScript و… که همان معنی if در زبان انگلیسی را میدهد. یا استفاده از کلمه کلیدی «const» در جاوااسکریپت که مخفف constant به معنای «ثابت»، که برای ذخیره ی مقادیر ثابت استفاده میشود.
جاوااسکریپت زبانی شی گرا (Object-based)
زبان برنامه نویسی شی گرا به زبانهایی گفته میشود که، الگوی برنامه نویسی در آنها بر مبنای اشیا (Objects) و کلاسها (Class) طراحی میشوند. در واقع شی گرایی یک تفکر در برنامه نویسی محسوب میشود که بر اساس آن میتوان یک بار اشیا و متدها (توابع) را تعریف کرد و در قسمتهای مختلف برنامه، تنها با تغییر مقدار آنها شکلهای گوناگونی از آن را در برنامه ایجاد کرد.
به عنوان مثال یک کارخانه تولید لوازم خانگی را تصور کنید که در تلاش برای تولید یک یخچال میباشد. قرار است این کارخانه سه نوع یخچال (آبسردکن، هوشمند، دیجیتالی) را طراحی و تولید کند:
- راه اول این است که؛ هر سه نوع یخچال را از صفر تا صد به طور جداگانه طراحی کند.
- اما راه دوم این است که؛ یک بار یخچال را طراحی کند و سه بار ویژگی مورد نظر (آبسردکن، هوشمند، دیجیتالی) را فقط تغییر بدهد.
در این مثال؛ بخش تولید یخچال یک کلاس است، یخچالها همان اشیا میباشند و هر نوع یخچال (آبسردکن، هوشمند، دیجیتالی) توابع آن کلاس میباشند. حالا این موضوع را در نظر بگیرید که کارخانه بخشهای تولیدی دیگری نیز دارد، مثل بخش تولید اجاق گاز، بخش تولید جارو برقی و… اگر هر بخش از این کارخانه را یک کلاس در نظر بگیریم از مجموعه این کلاسها کارخانه که همان برنامه اصلی ما است بوجود میآید. به این دید در برنامه نویسی Buttom-up یا همان روش جز به کل گفته میشود.
مسلما راه دوم برای توسعه دهندگان بسیار ساده تر میباشد. زیرا:
- در زمان صرفه جویی میشود
- بسیار به دنیای واقعی نزدیک است
- درک آن برای برنامه نویس ساده است
- کد را کاهش میدهد
- بهبود عملکرد کد را به دنبال دارد
در مقابل زبانهای شی گرا، زبانهای رویه ای قرار دارند مانند زبان C.
جاوااسکریپت زبان چند سکویی (Cross-platform)
تا چند سال اخیر توسعه دهندگان مجبور بودند برای نوشتن یک برنامه برای یک پلتفرم خاص از زبان مخصوص همان پلتفرم استفاده کنند. به عنوان مثال برای نوشتن برنامه برای سیستم عامل اندروید از جاوا و برای نوشتن برنامه برای سیستم عامل IOS از swift و یا ObjectiveC استفاده میشد.
در واقع توسعه دهنده مجبور بود برای نوشتن یک برنامه، چه برای گوشیها و چه نرم افزارهای دسکتاپ، کد خود را به زبانهای مختلف بازنویسی کند. به برنامههایی که به این شیوه طراحی میشوند برنامههای بومی(Native) گفته میشود.
با توجه به توضیحاتی که ارائه شد زبانهای چند سکویی به زبانهای گفته میشود که، هیچ محدودیتی در پلتفرمها ندارند. به زبان ساده تر، ما میتوانیم یک بار برنامه یا نرم افزار را به یک زبان (مانند جاوااسکریپت) بنویسیم و برای پلتفرمهای مختلف مانند سیستم عامل اندروید، IOS و یا دسکتاپ خروجی داشته باشیم که این یک اتفاق عالی است زیرا توسعه دهنده دیگر مجبور به یادگیری زبانهای مختلف برای پلتفرمهای مختلف نیست.
زبانهای چند سکویی مانند جاوااسکریپت و پایتون مزایای بسیاری دارند:
- کاهش هزینه برای مدیران شرکتها و توسعه دهندگان
- صرفه جویی در زمان
- کاهش دشواری و پیچیدگی
- و…
البته کدنویسی به شیوه Native مزایای خاص خود را دارد و همچنان رایج میباشد و طرفداران زیادی نیز دارد. به طور کلی به نظر میرسد که در سالهای آینده شاهد استفاده گسترده از زبانهای Cross-platform خواهیم بود.
جاوااسکریپت زبانی پویا (dynamic)
زبانهای برنامه نویسی به دو دسته، ایستا و پویا تقسیم میشوند. زبانهای ایستا زبانهایی هستند که، درستی و صحت typeها در آن پیش از اجرا برنامه بررسی میشود و اگر درستی آن تایید نشود پیش از اجرا، پیغام خطا صادر میکنند. مانند آنچه در زبانهایی مثل C++ اتفاق میافتد.
اما زبانهای برنامه نویسی پویا دقیقا برخلاف زبانهای ایستا میباشند. یعنی اگر هنگام اجرای برنامه (run-time) مثلا در خط ۱۰۰ ام برنامه انتساب نامعتبری از متغیری وجود داشته باشد، آن گاه پیغام خطا را صادر میکند.
این ویژگی مزیتهای زیادی برای برنامه نویس ایجاد میکند:
- کوتاه تر شدن کدها در زبانهای برنامه نویسی پویا در مقایسه با ایستا
- انعطاف پذیری بسیار در کدهای پویا
- بهینه بودن کدهای پویا
- و…
جاوااسکریپت زبان مفسری (Interpreter)
کدهای نوشته شده توسط توسعه دهنده باید به زبان ماشین (کامپیوتر) ترجمه شوند. برای ترجمه زبانها دو راه وجود دارد :
- کامپایل کردن (Compiler): در این روش کدها یک بار به طور کامل ترجمه میشوند و سپس نتیجه (تعداد خطا و…) به ما نمایش داده میشود اما Source Code پیش از ترجمه ابتدا به شکل دیگری کامپایل میشود. به این زبانها، زبان کامپایلری گفته میشود.
- مفسر (Interpreter): در این روش کد از بالا به پایین شروع به اجرا میکند و خط به خط توسط مفسر ترجمه میشود و ما از نتیجه همان لحظه (یعنی پس از پایان هر خط) مطلع میشویم، برخلاف زبانهای کامپایلری که Source Code به شکل دیگری کامپایل میشد در این روش به صورت متن اصلی دریافت میشود. به این زبانها، زبان مفسری گفته میشود.
برای ترجمه جاوااسکریپت، مرورگر ابتدا کد را به صورت متن اصلی (همانند روش مفسر) دریافت میکند و سپس اسکریپت را اجرا میکند. اکثر مفسرهای مدرن از تکنیکی به نام Just-in-time compilation استفاده میکنند. در این تکنیک Source Code جاوااسکریپت به فرمتی سریع و باینری کامپایل میشود تا هر چه سریعتر اجرا شود. اما با این تفاسیر جاوااسکریپت یک زبان مفسری است زیرا کامپایل کردن آن مانند زبانهای مفسری در زمان اجرا اتفاق میافتد.
همانگونه که پیش از این بیان کردیم جاوااسکریپت کتابخانهها و فریمورکهای بسیار زیاد و متنوعی دارد. پیش از معرفی کتابخانهها و فریمورکهای آن ابتدا توضیح مختصری از این اصطلاحات را بیان میکنیم.
کتابخانهها و فریمورکها در جاوا اسکریپت
معمولا برنامه نویسهای مبتدی این دو اصطلاح را به اشتباه به جای هم بکار میبرند اما، باید بگوییم تفاوت بسیاری میان این دو اصطلاح وجود دارد. کتابخانهها و فریمورکها توسط برنامه نویسهای حرفه ای دیگری کدنویسی شدهاند. در واقع هدف از این کار حل مشکلات رایج در برنامه نویسی بود؛ زیرا تا پیش از این، برنامه نویسها برای کد نویسی یک برنامه به مشکلات بسیاری برخورد میکردند.

با وجود این توضیحات شاید برای شما هم این پرسش به وجود آمده باشد پس، تفاوت کتابخانه و فریمورک در چیست؟
کتابخانه یا Library مجموعه ای از توابع از پیش نوشته شده ای میباشند که برنامه نویس در جریان برنامه، هر زمان و در هر کجای برنامه که به آن احتیاج داشته باشد آن را فراخوانی میکند. نحوه دسترسی به کتابخانهها از طریق فراخوانی نام آن کتابخانه اتفاق میافتد. به عنوان مثال کتابخانهی «math» که تقریبا در تمام زبانها وجود دارد و بسیاری از عملیات ریاضی مانند جذر، لگاریتم، توان و… را برای ما محاسبه میکند.
فرض کنید میخواهیم جذر یک عدد را محاسبه کنیم. برای این کار به جای استفاده از الگوریتمهای پیچیده ریاضی و کدنویسی آن، نام کتابخانه math را فراخوانی کرده و در برنامه از آن استفاده میکنیم.
فریمورک یا Framework یک بستری برای کدنویسی میباشد که توسعه دهنده در آن بستر کدهای خود را مینویسد. درست برعکس کتابخانهها که برنامه نویس در صورت نیاز آنها را فراخوانی میکند. فریمورک، از تکنیکی به نام «inversion of control» (وارونگی کنترل) استفاده میکند. یعنی فریمورک تعیین میکند که توسعه دهنده به چه چیزی نیاز دارد. بنابراین فریمورک مشخص میکند که برنامه نویس در چه جاهایی کدنویسی کند.
به عنوان مثال فریمورک ReactNative در جاوااسکریپت پس از ایجاد پروژه، فولدرهای اولیه را برای برنامه نویس ایجاد میکند.
مزایای استفاده از کتابخانه و فریمورک های جاوا اسکریپت
- کاهش هزینه در توسعه وب سایتها، به دلیل متن باز و رایگان بودن فریمورکها.
- سرعت بالا در توسعه، به دلیل پشتیبانی قوی تعدادی از شرکتهای بزرگ دنیا مانند گوگل و فیسبوک.
- افزایش بهره وری، به دلیل نوشتن کدهایی با استانداردهای بالا
- کاهش تعداد کدها
از میان کتابخانهها و فریمورکهای جی اس، تعدادی از آنها برای برنامه نویسی سمت کاربر یا Client-side و تعدادی از آنها برای برنامه نویسی سمت سرور یا Server-side مناسب اند.
تفاوت زبانهای سمت سرور و سمت کاربر چیست؟
سمت کاربر یا Client-side: به هر چیزی که کاربر در صفحه نمایش و یا مانیتور خود میبیند گفته میشود. مثلا هر آن چه که الان، هنگام خواندن این مقاله در صفحه نمایش خود مشاهده میکنید یا هنگامیکه با اپلیکیشنهای مختلف کار میکنید، Client-side نام دارد.
اما در طرف مقابل، سمت سرور یا Server-side قرار دارد و هر چیزی که پشت صحنه اتفاق میافتد و قابل مشاهده برای کاربر نیست را شامل میشود. مانند هنگامیکه چیزی را در گوگل سرچ میکنید و گوگل صفحات پیشنهادی خود را به شما نمایش میدهد، هنگامیکه فرمیرا پر کرده و ارسال میکنید و یا هنگامیکه در شبکههای اجتماعی با دوست خود چت میکنید، در تمام این مثالها دادهها از سمت شما (کاربر) به سرور فرستاده میشوند و در نهایت این سرور است که به شما پاسخ میدهد.
ما در این مقاله به تعدادی از بهترین و محبوب ترین کتابخانهها و فریمورکها در جاوااسکریپت اشاره میکنیم.

از میان کتابخانههای جاوا اسکریپت میتوان به موارد زیر اشاره کرد:
- DOJO toolkit
- jQuery
- Vue
- Google polymer
- JavaScript InfoVis toolkit
- D3.js
- React
- و…
همچنین از میان فریمورکهای جاوا اسکریپت میتوان به موارد زیر اشاره کرد:
- Angular: یکی از قدرتمندترین فریمورکهای JS میباشد که توسط گوگل ساخته شده و برای طراحی و توسعه اپلیکیشنهای تک صفحه ای یا Single Page Application (SPA) بسیار مناسب میباشد.
- ReactNative: این فریمورک که توسط فیسبوک ساخته شده برای توسعه UI (رابط کاربری) اپلیکیشنهای اندروید و IOS مناسب میباشد.
- Node.js: یک محیط Runtime میباشد که مناسب برای کدنویسی سمت سرور یا همان Server-side میباشد.
- Ember.js: این فریمورک مبتنی بر معماری MVC یا Model View controller است که مناسب برای توسعه ی وب اپلیکیشنهای بزرگ سمت کاربر میباشد. و این قابلیت را به برنامه نویس میدهد تا کدهای ساختار یافته ای بنویسد.
- Vue
- Electron از این فریمورک برای ساخت نرم افزارهای دسکتاپی استفاده میشود.
- jsیک فریمورک ویژه ی Machine Learning (یادگیری ماشین) میباشد.
- و…
کدام نرم افزارها و اپلیکیشنها از جاوا اسکریپت استفاده میکنند؟
بسیاری از نرم افزارها و اپلیکیشنهای محبوب که در حوزه خود موفق بوده و طرفداران زیادی دارند نیز از جاوا اسکریپت برای توسعه نرم افزار و یا اپلیکیشن خود استفاده کرده اند:
- اینستاگرام (Instagram) از فریمورک ReactNative برای طراحی رابط کاربری اپلیکیشن
- لینکدین (LinkedIn) از فریمورکهای ReactNative،js و Node.js
- پی پال Paypal نیز از فریمورک js برای توسعه اپلیکیشن خود
- Candy Crush از فریمورک ReactNative برای توسعه این بازی در اپلیکیشن موبایلی
- نتفلیکس (Netflix) از فریمورک js برای پلتفرم پخش آنلاین
- اوبر (Uber) از فریمورک js برای توسعه اپلیکیشن خود
- Trello از فریمورک js برای سرویس پشتیبانی خود
- DropBox از فریمورک ReactNative برای توسعه اپلیکیشن خود
- WordPress از فریمورک ReactNative و Electron برای پلتفرم دسکتاپ خود
- و همچنین اپلیکیشن ایرانی دیوار نیز از فریمورک ReactNative برای UI اپلیکیشن
استفاده کرده اند و همگی از رضایت قابل توجهی چه از نظر کارکرد نرم افزارهایشان و چه از نظر جلب نظر مشتری داشته اند. شرکت یاهو (Yahoo) جزء اولین شرکتهایی بود که خیلی زود پس از انتشار Node در بخشهای مختلف خود از آن استفاده کرده و با آن همکاری کرد. پس از آن حدود سه سال بعد یعنی در سال ۲۰۱۲ موزیلا (Mozilla) نیز با Node.js همکاری کرد.
شاید برای شما هم جالب باشه که حتی NASA هم از Node.js استفاده کرده است!!!
جاوا اسکریپت چگونه کار میکند؟
همانطور که در بخش تاریخچه جاوااسکریپت بیان کردیم؛ جاوا اسکریپت در ابتدا فقط برای صفحات وب طراحی شده بود و خلاصه یک زبان اسکریپت نویسی سمت کاربر بود. یعنی برای اینکه کدهای جاوااسکریپت اجرا شوند نیاز بود تا کدهای نوشته شده توسط برنامه نویس در مرورگر وب (Web Browser) ترجمه و سپس اجرا شود که در اصطلاح به آن client-side scripting language میگویند.

برای اینکه کدهای جاوااسکریپت ترجمه شوند نیاز بود تا مرورگرها قادر به پشتیبانی از جاوااسکریپت بشوند بنابراین مرورگرها اقدام به ساخت موتورهایی کردند که بتواند کدهای جاوااسکریپت را کامپایل کند. موتور جاوااسکریپت یک برنامه ای است که کدهای Javascript را تبدیل به کد ماشین یا همان Low-level میکند.
اولین موتور جاوااسکریپت هم توسط آقای برندان ایچ برای مرورگر وب Netscape Navigator ایجاد شد که بعدها تبدیل به موتور SpiderMonkey در مرورگر Firefox شد. اما اولین موتور مدرن موتور V8 کروم میباشد که توسط گوگل در سال ۲۰۰۸ طراحی شد. این موتور معروفترین و مهم ترین موتور جاوااسکریپت میباشد که از تکنیک just-in-time-compiling استفاده میکند.
موتور مرورگرهای مهم دیگر را در جدول زیر مشاهده میکنید:
توسعه دهنده | مرورگر | موتور |
chrome | V8 | |
Microsoft | Edge | CHAKRA |
Mozilla | Firefox | SPIDERMONKEY |
Apple | Safari | Nitro |
Opera |
مرورگرها برای اجرای کدهای جاوا اسکریپت علاوه بر موتورها، APIهایی مانند HTML DOM و AJAX را نیز در اختیار موتور قرار میدهند.
AJAX مخفف Asynchronous JavaScript And XML میباشد و وظیفه آن بازیابی و ارسال دادهها از صفحه بدون بارگیری مجدد صفحه میباشد. در واقع تکنیکهای AJAX به ما کمک میکند تا سند XML و JavaScript به صورت غیر همزمان ترکیب شوند تا بواسطه آن بخشی از اطلاعات صفحه بدون رفرش کردن توسط سرور پردازش شود مانند وقتی که در یک سایت رای میدهید و بدون بارگیری مجدد صفحه، نتیجه ی تغییر در رای گیری را میبینید.
DOM هم مخفف Document Object Model میباشد. DOM یک مدل درختی است که در آن سند HTML به عنوان یک درخت در نظر گرفته میشود و المانهای آن هم به عنوان اشیا میباشند. این مدل با دستکاری عناصر HTML، صفحات تعاملی را ایجاد میکنند. مانند وقتی که روی یک دکمه سایت کلیک میکنیم و پیغامیبه کاربر نمایش داده میشود.
همانگونه که در این مقاله بارها اشاره کردیم این زبان فقط مخصوص سمت کاربر نیست و برای سرور هم از آن استفاده میشود. برای اجرا و برنامه نویسی در بخش سرور اپلیکیشنها و نرم افزارها از محیط Node.js استفاده میشود زیرا در موتور Node.js نیز از موتور V8 استفاده شده است.
مزایا و معایب جاوا اسکریپت
هیچ تکنولوژی خاصی در دنیا کامل و بی نقص نیست و مسلما معایبی نیز دارد. زبانهای برنامه نویسی هم اینگونه هستند و در کنار مزیتهایی که دارند معایبی نیز دارند اما، بهترین زبان، زبانی است که مزایای بسیاری در مقابل معایبش داشته باشد و همچنین استفاده از آن باعث بهبود عملکرد ما شود.

مزایای جاوا اسکریپت
- سادگی: یادگیری جاوا اسکریپت نسبت به زبانهای دیگر ساده تر است.
- پشتیبانی قوی: جاوا اسکریپت دارای انجمنهای فعال و به روز در بستر اینترنت میباشد؛ همچنین بنیادهایی نظیر OpenJS Foundation در کنار شرکتهایی مانند گوگل و فیسبوک به توسعه داکیومنت (با استفاده از داکیومنتها میتوان از چگونگی و کارکرد یک فریمورک مطلع شد) فریمورکهای جاوا اسکریپت میپردازند.
- تطبیق پذیری: میتوان برای بک اند و فرانت اند یک برنامه فقط از جاوااسکریپت استفاده کرد.
- سرعت: یکی از سریع ترین زبانهای دنیاست.
- به روزرسانی: به روزرسانی سالانه جاوااسکریپت توسط سازمان ECMA
- رابطهای فوق العاده: توانایی ایجاد رابطهای قوی بسیاری دارد.
- محبوبیت: جزو سه هسته اصلی وب سایت میباشد و در سالهای گذشته گسترش زیادی داشته و طرفداران بسیاری دارد.
- انعطاف پذیری: کدهای جاوا اسکریپت بسیار منعطف میباشند.
- پشتیبانی از دیگر زبانها: توسط این قابلیت جاوااسکریپت از بسیاری از زبانهای دیگر مانند PHP نیز پشتیبانی میکند؛ بسیاری از زبانها فاقد این قابلیت میباشند.
معایب جاوا اسکریپت
- امنیت client-side: مهمترین اشکال جاوا اسکریپت امنیت آن میباشد زیرا، کدها در دستگاههای کاربران اجرا میشوند و میتواند مورد سو استفاده قرار بگیرد.
- پشتیبانی مرورگرها: کدها ممکن است در مرورگرهای مختلف کمیمتفاوت با هم ترجمه شوند.
جمع بندی و کلام پایانی
بسیاری از شرکتهای بزرگ دنیا نظیر،گوگل و فیسبوک در توسعه محصولات خود از جاوااسکریپت استفاده کرده اند این به معنی فراگیری گسترده این زبان در آینده ای نه چندان دور در بیشتر حوزههای تکنولوژی و برنامه نویسی میباشد. پس قطعا آموزش جاوا اسکریپت یک نیاز برای افراد در این حوزه میباشد.
با توجه به کتابخانهها و فریمورکهای بسیاری که زبان جاوااسکریپت داراست، میتوان از آن برای تولید صفحات تعاملی سایتها، وب اپلیکیشنها، طراحی و توسعه اپلیکیشنهای موبایل، دسکتاپ و انواع پلتفرمها و همچنین برای طراحی و توسعه بازیها، پایگاه داده، اینترنت اشیا، هوش مصنوعی، رباتیک و… مناسب میباشد. بنابراین شما با یادگیری جاوا اسکریپت میتوانید تبدیل به برنامه نویس حرفه ای و full-stack شوید یعنی هم فرانت اند کار و هم بک اند کار قابلی شوید.
امیدواریم با مطالعه این مقاله دید خوبی درباره زبان جاوااسکریپت پیدا کرده باشید. پیشنهاد میکنیم این محتوا را در شبکههای اجتماعی با دوستان خود به اشتراک بگذارید.