اول از همه باید ببینیم چه چیزی جاوااسکریپت رو بسیار خاص کرده و چه چیزی رو باهاش به دست میاریم و چه فناوری هایی از جاوااسکریپت استفاده میکنن
جاوا اسکریپت در ابتدا برای “زنده کردن صفحات وب” ایجاد شد و ما ، به برنامه های تولید شده با این زبان اسکریپت (script)میگیم.
این اسکریپت ها رو میشه مستقیما توی HTML یک صفحه وب نوشت و با بارگذاری صفحه به طور خودکار اجرا میشن.
اسکریپت ها در حین ارائه ، اجرا می شن .پس نیازی به آماده سازی و کامپایل قبلی خاصی ندارند. به خاطر همینه که جاوااسکریپت با جاوا خیلی متفاوته.
حالا چرا بهش میگن جاوااسکریپت؟ ?
زمانی که جاوا اسکریپت ایجاد شد، بهش میگفتن: "LiveScript". اما جاوا توی اون دوران خیلی محبوب بود،پس تصمیم گرفتن از لفظ "برادر کوچکتر" استفاده کنن تاکه از اسم جاوا برای معرفی خودشون کمک بگیرن.اما روز به روز که جاوا اسکریپت تکامل پیدا کرد، به یک زبان کاملاً مستقل با مشخصات خاص خودش به نام ECMAScript تبدیل شد و حالا اصلاً ارتباطی با جاوا نداره.
الان جاوا اسکریپت می تونه نه تنها توی مرورگر، بلکه توی سرور یا در واقع روی هر دستگاهی که دارای برنامه خاصی به نام موتور جاوا اسکریپت باشه، اجرا بشه.
مرورگرها خودشون دارای یک موتور جاسازی شده هستن که اغلب بهشون "ماشین مجازی جاوا اسکریپت" میگیم.
موتورهای مختلف اسم های (codenames) متفاوتی دارن. مثلا:
اصطلاحات بالا رو سعی کنید یادتون باشه چون داخل خیلی از مقاله ها استفاده می شن. ما هم استفاده خواهیم کرد . برای مثال، اگر «ویژگی X توسط V8 پشتیبانی بشه»، احتمالاً در Chrome، Opera و Edge کار میکنه.
موتورها چیکار میکنن؟ ?
به طور کلی موتورها ساختار پیچیده ای دارن. اما اصول اولیه اون ها ساده و قابل درکه
1 -موتور اسکریپت رو می خونه ("تجزیه می کنه").
2 - بعدش اسکریپت رو به زبان ماشین تبدیل می کنه ("کامپایل") می کنه.
3 -و در آخر، کد توسط ماشین خیلی سریع اجرا می شه.
موتور توی هر کدوم از این مرحله ها ،بهینه سازی ها رو اعمال می کنه. حتی اسکریپت کامپایل شده رو هم در حین اجرا تماشا میکنه، دادههایی که جریان پیدا میکنند رو تجزیه و تحلیل میکنه و کد ماشین رو بر اساس اونا بهینهسازی میکنه.
جاوا اسکریپت مدرن یه زبان برنامه نویسی "ایمن" هستش. دسترسی سطح پایین به حافظه یا CPU رو فراهم نمی کنه، چون از اول برای مرورگرهایی که به این ویژگی ها نیاز نداشتن ایجاد شد.
دسترسی های جاوا اسکریپت تا حد زیادی به محیطی که توی اون اجرا میشه بستگی داره. برای مثال، Node.js از یه سری توابعی پشتیبانی میکنه که به جاوا اسکریپت اجازه خوندن/نوشتن فایلهای دلخواه، انجام درخواستهای شبکه ای و ... رو میده.
جاوا اسکریپت درون_مرورگری می تونه همه کارهای مربوط به دستکاری صفحه وب، تعامل با کاربر و وب سرور رو انجام بده.
به عنوان مثال میتونه:
دسترسی ها و توانایی های جاوا اسکریپت داخل مرورگر به خاطر ایمنی کاربر محدود شده. هدف اینه که از دسترسی یک صفحه وب شرور به اطلاعات خصوصی یا آسیب رسوندن به داده های کاربر جلوگیری بشه.
نمونه هایی از این محدودیت ها عبارتند از:
مرورگرهای مدرن به این جاوااسکریپت اجازه میدن با فایلها کار کنه، اما همچنان دسترسی محدود هستش
و تنها در صورتی این اتفاق میوفته که کاربر اقدامات خاصی رو انجام بده، مثلا "انداختن" یک فایل در پنجره
مرورگر یا انتخاب اون از طریق تگ <input>.
راههایی هم برای تعامل با دوربین/میکروفون و سایر دستگاهها وجود داره، اما اونها هم به اجازه صریح کاربر
نیاز دارن. بنابراین یک صفحه دارای جاوا اسکریپت نمیتونه یواشکی دوربین وب رو فعال کنه، محیط اطراف
رو مشاهده کنه و اطلاعات رو ارسال کنه به F.₳.T.Ã ?
به این "Same Origin Policy" می گن. برای حل این مشکل، هر دو صفحه باید برای تبادل داده توافق کنن و
این کار رو هم یک کد جاوا اسکریپت خاصی انجام و مدیریت میکنه. که بعدا در رابطه باهاش حتما مقاله
های جدایی میزارم.
این محدودیت -مجدداً میگم - برای ایمنی کاربر هستش. صفحه ای مانند .http://virgool.io که کاربر بازش
کرده نباید به برگه مرورگر دیگه ای با آدرس http://google.com دسترسی داشته باشه و اطلاعات را از اونجا
بدزده.?
اگر جاوا اسکریپت خارج از مرورگر، به عنوان مثال روی یک سرور، اجرا بشه، چنین محدودیت هایی رو هم نداره. حتی مرورگرهای مدرن هم، با پلاگین ها و یا افزونه هایی اجازه پیدا میکنند که مجوزهایی رو درخواست کنند.
حداقل سه تا چیز عالی در مورد جاوا اسکریپت وجود داره:
جاوا اسکریپت تنها فناوری مبتنی بر مرورگر هستش که این سه مورد راو با هم ترکیب کرده.?
این چیزیه که جاوا اسکریپت رو منحصر به فرد می کنه. به همین دلیل هم، گسترده ترین ابزار برای ایجاد رابط های مرورگر هستش. جاوا اسکریپت همچنین امکان ایجاد کردن سرور، برنامه های کاربردی موبایل و غیره رو هم فراهم می کنه.
سینتکس جاوا اسکریپت با نیازهای همه سازگار نیست. افراد مختلف ویژگی های متفاوتی می خوان.
این قابل درک هستش، چون که پروژه ها و الزامات برای همه متفاوته.
بنابراین اخیراً تعداد زیادی از زبانهای جدید ظاهر شده که قبل از اجرا در مرورگر، اول به جاوا اسکریپت تبدیل (converted) میشن.
در واقع به توسعه دهنده ها این امکان رو می دن که با زبان دیگه ای کدنویسی کنن و اونو به صورت خودکار به جاوااسکریپت تبدیل کنند.
نمونه هایی از این زبان ها:
جاوا اسکریپت در ابتدا به عنوان یک زبان فقط برای مرورگر ایجاد شد، اما حالا روی بسیاری از محیط های دیگه هم استفاده می شه.
جاوا اسکریپت به عنوان پرکاربردترین زبان مرورگر هستش که به طور کامل با HTML/CSS ادغام شده و موقعیت منحصر به فردی داره.
زبانهای زیادی وجود داره که به جاوا اسکریپت تبدیل (transpiled) میشن و ویژگیهای خاصی رو هم ارائه میکنن. توصیه می شه پس از تسلط بر جاوا اسکریپت، حداقل به طور خلاصه نگاهی به اونها هم بیندازید.
خیلی ممنون که تا اینجا اومدی و سعی کردی یه آشنایی اولیه از جاوااسکریپت به دست بیاری
اگه چیزی بود که من اشتباه متوجه شدم حتما بهم بگو تا کنار هم یاد بگیریم ?
منبع :javascript.info