آموزش جاوا اسکریپت

آنچه در این صفحه می خوانید:

معرفی جاوا اسکریپت (Javascript)

جاوا اسکریپت زبان برنامه‌نویسی سطح بالا، پویا، مبتنی بر شی، چند رویه ای و تفسیری است. این زبان اغلب به عنوان بخشی از صفحات وب استفاده می شود که پیاده سازی آن ها به اسکریپت سمت کلاینت اجازه می دهد تا با کاربر ارتباط برقرار کرده و صفحات دینامیکی ایجاد کند. جاوا اسکریپت زبان برنامه نویسی تفسیر شده با قابلیت های شی گرا است. جاوا اسکریپت برای اولین بار به عنوان LiveScript شناخته شد، اما Netscape نام آن را احتمالا به دلیل هیجاناتی که توسط جاوا ایجاد شد به JavaScript تغییر داد. هسته همه منظوره این زبان در Netscape، اینترنت اکسپلورر و سایر مرورگرهای وب جاسازی شده است. ECMA-262 Specification نسخه استاندارد از هسته زبان جاوا اسکریپت را تعریف می کند. JavaScript 2.0 مطابق با نسخه 5 استاندارد ECMAScript است و تفاوت بین این دو بسیار جزئی است.

Javascript زبان برنامه نویسی داینامیک اسکریپتی است که در کنار اچ تی ام ال و سی اس اس (CSS) یکی از مهم ترین عناصر فناوری های استاندارد وب به شمار می رود. جاوا اسکریپت صفحات وب تعاملی را فعال می کند و جزئی اساسی در برنامه های وب است. اکثریت قریب به اتفاق وب سایت ها از آن استفاده می کنند و مرورگرهای اصلی وب برای اجرای آن از موتور جاوا اسکریپت اختصاصی استفاده می کنند. این زبان هم به صورت ساخت یافته و هم به صورت شی گرا مورد استفاده برنامه نویسان قرار می گیرد. در حقیقت Javascript به صفحات وب زندگی می بخشد. این برنامه امکان اجرای چیزهای پیچیده را برای شما فراهم می کند. هر بار که صفحه وب، اطلاعات استاتیک، به روزرسانی های محتوا، نقشه های تعاملی، گرافیک های دو بعدی یا سه بعدی، اسکرول کردن jukebox های ویدئویی و غیره را به شما نمایش می دهد، می توانید از دخیل بودن Javascript در آن اطمینان حاصل کنید.

در ابتدا موتورهای جاوا اسکریپت فقط با اجرای سمت کلاینت در مرورگرهای وب استفاده می شد، اما اکنون در بسیاری از انواع دیگر نرم افزارهای میزبان از جمله سمت سرور در وب سرورها و دیتابیس ها و در برنامه های غیر وب مانند ورد و نرم افزار PDF و حتی در ران تایم تعبیه شده اند. اصطلاحات Vanilla JavaScript و Vanilla JS به JavaScript اطلاق می شود که توسط هیچ فریمورک یا کتابخانه های اضافی نوشته نشده باشد. اسکریپت های نوشته شده در Vanilla JS کد جاوا اسکریپت ساده شده هستند.

تاریخچه جاوا اسکریپت (Javascript)

Javascript در ماه مه 1995 توسط Brendan Eich در 10 روز ایجاد شد که در شرکت Netscape کار می کرد و در حال حاضر در Mozilla فعالیت می کند. از جاوا اسکریپت همیشه به عنوان جاوا اسکریپت نام برده نمی شد. نام اصلی آن Mocha بود، نامی که مارک آندریسن، بنیانگذار نت اسکیپ برگزید. در سپتامبر 1995 نام آن به LiveScript تغییر یافت، سپس در ماه دسامبر همان سال، پس از دریافت مجوز علامت تجاری از Sun، نام جاوا اسکریپت پذیرفته شد. در سال های 1996 تا 1997، نت اسکیپ، Javascript را برای استاندارد سازی به سازمان ECMA ارسال کرد که در نهایت منجر به انتشار رسمی نسخهٔ استاندارد شده‌ای به نام ECMA Script شد.

چگونه جاوا اسکریپت را اجرا کنیم؟

جاوا اسکریپت به عنوان یک زبان برنامه نویسی، نمی تواند به تنهایی اجرا شود. در حقیقت، مرورگر مسئول اجرای کد JavaScript است. هنگامی که یک کاربر از یک صفحه HTML با JavaScript در آن درخواست می کند، اسکریپت برای مرورگر ارسال می شود و مرورگر اجرای آن را بر عهده خود دارد. مهمترین مزیت JavaScript این است که همه مرورگر های وب مدرن از JavaScript پشتیبانی می کنند. بنابراین، لازم نیست نگران این باشید که بازدید کننده سایت شما از Internet Explorer ،Google Chrome، Firefox یا هر مرورگر دیگری استفاده کند. جاوا اسکریپت پشتیبانی خواهد شد. همچنین، JavaScript بر روی هر سیستم عامل از جمله Windows، Linux یا Mac اجرا می شود. بنابراین، JavaScript بر معایب اصلی VBScript غلبه می کند که فقط به اینترنت اکسپلورر و ویندوز محدود است.

ابزار مورد نیاز

برای شروع، به ویرایشگر متن و مرورگر نیاز دارید. می توانید از ویرایشگر ++Notepad، ویژوال استودیو کد، Sublime Text ،Atom یا هر ویرایشگر متن دیگری که در آن راحت هستید استفاده کنید. می توانید از هر مرورگر وب از جمله Google Chrome، Firefox، Microsoft Edge، Internet Explorer و غیره استفاده کنید.

یک برنامه ساده JavaScript

اگر کد جاوا اسکریپت خود را درون سند HTML ذخیره می کنید، باید تمام کد های جاوا اسکریپت خود را در تگ های (<script> و </script>) قرار دهید. این به مرورگر شما کمک می کند تا کد JavaScript خود را از بقیه کد ها متمایز کند. شما باید از ویژگی نوع در درون برچسب <script> استفاده کرده و مقدار آن را بر روی متن / جاوا اسکریپت مانند این تنظیم کنید:

<script type="text/javascript">

چه زبان هایی در بالای جاوا اسکریپت قرار دارند؟

سینتکس جاوا اسکریپت متناسب با نیاز همه نیست. افراد مختلف ویژگی های متفاوتی می خواهند. این دور از انتظار نیست، زیرا پروژه ها و الزامات برای همه متفاوت است. تعداد زیادی زبان جدید ظاهر شده است، که قبل از اجرای مرورگر به JavaScript تبدیل می شوند. ابزارهای مدرن باعث می شوند که عمل تبدیل بسیار سریع و شفاف انجام شود، در واقع به توسعه دهندگان امکان می دهد تا به زبانی دیگر کد نویسی کنند و آن را به صورت خودکار "under the hood" تبدیل کنند.

نمونه هایی از چنین زبان هایی:

کافی اسکریپت (CafeScript)

یک "شیرینی سینتکس" برای JavaScript است.کافی اسکریپت سینتکس کوتاه تر را معرفی می کند و به ما این امکان را می دهد تا کد واضح و دقیق تری بنویسیم. معمولاً، Ruby devs آن را دوست دارند.

تایپ اسکریپت (TypeScript)

برای ساده سازی توسعه و پشتیبانی سیستم های پیچیده بر اضافه کردن "تایپ کردن داده های دقیق" متمرکز شده است. توسط مایکروسافت توسعه یافته است.

فلو (Flow)

همچنین تایپ داده ها را به روشی متفاوت اضافه می کند. Flow توسط فیسبوک (Facebook) ایجاد شده است.

دارت (Dart)

یک زبان مستقل است که موتور مخصوص خود را دارد و در محیط های بدون مرورگر (مانند برنامه های تلفن همراه) اجرا می شود، اما می تواند به JavaScript نیز منتقل شود. دارت توسط Google ساخته شده است. موارد بیشتری وجود دارد البته، اما باید JavaScript را هم بدانیم تا واقعاً درک کنیم که ما چه کاری انجام می دهیم.

تفاوت بین جاوا اسکریپت و جاوا

اگرچه بین جاوا اسکریپت و جاوا شباهت هایی وجود دارد، از جمله نام زبان، سینتکس و کتابخانه های استاندارد مربوطه، ولی این دو زبان مجزا هستند و از نظر طراحی بسیار متفاوت هستند. جاوا اسکریپت تحت تأثیر زبان های برنامه نویسی مانند Self و Scheme بود. فرمت سریال سازی جی سان (JSON)، برای ذخیره سازی ساختار داده ها در فایل ها یا انتقال آنها از طریق شبکه ها، مبتنی بر JavaScript است.

بر خلاف شباهت اسمی آن ها، کاملا متفاوت از یکدیگر هستند. جاوا زبان برنامه نویسی Object Oriented است که با interpreter بر روی چندین سیستم عامل اجرا می شود و توسط شرکت Sub Microsystems طراحی و پیاده سازی شده است. این زبان برنامه نویسی برای تولید نرم افزار قابل استفاده بر روی پلتفرم های مختلف ایجاد شد. درحالی که، جاوا اسکریپت توسط شرکت Netscape طراحی شد و در حقیقت زبان اسکریپت نویسی می باشد. پس، نیازی به فرآیند کامپایل شدن و کامپایلر ندارد و توسط مرورگر اینترنت اجرا می شود.

محدودیت های جاوا اسکریپت

ویژگی Client-side JavaScript اجازه خواندن یا نوشتن فایل ها را نمی دهد. این به خاطر دلیل امنیتی حفظ شده است. جاوا اسکریپت نمی تواند برای برنامه های شبکه استفاده شود چون چنین پشتیبانی وجود ندارد. جاوا اسکریپت هیچ قابلیت multi-threading یا multiprocessor ندارد.

ویژگی های جاوا اسکریپت (Javascript)

پشتیبانی جهانی

همه مرورگرهای وب مدرن محبوب از JavaScript با محیط اجرا داخلی پشتیبانی می کنند.

دستورات و ساختار

جاوا اسکریپت بخش اعظمی از سینتکس برنامه نویسی ساخت یافته C را پشتیبانی می کند.

پویا

  • تایپ: جاوا اسکریپت مانند سایر زبان های اسکریپت نویسی به صورت تایپ پویا است. نوع به جای تابع با مقدار همراه است. به عنوان مثال، متغیر که در ابتدا به یک عدد محدود شده است ممکن است به رشته مجدداً واگذار شود. جاوا اسکریپت از روش های مختلفی برای تست نوع اشیا، از جمله duck typing پشتیبانی می کند.
  • ارزیابی ران تایم: JavaScript شامل تابع Eval است که می تواند در ران تایم عبارات ارائه شده به عنوان رشته را اجرا کند.

شی گرا (prototype-based)

prototype وراثت در جاوا اسکریپت توسط داگلاس کراکفورد به شرح زیر است:

شما اشیا نمونه اولیه می سازید، و سپس موارد جدید ایجاد می کنید. اشیا در جاوا اسکریپت قابل تغییر هستند، بنابراین می توانیم نمونه های جدید را تقویت کنیم و زمینه ها و روش های جدیدی به آنها ارائه دهیم. سپس این ها می توانند به عنوان نمونه های اولیه برای اجسام جدیدتر عمل کنند. ما به کلاس هایی برای ساختن اشیا مشابه احتیاج نداریم، اشیا از اشیا به ارث می برند.

در جاوا اسکریپت، یک شی آرایه انجمنی است، که با نمونه اولیه تقویت می شود. هر کلید رشته نامی را برای ویژگی شی ارائه می دهد و دو روش سینتکسی برای مشخص کردن چنین نامی وجود دارد: نشانه گذاری نقطه (obj.x = 10) و نماد براکت (obj ['x'] = 10). ممکن است یک تابع در ران تایم اضافه شود، برگردد یا حذف شود. بسیاری از خواص شی (و هر ویژگی متعلق به زنجیره ارثی نمونه اولیه شی) را می توان با استفاده از حلقه for...in شمارش کرد. جاوا اسکریپت تعداد کمی اشیا داخلی از جمله Function و Date دارد.

  • Prototypes: جاوا اسکریپت از Prototypes استفاده می کند که بسیاری از زبان های شی گرا دیگر از کلاس هایی برای ارث استفاده می کنند. شبیه سازی بسیاری از ویژگی های مبتنی بر کلاس با نمونه های اولیه در JavaScript امکان پذیر است.

تابع

تابع در جاوا اسکریپت، first-class است. تابع به عنوان شی در نظر گرفته می شود. به این ترتیب، تابع ممکن است دارای خواص و متد هایی مانند()call. و ()bind. باشد. تابع تو در تو، توابع تعریف شده در تابع دیگر است. هر بار تابع بیرونی فراخوانده می شود. علاوه بر این، هر تابع تو در تو، بسته بندی واژگانی را تشکیل می دهد: دامنه دیکشنری تابع خارجی (شامل هر متغیر ثابت، محلی یا مقدار آرگومان) بخشی از حالت داخلی هر یک از تابع های داخلی می شود، حتی پس از اجرای تابع بیرونی نتیجه می گیرد. جاوا اسکریپت همچنین از توابع ناشناس پشتیبانی می کند.

محیط ران تایم

جاوا اسکریپت به طور معمول به یک محیط زمان اجرا (به عنوان مثال، مرورگر وب) تکیه می کند تا اشیا و روش هایی را ارائه می دهد که توسط آن ها اسکریپت ها می توانند با محیط ارتباط برقرار کنند (به عنوان مثال، صفحه وب DOM). همچنین برای فراهم کردن امکان درج / وارد کردن اسکریپت به محیط زمان اجرا نیز وابسته است. این ویژگی زبان به خودی خود نیست، اما در اکثر پیاده سازی های جاوا اسکریپت رایج است. جاوا اسکریپت پیام های صف را یکجا پردازش می کند. جاوا اسکریپت تابعی را که همراه با هر پیام جدید است، فراخوانی می کند و قاب فراخوانی پشته با آرگومان های تابع و متغیرهای محلی ایجاد می کند.

فراخوانی پشته با توجه به نیاز تابع، کوچک می شود و رشد می کند. هنگامی که فراخوانی پشته پس از اتمام تابع خالی باشد، جاوا اسکریپت به پیام بعدی در صف می رود. به این حلقه رویداد گفته می شود که به عنوان "run to completion" توصیف می شود زیرا هر پیام قبل از در نظر گرفتن پیام بعدی کاملاً پردازش می شود. با این حال، مدل همزمانی زبان حلقه رویداد را به عنوان غیر مسدود کننده توصیف می کند: ورودی / خروجی برنامه با استفاده از رویدادها و توابع پاسخ به فراخوانی انجام می شود. به عنوان مثال، به این معنی است که جاوا اسکریپت می تواند کلیک ماوس را پردازش کند در حالی که منتظر پرس و جو از پایگاه داده برای بازگشت اطلاعات است.

برنامه های افزودنی Vendor-specific

جاوا اسکریپت به طور رسمی توسط بنیاد موزیلا اداره می شود و ویژگی های جدید زبان بصورت دوره ای اضافه می شود. با این حال، تنها برخی از موتورهای جاوا اسکریپت از این ویژگی های جدید پشتیبانی می کنند:

  • خاصیت گیرنده و تنظیم کننده تابع (پشتیبانی شده توسط WebKit،Gecko،Opera،ActionScript و Rhino)
  • بندهای catch شرطی
  • پروتکل تکرار (گرفته شده از پایتون)
  • ژنراتورها-كوروتین های كم عمق (گرفته شده از پایتون)
  • درک آرایه و عبارات ژنراتور (گرفته شده از پایتون)
  • دامنه مناسب برای بلوک از طریق کلید واژه let
  • تخریب آرایه و اشیا (شکل محدود از تطبیق الگوی)

برنامه نویسی شی گرا در جاوا اسکریپت

برنامه نویسی شی گرا (OOP) به استفاده از تک کد ها برای توسعه برنامه ها اشاره دارد. برای برنامه ها از اشیا به عنوان بلوک های ساختمانی استفاده می شود. ساختن برنامه های کاربردی با اشیا به ما اجازه می دهد تا برخی از تکنیک های ارزشمند را اتخاذ کنیم، یعنی وراثت، پلی مورفیسم و Encapsulation.

بررسی Encapsulation و وراثت

می توان اشیا را به عنوان بازیگران اصلی برنامه یا به سادگی "چیزهای" اصلی یا بلوک های ساختمانی دانست که تمام کارها را انجام می دهد. همانطور که اکنون می دانید، اشیا در همه جا در جاوا اسکریپت وجود دارند زیرا هر مؤلفه در JavaScript یک Object است، از جمله توابع، رشته ها و اعداد. ما به طور معمول برای ایجاد اشیا از لفظ شیء یا توابع سازنده استفاده می کنیم.

Encapsulation به محصور کردن کلیه ویژگی های شی در آن شی می باشد تا کارهای داخلی شی (روش ها و خصوصیات آن) از بقیه برنامه پنهان شود. این به ما امکان می دهد مجموعه خاصی از ویژگی های موجود در اشیا را انتزاعی یا بومی سازی کنیم. وراثت به شی گفته می شود که می تواند روش ها و خصوصیات شیء والدین را به ارث ببرد (کلاس در زبان های دیگر OOP یا تابع در JavaScript). هر دو این مفاهیم، محصور سازی و وراثت دارای اهمیت هستند زیرا به ما امکان می دهند برنامه هایی را با کد قابل استفاده مجدد، معماری مقیاس پذیر و ویژگی های انتزاعی بسازیم.

الگوهای طراحی (Design Patterns) در جاوا اسکریپت

به عنوان توسعه دهنده جاوا اسکریپت، شما سعی می کنید کدی تمیز، سالم و با کیفیت را بنویسید. شما چالش های جالب را حل می کنید که، گرچه بی نظیر هستند، ولی لزوماً نیازی به راه حل های منحصر به فرد ندارند. الگوهای طراحی راه حل های قابل استفاده مجدد برای مشکلات رایج در طراحی نرم افزار هستند.

برخی از الگوهای طراحی اصلی جاوا اسکریپت عبارتند از:

  • الگوی سازنده
  • الگوی نمونه اولیه
  • الگوی ماژول
  • الگوی Singleton
  • الگوی کارخانه
  • الگوی ناظر

فریمورک های جاوا اسکریپت (Javascript)

فریمورک های جاوا اسکریپت

نود جی اس (Node.js)

یک محیط ران تایم اوپن سورس و cross-platform (چندسکویی) برای جاوا اسکریپت است که کد جاوا اسکریپت را در خارج از یک مرورگر اجرا می کند. Node.js به توسعه دهندگان اجازه می دهد تا از JavaScript برای نوشتن ابزارهای خط فرمان و اسکریپت نویسی سمت سرور استفاده کنند. در نتیجه، Node.js با یکپارچه سازی توسعه برنامه وب حول یک زبان برنامه نویسی واحد، به جای زبان های مختلف برای اسکریپت های سمت سرور و کلاینت به عنوان یک نمونه everywhere نشان داده می شود.

جی کوئری (JQuery)

محبوب‌ ترین کتابخانه جاوا اسکریپت چند مرورگری JQuery نام دارد که نوشتن اسکریپ‌ های سمت کلاینت در HTML را سهولت می بخشد. JQuery تنها یک فایل جاوا اسکریپت می باشد که از همه ی DOM ها، Event ها، افکت‌ ها و تابع‌های مربوط به ای جکس (Ajax) تشکیل شده است.

انگولار جی اس (AngularJS)

انگولار جی اس یک فریمورک محبوب جاوا اسکریپت می باشد که توسط گوگل توسعه پیدا کرده است. با انگولار شما قادر به ساخت برنامه های تک صفحه ای (Single Page) هستید. فریمورک انگولار به خوبی معماری MVC را در سمت کلاینت پیاده سازی می کند. انگولار از Html ،Css و Javascript استفاده می کند و تقریبا می توان گفت که نقص های آن ها را برطرف می کند.

ری اکت (React)

در سال 2013 جردن واک، فریمورک اوپن سورس و جاوا اسکریپتی به نام React.js را منتشر کرد. ری اکت یک کتابخانه جاوا اسکریپت رسمی، اوپن سورس، کارآمد و قابل انعطاف برای ایجاد رابط کاربری است. در معماری MVC ری اکت در لایه نمایش کاربرد دارد. ری اکت جی اس می تواند برنامه های کاربردی بسازد که encapsulated و قابل استفاده‌ مجدد هستند و می‌توان برایشان کامپوننت‌ های متفاوت نوشت.

امبر جی اس (Ember.js)

یک فریمورک اوپن سورس، جاوا اسکریپتی، رایگان و سمت کلاینت است که برای توسعه برنامه های کاربردی وب طراحی شده. Ember.js اجازه می دهد تا برنامه های جاوا اسکریپت سمت کلاینت با ارائه یک راه حل کامل که حاوی مدیریت داده ها و جریان برنامه باشد ایجاد شوند.

فریمورک Backbonejs

Backbone.js یک کتابخانه جاوا اسکریپتی است که به خاطر استفاده راحت و ساختار ساده ی آن که در برنامه های جاوا اسکریپت اعمال می شود، در بین دیگر کتابخانه ها اهمیت خاصی در جامعه توسعه وب دارد.

فریمورک Meteor.js

یک فریمورک جامع جاوا اسکریپت است که از مجموعه ای از کتابخانه ها و بسته ها تشکیل شده است. اما برخی از مردم آن را جادوی Meteor می نامند. Meteor بر مبنای مفاهیم فریمورک ها و کتابخانه های دیگر ساخته شده است به گونه ای که ایجاد برنامه های کاربردی را آسانتر می سازد.

فریمورک Vue.js

فریمورک اوپن سورس توسعه وب جاوا اسکریپت برای ساخت رابط های کاربری و برنامه های تک صفحه ای است. برخلاف سایر فریمورک های یکپارچه، Vue از پایه طراحی شده تا قابل قبول باشد. کتابخانه اصلی فقط روی لایه View متمرکز شده است و به راحتی می توان آن را با سایر کتابخانه ها یا پروژه های موجود ادغام کرد. از طرف دیگر Vue قادر است در هنگام پشتیبانی و استفاده از کتابخانه های نوین، از برنامه های تک صفحه ای پیشرفته استفاده کند.

فریمورک Polymerjs

Polymer.js یک کتابخانه جاوا اسکریپت است که توسط Google ایجاد شده و امکان استفاده مجدد از عناصر HTML را برای ساختن برنامه ها با کامپوننت فراهم می کند.

فریمورک Knockoutjs

Knockout یک کتابخانه جاوا اسکریپت است که به شما کمک می کند تا با مدل داده های پایه ای، طراحی واکنش گرا و رابط های کاربری غنی ایجاد کنید. هر زمانی که بخش هایی از UI در اختیار داشته باشید که به صورت پویا به روزرسانی می شود (به عنوان مثال، تغییرات با توجه به اقدامات کاربر یا زمانی که یک منبع داده خارجی تغییر می کند اتفاق میفتد).

فریمورک extjs

ExtJS یک فریمورک جاوا اسکریپت محبوب است که UI غنی برای ساخت برنامه های وب با قابلیت cross-browser فراهم می کند. ExtJS بر اساس معماری MVC / MVVM است. آخرین نسخه Ext JS 6 یک پلتفرم واحد است که می تواند برای هر دو برنامه دسکتاپ و موبایل بدون نیاز به کد های مختلف برای پلتفرم های مختلف استفاده شود.

فریمورک winjs

WinJS یک کتابخانه اوپن سورس جاوا اسکریپت است که helper هایی را ارائه می دهد تا برنامه های نیتیو Windows Store را با استفاده از HTML5 و جاوا اسکریپت تسهیل کند.

فریمورک underscorejs

یک کتابخانه جاوا اسکریپت است که بسیاری از برنامه های برنامه نویسی تابعی (Functional Programming) را که از Prototype.js (یا روبی) انتظار می رود، بدون گسترش هر یک از اشیا ساخته شده در جاوا اسکریپت فراهم می کند.

فریمورک sailsjs

یک فریمورک با معماری MVC برای Node.js است که به طور خاص برای توسعه سریع برنامه های جانبی سرور در جاوا اسکریپت طراحی شده است. معماری مبتنی بر سرویس آن انواع مختلفی از اجزایی را فراهم می کند که می توانید آنها را برای مرتب سازی کد و مسئولیت های جداگانه استفاده کنید. حتی توسعه برنامه کاربردی در سطح سازمانی نیز امکان پذیر است. از آنجایی که Sailsjs با Javascript نوشته شده است، به شما مزیت دیگری را می دهد که بتوانید کد خود را بین سرور و کلاینت به اشتراک بگذارید.

فریمورک babeljs

bablejs یک ترنسپایلر جاوا اسکریپت است که کد را به جاوا اسکریپت ES5 قدیمی تبدیل می کند و می تواند در هر مرورگری اجرا شود. Bablejs تمام ویژگی های سینتکس که به جاوا اسکریپت افزوده شده است را با مشخصات ES6 دارد.

کاربرد جاوا اسکریپت (Javascript)

کاربرد جاوا اسکریپت

فناوری مرورگر ها و رایانه های شخصی به حدی بهبود یافته اند که به زبانی برای ایجاد برنامه های وب مستحکم نیاز دارند. وقتی کاربر نقشه ای را در Google Maps کاوش می کند، فقط باید کلیک کرده و ماوس را بکشید. تمام نمای دقیق فقط با یک کلیک قابل مشاهده است. این امر به دلیل جاوا اسکریپت امکان پذیر است. بدون ارسال پیام به سرور با مرورگر ارتباط برقرار می کند. جاوا اسکریپت از رابط های برنامه نویسی برنامه (API) استفاده می کند که قدرت اضافی را برای کد فراهم می کند.

  • تحرک پذیری المان ها در صفحه وب
  • ارتقای رابط های HTML
  • حل مشکلات صفحه بندی
  • پیشنهاد نتایج در جعبه جستجو در زمانی که شما در آن تایپ می کنید و بر اساس آنچه تا کنون وارد کرده اید نتایجی را ارائه می دهد.
  • سرعت بالا و حافظه کوچک جاوا اسکریپت در مقایسه با سایر زبان ها
  • بدون ارسال پیام به سرور، اجازه می دهد تا همه چیز در مرورگر کاربر اتفاق بیفتد.
  • می توانید در مرورگر به HTML استاتیک خود چیزی بیافزایید یا آن را تغییر دهید.

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

جاوا اسکریپت پر کاربردترین زبان است زیرا در کلیه دستگاه ها و برنامه های ممکن استفاده می شود. استفاده از JavaScript کتابخانه Pebble JS را فراهم می کند که در برنامه های ساعت هوشمند استفاده می شود. این فریمورک برای برنامه هایی کاربرد دارد که برای عملکرد آن به اینترنت نیاز دارند. استفاده از Pebbles به یک توسعه دهنده اجازه می دهد تا برای تعدادی از ساعت با استفاده از JavaScript برنامه ای ایجاد کند.

برنامه نویسی سمت سرور با جاوا اسکریپت

برنامه های کاربردی سرور

Node.js برای ساختن برنامه های شبکه سریع و مقیاس پذیر در ران تایم Javascript Chrome ساخته شده است. این برنامه از برنامه های کاربردی، سبک و کارآمد استفاده می کند که باید به کمک سرور در سیستم ها توزیع شوند. Javascript برای رسیدگی به درخواست HTTP و تولید محتوا استفاده می شود.

وب سرور

با استفاده از نود جی اس می توان سرور وب ایجاد کرد. از مزایای Node.js این است که رویداد محور است و منتظر پاسخ فراخوانی قبلی نخواهد ماند. به فراخوانی بعدی منتقل می شود و هنگامی که پاسخی برای فراخوانی قبلی دریافت می شود، از رویدادها استفاده می کند. سرورهای ساخته شده روی Node.js بسیار سریع هستند و از بافر و انتقال قطعات داده استفاده نمی کنند.

Client-side JavaScript

Client-side JavaScript متداول ترین شکل زبان است. اسکریپت باید با سند HTML برای کدی که توسط مرورگر تفسیر می شود ادغام شود یا ارجاع داده شود. این بدان معنا است که صفحه وب نباید HTML استاتیک باشد، بلکه می تواند شامل برنامه هایی باشد که با کاربر تعامل برقرار، مرورگر را کنترل و محتوای HTML را به صورت پویا ایجاد می کند. مکانیزم سمت کلاینت جاوا اسکریپت، مزایای بسیاری نسبت به اسکریپت های سمت سرور CGI دارد.

برای مثال، شما ممکن است از جاوا اسکریپت برای بررسی اینکه آیا کاربر آدرس ایمیل معتبر را در فیلد فرم وارد کرده اید استفاده کنید. کد جاوا اسکریپت هنگامی که کاربر فرم را اجرا می کند، اجرا می شود و تنها اگر تمام ورودی ها معتبر باشند، آنها می توانند به وب سرور منتقل شوند. جاوا اسکریپت می تواند برای بررسی رویدادهایی که کاربران ایجاد می کنند مانند دکمه های کلیک، ناوبری لینک و سایر اقداماتی که کاربر به طور صریح یا به طور ضمنی انجام می دهد مورد استفاده قرار گیرد.

ساخت اپلیکیشن موبایل با جاوا اسکریپت

مهمترین کاری که با استفاده از JavaScript می توان انجام داد ساختن برنامه های کاربردی بدون زمینه های وب است. از موبایل هایی که بیشتر در اپل و اندروید دارای دو سیستم عامل مختلف هستند برای ساخت این موارد استفاده می شود. یک بار برنامه را بنویسید و استفاده از آن در هر دو سیستم عامل این دستگاه ها امکان پذیر باشد. فون گپ فریمورکی است که این امکان را فراهم می آورد. همچنین اخیراً ری اکت نیتیو را داریم که به این منظور سرویس دهی می کند. از این رو با استفاده از Javascript می توان برای استقرار و بارگیری برنامه های مربوطه در محیط های متقاطع استفاده کرد.

کوردوا فریمورک توسعه برنامه کاربردی موبایل است که می تواند برای ایجاد برنامه های تلفن همراه چند سکویی با CSS و HTML5 و JavaScript استفاده شود. منظور از Cross-platform، این است که می توان یک بار کد برنامه را بنویسید و در چندین سیستم عامل تلفن همراه مانند اندروید، آی او اس (iOS) یا ویندوز فون اجرا کرد. Apache Cordova فریمورک توسعه برنامه کاربردی تلفن همراه است که در ابتدا توسط نیتوبی ایجاد شده است. Adobe Systems نیتوبی را در سال 2011 خریداری کرد، آن را دوباره به عنوان PhoneGap معرفی کرد و بعداً نسخه اوپن سورس نرم افزاری به نام Apache Cordova را منتشر کرد.

Apache Cordova به برنامه نویسان نرم افزار این امکان را می دهد تا به جای اتکا به API های خاص برای سیستم عامل، برنامه هایی را برای دستگاه های تلفن همراه با استفاده از CSS و HTML5 و JavaScript ایجاد کنند. اپلیکیشن های به دست آمده با کوردوا هیبرید هستند، زیرا برنامه ها از طریق وب به جای فریمورک UI نیتیو سیستم عامل اجرا می شود و نه بدین معنی که آن ها کاملاً تحت وب باشند زیرا آنها فقط برنامه های وب نیستند بلکه به عنوان برنامه هایی برای توزیع و دسترسی به API های دستگاه نیتیو بسته بندی شده اند. مخلوط کردن قطعه کد نیتیو و هیبرید از نسخه 1.9 امکان پذیر است.

ساخت بازی با جاوا اسکریپت

نه تنها برای وب سایت بلکه استفاده از جاوا اسکریپت در ساخت بازی برای اوقات فراغت نیز کمک می کند. ترکیب JavaScript و HTML5 باعث می شود JavaScript در توسعه بازی نیز محبوب شود.

برخی از بهترین فریمورک های ساخت بازی برای جاوا اسکریپت:

کانستراکت (Construct2)

کانستراکت (Construct2) یک ویرایشگر بازی 2D مبتنی بر HTML5 است که توسط Scirra Ltd توسعه یافته است. هدف از ایجاد Construct فراهم کرن شرایطی است تا افراد غیر برنامه نویس، بازی ها را در یک کشیدن و رها کردن با استفاده از یک ویرایشگر ویژوال و یک سیستم منطقی مبتنی بر رفتار ایجاد کنند. روش اصلی برنامه نویسی بازی ها و برنامه های کاربردی در Construct از طریق "event sheets" است که مشابه سورس فایل ها در زبان های برنامه نویسی هستند.

فازر (Phaser)

Phaser یک فریمورک بازی HTML5 است که هدف آن کمک به توسعه دهندگان برای ایجاد بازی های cross-browser HTML5 می باشد. با Phaser می توان بازی های 2D کامل را در یک مرورگر با دانش کمی در مورد توسعه بازی یا جاوا اسکریپت برای طراحی مرورگر به طور کلی انجام دهید.

محیط توسعه جاوا اسکریپت (Javascript)

محیط توسعه یکپارچه (IDE) یک نرم افزار کاربردی است که امکانات کاملی را برای برنامه نویسان رایانه جهت توسعه نرم افزار فراهم می کند. IDE معمولاً از حداقل یک ویرایشگر کد منبع، ساختن ابزارهای اتوماسیون و دیباگینگ تشکیل شده است. برخی از IDE ها، مانند NetBeans و Eclipse، حاوی کامپایلر، مترجم یا هر دو مورد لازم هستند. مرز بین یک IDE و سایر قسمت های محیط توسعه نرم افزار به خوبی مشخص نشده است. گاهی اوقات یک سیستم کنترل نسخه یا ابزارهای مختلف برای ساده سازی ساخت رابط کاربری گرافیکی (GUI) یکپارچه شده است. بسیاری از IDE های مدرن دارای مرورگر کلاس، مرورگر شی و نمودار سلسله مراتبی کلاس برای استفاده در توسعه نرم افزار شی گرا هستند.

ویژوال استودیو کد

ویژوال استودیو کد، یک ویرایشگر کد رایگان، چند سکویی، فوق العاده سریع و سبک وزن است که توسط مایکروسافت برای ویندوز، لینوکس و مک ایجاد شده است. Visual studio code مبتنی بر فریمورک Electron می باشد که برای ساخت نرم افزار دسکتاپ چند سکویی با استفاده از فناوری های وب مورد استفاده قرار می گیرد. همچنین برای استقرار اپلیکیشن های Node.js برای اجرا بر روی دسکتاپ بر روی موتور طرح ریزی Blink استفاده می شود.

وب استرم (WebStorm)

WebStorm ویرایشگر کامل برای توسعه دهندگان وب و یک IDE کامل است که تمام ابزارها و امکانات را برای توسعه دهندگان جاوا اسکریپت، Typescript، NodeJS و البته HTML و CSS فراهم می کند. WebStorm در بالای پلتفرم IntelliJ ساخته شده است.

ویم (Vim)

Vim یا Vi Improved یک ویرایشگر متن برای برنامه نویسان می باشد که با Vi سازگار است و مخصوصا برای ویرایش برنامه ها مناسب می باشد. با استفاده از یک رابط خط فرمان و همچنین به عنوان یک برنامه مستقل با رابط کاربر گرافیکی به کار برده می شود.

ایماکس (Emacs)

ویرایشگر متن Emacs حالت های حساس به محتوای متنوعی را برای متن ساده، برنامه نویسی کد منبع و کد HTML ارائه می دهند. چنین حالت هایی دارای سینتکس برجسته سازی هستند که رنگ های مختلف برای برجسته کردن عناصر مختلف سینتکس (مانند حلقه ها، نظرات، متغیرها و ...) استفاده می شوند. Emacs بیش از یک ویرایشگر متن است و همچنین می تواند دستورات پوسته، دسترسی به اینترنت، نوشتن و تست برنامه ها، و خواندن و ارسال ایمیل در محیط Emacs انجام دهد.

نت بینز (NetBeans)

اکثر توسعه دهندگان، NetBeans IDE را به عنوان IDE اصلی و رایگان جاوا می دانند. NetBeans IDE از چندین زبان (PHP ،JavaFX ، C++ / C، جاوا اسکریپت، و غیره) و فریمورک پشتیبانی می کند. NetBeans یک پروژه اوپن سورس است که برای ارائه محصولات توسعه نرم افزار جامع نرم افزار (NetBeans IDE و پلت فرم NetBeans) اختصاص داده شد تا به نیازهای توسعه دهندگان، کاربران و کسب و کارهایی که به NetBeans به عنوان پایه ای برای محصولات خود متکی هستند، پاسخ می دهد. خصوصا آن ها را قادر می سازد تا با سرعت بیشتر، کارآمدتر و راحت تر این محصولات را با استفاده از نقاط قوت پلتفرم جاوا و دیگر استانداردهای صنعت مربوطه، توسعه دهند.

ویژوال استودیو

ویژوال استودیو مجموعه کاملی از ابزارهای توسعه برای ساخت برنامه های کاربردی وب ای اس پی دات نت (ASP.NET) و اکس ام ال (XML)، برنامه های کاربردی دسکتاپ و برنامه های کاربردی تلفن همراه است. ویژوال بیسیک، ویژوال سی و ویژوال سی پلاس پلاس همه از یک محیط توسعه یکپارچه (IDE) استفاده می کنند که به اشتراک گذاری ابزار و ایجاد راه حل های ادغام زبان ها را آسان می کند. مایکروسافت ویژوال استودیو به عنوان یک محیط توسعه یکپارچه نرم افزاری استفاده می شود که برای توسعه برنامه های کامپیوتری برای مایکروسافت ویندوز، و همچنین وب سایت ها، برنامه های کاربردی وب و وب سرویس ها استفاده می شود.

دریم ویور (Dreamweaver)

شرکت ادوبی نرم افزاری را جهت طراحی وب سایت با نام Dreamweaver تولید کرد. بدون نصب هیچگونه نرم افزار دیگری می توان به راحتی یک وب سایت را به کمک Dreamweaver طراحی کرد. این برنامه کاملا هوشمند و کار با آن ساده است. به همین دلیل لازم به حفظ تمامی کد ها و ویرایش کلمات غلط نیست. با زبان HTML می توان صفحات سایت را برپایه استاتیک و یا دینامیک طراحی و ایجاد کرد و با استفاده از گزینه FTP در نرم افزار صفحات ایجاد شده را به هاست انتقال داد.

از دیگر محیط های توسعه می توان به موارد زیر اشاره کرد:

  • PhpStorm
  • Atom
  • Komodo IDE
  • ++Notepad

مثال های جاوا اسکریپت (Javascript)

در زیر نمونه ای از صفحه وب با استانداردهای حاوی JavaScript (با استفاده از HTML 5) و DOM:

<!DOCTYPE html>
<html>
  <head>
    <title>Example</title>
  </head>
  <body>
    <button id="hellobutton">Hello</button>
    <script>
        document.getElementById('hellobutton').onclick = function() {
            alert('Hello world!');                    // Show a dialog
            var myTextNode = document.createTextNode('Some new words.');
            document.body.appendChild(myTextNode);    // Append "Some new words" to the page
        };
    </script>
  </body>
</html>

این کد نمونه ویژگی های مختلف JavaScript را نشان می دهد.

/* Finds the lowest common multiple (LCM) of two numbers */
function LCMCalculator(x, y) { // constructor function
    let checkInt = function(x) { // inner function
        if (x % 1 !== 0)
            throw new TypeError(x + "is not an integer"); // var a =  mouseX

        return x;
    };
    
    this.a = checkInt(x)
    //   semicolons   ^^^^  are optional, a newline is enough
    this.b = checkInt(y);
}
// The prototype of object instances created by a constructor is
// that constructor's "prototype" property.
LCMCalculator.prototype = { // object literal
    constructor: LCMCalculator, // when reassigning a prototype, set the constructor property appropriately
    gcd: function() { // method that calculates the greatest common divisor
        // Euclidean algorithm:
        let a = Math.abs(this.a), b = Math.abs(this.b), t;

        if (a < b) {
            // swap variables
            // t = b; b = a; a = t;
            [a, b] = [b, a]; // swap using destructuring assignment (ES6)
        }

        while (b !== 0) {
            t = b;
            b = a % b;
            a = t;
        }

        // Only need to calculate GCD once, so "redefine" this method.
        // (Actually not redefinition—it's defined on the instance itself,
        // so that this.gcd refers to this "redefinition" instead of LCMCalculator.prototype.gcd.
        // Note that this leads to a wrong result if the LCMCalculator object members "a" and/or "b" are altered afterwards.)
        // Also, 'gcd' === "gcd", this['gcd'] === this.gcd
        this['gcd'] = function() {
            return a;
        };

        return a;
    },

    // Object property names can be specified by strings delimited by double (") or single (') quotes.
    lcm: function() {
        // Variable names do not collide with object properties, e.g., |lcm| is not |this.lcm|.
        // not using |this.a*this.b| to avoid FP precision issues
        let lcm = this.a / this.gcd() * this.b;
        
        // Only need to calculate lcm once, so "redefine" this method.
        this.lcm = function() {
            return lcm;
        };

        return lcm;
    },

    toString: function() {
        return "LCMCalculator: a = " + this.a + ", b = " + this.b;
    }
};

// Define generic output function; this implementation only works for Web browsers
function output(x) {
    document.body.appendChild(document.createTextNode(x));
    document.body.appendChild(document.createElement('br'));
}

// Note: Array's map() and forEach() are defined in JavaScript 1.6.
// They are used here to demonstrate JavaScript's inherent functional nature.
[
    [25, 55],
    [21, 56],
    [22, 58],
    [28, 56]
].map(function(pair) { // array literal + mapping function
    return new LCMCalculator(pair[0], pair[1]);
}).sort((a, b) => a.lcm() - b.lcm()) // sort with this comparative function; => is a shorthand form of a function, called "arrow function"
    .forEach(printResult);

function printResult(obj) {
    output(obj + ", gcd = " + obj.gcd() + ", lcm = " + obj.lcm());
}

آشنایی با ECMAScript

جاوا اسکریپت در Ecma International استاندارد شده است. اتحادیه اروپا برای استاندارد سازی سیستم های اطلاعاتی و ارتباطی (ECMA مخفف انجمن سازندگان کامپیوتری اروپا) بود تا یک زبان برنامه نویسی استاندارد مبتنی بر جاوا اسکریپت را ارائه کند. این نسخه استاندارد از جاوا اسکریپت، به نام اکما اسکریپت (ECMAScript)، در تمامی برنامه هایی که از استاندارد پشتیبانی می کنند، یکسان عمل می کند. شرکت ها می توانند از استاندارد زبان باز برای توسعه جاوا اسکریپت خود استفاده کنند. استاندارد اکما اسکریپت در مشخصات ECMA-262 مستند شده است.

ویژگی های اکما اسکریپت مجموعه ای از الزامات برای پیاده سازی اکما اسکریپت است؛ اگر شما می خواهید ویژگی های زبان سازگار با استاندارد را در پیاده سازی اکما اسکریپت یا موتور خود (مانند SpiderMonkey در فایرفاکس یا v8 در Chrome) پیاده سازی کنید، مفید است.

ECMAScript معمولاً برای اسکریپت نویسی سمت کلاینت در شبکه جهانی وب استفاده می شود و به طور فزاینده ای برای نوشتن برنامه ها و خدمات سرور با استفاده از Node.js مورد استفاده قرار می گیرد. زبان ECMAScript شامل ویژگی های ساختاری، پویا، کاربردی و مبتنی بر نمونه های اولیه است. ES6 حالت جدیدی برای تعریف توابع، به اصطلاح "arrow functions" به همراه آورد. در ES5، تابع به صورت زیر تعریف می شود:

var readWikiArticle = function(content) {
    // Read it!
};

در حالی که در ES6، با استفاده از سینتکس جدید arrow function به این صورت است:

var readWikiArticle = (content) => {
    //Read article!
};
نظرتون درباره این نوشته چیه؟ عالیه بد نیست خوب نبود