بیاید بررسی کنیم که چه قابلیتهایی در جاوا اسکریپت، این زبان رو در این حد خاص کرده، چطوری میشه به این قابلیتها دست پیدا کرد و چه تکنولوژیهای دیگهای هستن که با جاوا اسکریپت همخوانی دارن؟ در این آموزش رایگان جاوا اسکریپت همراه ما باشید.
آنچه که در این مقاله خواهید خواند:
جاوا اسکریپت چیست؟
در اصل جاوا اسکریپت برای زنده کردن صفحات وب ساخته شده.
به برنامههایی که به این زبان نوشته میشن میگیم اسکریپت. این برنامهها بهصورت مستقیم در HTML یک صفحه سایت نوشته میشن و زمان لود شدن صفحه به صورت خودکار اجرا میشن.
اسکریپتها بهعنوان یک متن ساده، آماده و اجرا میشن و برای اجرا نیاز خاصی به آمادهسازی یا کامپایل کردن ندارند.
از این لحاظ، جاوا اسکریپت بسیار با زبان جاوا فرق داره.
چرا جاوا اسکریپت به این نام خوانده میشود؟
وقتی برای اولین بار این زبان ایجاد شد، اسمش یک چیز دیگه بود: «LiveScript» اما چون در اون زمان جاوا بسیار محبوب بود، تصمیم گرفتن این زبان رو بهعنوان برادر کوچکتر جاوا معرفی کنن.
امروز، جاوا اسکریپت نه فقط در مرورگرها، که روی سرورها و به طور دقیقتر روی هر دستگاهی که برنامهای به نام JavaScript engine داشته باشه کار میکنه.
مرورگرها، موتوری جاسازی شده توی خودشون دارن که اسمش «ماشین مجازی جاوا اسکریپت» هست. برای آشنا شدن با این موتور ها در این آموزش رایگان جاوا اسکریپت همراه ما باشید.
هر موتور برای خودش یک «نام کد» داره. مثلاً:
- V8 – در کروم و opera
- SpiderMonkey – در فایرفاکس
- نام کدهای دیگری همانند «Trident» و «Chakra» برای نسخههای متفاوت IE
- «ChakraCore» برای Microsoft Edge
- « Nitro » و «SquirrelFish» برای سافاری
- و …
بهتره که اصطلاحات بالا رو خوب یادمون بمونه چون توی مقالههای موجود در اینترنت برای آموزش برنامهنویسی هست، خیلی استفاده میشوند. ما هم در مقالههای آموزش جاوا اسکریپت از این اصطلاحات استفاده میکنیم. مثلاً اگه بگیم «قابلیت X در V8 پشتیبانی میشود.» پس احتمالاً منظورمون اینه که این قابلیت در کروم و اُپرا کار میکند.
طرز کار موتورها چگونه است؟
کار موتورها پیچیده است ولی از اصول سادهای رو دنبال میکنه:
- موتورها (در صورت مرورگر بودن، موتورهای جاسازی شده) اسکریپتها رو میخونن (parse).
- بعد اون رو به زبان ماشین ترجمه (کامپایل) میکنن.ب
- بعد کد ماشین( کد ترجمه شده به زبان ماشین) با سرعت زیاد اجرا میشه.
در هر مرحله ازین فرایند، موتور بهینهسازیهای لازم رو انجام میده: روی اجرای کد کامپایل شده نظارت میکنه؛ دادههایی که درون کدها جریان دارن رو آنالیز میکنه و در آخر کد ماشین رو مبنی بر دانش بهدستآمده بهینه میکنه.
جاوا اسکریپت در مرورگر چه کاری انجام میدهد؟
جاوا اسکریپت مدرن، یه زبان امنه. ازونجا که برای مرورگرها ساخته شده، نیازی به فراهمکردن سطح دسترسی پایین به حافظه و CPU نداره.
قابلیتهای جاوا اسکریپت بهشدت به محیطی بستگی داره که در اون اجرا میشه. مثلا Node.js از توابعی پشتیبانی میکنه که به جاوا اسکریپت اجازه میده فایلهای دلخواهش رو بخونه یا بنویسه، درخواستهای شبکه رو اجرا کنه و غیره.
جاوا اسکریپت در مرورگر میتونه هر کاری که مرتبط با دستکاری صفحات وب باشه، انجام بده و با کاربر و وب سرور در تعامل باشه.
برای مثال جاوا اسکریپت توی مرورگرها میتونه کارهای زیر رو انجام بده:
- اضافه کردن HTML جدید؛ تغییر محتوای فعلی؛ اضافه کردن استایل
- واکنش نشان دادن به رفتار کاربر؛ اجرا شدن با کلیک موس، حرکت اشاره گر و فشردن دکمه
- ارسال درخواست از طریق شبکه برای سرورهای راه دور؛ دانلود و آپلود فایلها (همچنین فراخوانی تکنولوژیهای AJAX و COMET)
- دریافت و تنظیم کوکیها، سؤال پرسیدن از بازدیدکنندگان، نمایش پیامها
- به خاطر سپردن دادهها در سمت کلاینت (حافظه محلی)
جاوا اسکریپت در مرورگر چه کارهایی را نمیتواند انجام دهد؟
تواناییهای جاوا اسکریپت توی مرورگرها به خاطر امنیت کاربر، محدود شده. هدف این کار این بوده که از دسترسی سایتهای مخرب به اطلاعات خصوصی کاربر و آسیبزدن به اونها جلوگیری بشه.
این محدودیتها شامل این موارد میشه:
الف) ممکنه جاوا اسکریپت در یک صفحه سایت نتونه فایلهایی که میخواد رو که روی هارد دیسک است بخونه یا بنویسه؛ نتونه اونها رو کپی یا اجرا کنه؛ در کل هیچ دسترسی به توابع سیستمعاملی نداشته باشه.
مرورگرهای مدرن به جاوا اسکریپت اجازه کار با فایلها رو میدن اما این دسترسی محدوده و فقط وقتی این اجازه رو دارن که کاربر یکسری اقدامات خاص انجام بده. مثلاً وقتی یک فایل رو به داخل مرورگر بندازه(dropping) یا فایل رو به وسیله یک تگ <input> انتخابش کنه.
شیوههای زیادی برای تعامل با دوربین، میکروفن یا دستگاههای جانبی دیگه وجود داره اما برای همه اونها نیاز هست که کاربر واضح و صریح اول اجازه اش رو بده؛ پس صفحات جاوا اسکریپتی احتمالاً نمیتونن دزدکی دوربین رو روشن کنن، نگاهی به اطراف شما بیندازن و اطلاعاتتون رو برای NSA (آژانس امنیت ملی) بفرستن
ب) تبها یا پنجرههای متفاوت، معمولاً از همدیگه خبر ندارن، بهجز در بعضی مواقع مثل وقتیکه یکی از پنجرهها برای باز شدن یک پنجره دیگه، از جاوا اسکریپت استفاده میکنه. حتی در این مورد هم جاوا اسکریپت یک صفحه، به صفحه دیگه اگه جای دیگه اومده باشه (با دامنه، پروتکل و یا پورت متفاوت) دسترسی نداره.
به این موضوع، «سیاست همان مبدأ» (Same Origin Policy) SOP میگیم. یعنی هر دو صفحه باید با تبادل دادهها موافق باشند و حاوی قطعه کدی باشند که این تبادل رو به عهده میگیره. در ادامه این آموزش رایگان جاوا اسکریپت ه این مورد میپردازیم.
این محدودیت باز هم بخاطر امنیت کاربر هست. اگه کاربر صفحه http://anysite.com
رو در یک تب و http://gmail.com
رو توی یه تب دیگه بازکرده باشه، این دو صفحه به هم دسترسی ندارن و نمیتونن دادههای همدیگرو بدزدن.
ج) جاوا اسکریپت میتونه بهراحتی به وسیله اینترنت با سروری که صفحه وبسایت فعلی از اون اومده ارتباط برقرار کنه، اما توانایی دریافت داده از سایتها یا دامنههای دیگه رو نداره. البته این کار با اعلام توافق صریح برای دسترسی (که در هدرهای HTTP در موردش توضیح داده شده) از سمت ریموت ممکنه. یه بار دیگه تاکید میکنیم که این محدودیتها فقط به خاطر امنیت کاربره.
اگه جاوا اسکریپت خارج از مرورگرها کاربرد داشت، مثلاً روی یک سرور، چنین محدودیتهایی دیگه معنی نداشتن. مرورگرهای مدرن امروزه از افزونهها یا پلاگینهایی پشتیبانی میکنن که اونها هم نیاز گرفتن به مجوزهای بیشتری از کاربر داره.
چه چیزی جاوا اسکریپت را بیهمتا می کند؟
حداقل 3 چیز فوقالعاده در مورد جاوا اسکریپت وجود داره:
- ادغام کامل با HTML/CSS
- کارهای ساده بهسادگی انجام میشه.
- توسط همه مرورگرهای پرکاربرد پشتیبانی میشه و بهصورت پیشفرض فعاله.
جاوا اسکریپت تنها تکنولوژی در مرورگرهاست که هر سه تای این ویژگی ها رو باهم داره.
این همون چیزیه که جاوا اسکریپت رو به یه زبان منحصربهفرد تبدیل میکنه، و برای همین هم هست که گستردهترین ابزار برای ایجاد واسطهای مرورگره.
جاوا اسکریپت حتی در ایجاد سرورها، اپلیکیشنهای موبایلی و … هم کاربرد دارد.
زبانهای قابل تبدیل به جاوا اسکریپت
سینتکس زبان جاوا اسکریپت نیاز همه افراد رو جواب نمیده، هر کسی امکانات متفاوتی نیاز داره.
دلیلش هم مشخصه، چون پروژهها و نیازمندیهای هر فردی با یک فرد دیگه فرق داره.
اخیراً زبانهای زیادی به وجود اومدن. زبانهایی که قبل از اجرا در مرورگر، اول به زبان جاوا اسکریپت تبدیل میشن.
ابزارهای مدرن، این تبدیل رو با سرعت و شفافیت بسیار بالا انجام میده و باعث میشه توسعهدهندگان بهراحتی و بهصورت خودکار کدهای زبانهای دیگه رو به جاوا اسکریپت تبدیل کنن.
نمونههایی از این زبانها:
- CoffeeScript: این زبان از نظر سینتکسی قند و نبات جاوا اسکریپت حساب میشه! سینتکس کوتاهتری که این زبان داره باعث میشه کدهای واضحتر و دقیقتری بنویسیم. معمولاً دولوپرهای Ruby این زبان رو دوست دارن.
- TypeScript: بیشتر روی انواع داده دقیق میشه که باعث شده زبان مناسبی برای سیستمهای پیچیده باشه. این زبان توسط مایکروسافت توسعهیافته.
- Flow: نوع داده را هم در نظر میگیره اما با سبکی متفاوت. این زبان توسط فیسبوک توسعهیافته.
- Dart: زبان مستقلیه که موتور مخصوص به خودش رو داره و در محیطهایی بهجز مرورگرها (مثل اپهای موبایل) اجرا میشه. قابلیت تبدیل به جاوا اسکریپت رو داره و توسط گوگل توسعه یافته.
زبانهای دیگه ای هم هست، اما قبل از اینکه قصد استفاده از یکی از اونها رو داشته باشیم، باید اول جاوا اسکریپت بلد باشیم تا بفهمیم داریم چی کار میکنیم!
خلاصه آموزش رایگان جاوا اسکریپت
- اولش جاوا اسکریپت بهعنوان یک زبان مخصوص مرورگرها ایجاد شد اما امروزه در بقیه محیطها هم بهخوبی کار میکنه.
- امروزه، جاوا اسکریپت جایگاه خاصی بهعنوان متداولترین زبان مرورگرها داره و با HTML و CSS هم بهخوبی سازگاره.
- زبانهای زیادی وجود دارن که به جاوا اسکریپت تبدیل میشن و قابلیتهای جدیدی بهش اضافه میکنن. توصیه میکنیم بعد از حرفهای شدن توی جاوا اسکریپت، یه نیمنگاهی هم به اونها بندازین.
اگه تا اینجا سوال یا نظری در رابطه با این مباحث دارید، توی بخش سوالات از ما بپرسید. برای بخش بعدی آموزش رایگان جاوا اسکریپت همراه رستاوا آکادمی باشید.
همه ی اشیا در جاوا اسکریپت دارای prototype هستند که از آن ویژگی هایی رو به ارث می برند. در واقع جاوا اسکریپت با توجه به این نمونه اولیه ویژگی هایی که اشیا بروز ندهند رو پیدا می کنه.
جاوا اسکریپت با توجه به این نمونه اولیه ویژگی هایی که اشیا بروز ندهند رو پیدا می کنه. این کار را براساس زنجیرهای از نمونههای اولیه انجام میدهد و تا زمانی که یک الگوی همخوان نداشته باشد روند را ادامه میدهد در نهایت اگر چنین المانی پیدا نشد یک خطا برگشت داده میشود.
ابزارهای مدرن دسترسیپذیری وب قادر به استفاده و مدیریت جاوااسکریپت و دیگر محتوای پویا هستند. از این تکنولوژی تا زمانی که به عنوان یک تقویت کننده استفاده شود مشکلی وجود ندارد و بسیار مفید نیز است، اما به عنوان یک رویکرد الزامی ممکن است گاهی اوقات با مشکل مواجه شوید.
ES۵ یک خاصیت اختیاری را در جاوااسکریپت ایجاد کرد که strict mode نام دارد. در حالت strict یا سخت گیرانه شما با خطاهای بسیاری مواجه خواهید شد و هدف ساخت کدهای بدون نقص و اشتباه است تا صرفا دریافت نتیجه!
پاسخها
در مجموع جاوا بهتره یا پایتون
کاملاً بستگی به نیاز شما داره. هر کدوم برای منظور های مختلفی مناسب هستند.
برای شروع برنامه نویسی اندروید چه زبانی پیشنهاد می کنید؟
زبان های مختلفی برای شروع برنامه نویسی اندروید می تونند مناسب باشند. اما از بین اونا جاوا، پایتون و کاتلین شاید مناسب ترین ها باشند.
[…] ی برنامه نویس هایی که با جاوا اسکریپت کار کردن اسم ریکت react یا reactJs رو شنیدن. ریکت یه کتابخانه […]