ببینیم که جاوا اسکریپت چه چیز منحصر به فردی داره!؟

و در نهایت به چه چیزی میتوانیم برسیم و چه فناوری های دیگه ای با اون کار میکنند.

جاوا اسکریپت چیست ؟

جاوا اسکریپت در ابتدا برای ساخت صفحات زنده در وب ایجاد شده که کد ها در این زبان برنامه نویسی را اسکریپت می نامیم. اسکریپت ها رو به درستی در صفحات html مینویسیم و بعد از بارگذاری صفحه به صورت خودکار اجرا میشوند.

اسکریپت ها به صورت متن ساده ارائه و اجرا میشوند و برای اجرا شدن نیاز به آماده سازی و کامپایل ندارند. به همین دلیل است که این زبان تفاوت زیادی با زبان برنامه نویسی جاوا دارد.


چرا جاوا اسکریپت؟

در ابتدا که جاوا اسکریپت ساخته شد با نام LiveScript شناخته میشد. ولی جاوا در اون زمان بسیار محبوب بود. بنابراین تصمیم گرفت که یک زبان جدید به عنوان برادر کوچکتر جاوا اسکریپت به ما کمک کنه.

اما با تکاملش به یک زبان کامل مستقل تبدیل شد که به عنوان ECMAScript شناخته میشه و دیگر هیچ ارتباطی با جاوا ندارد.


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

مرورگر یک موتور جاسازی شده است که گاهی اوقات “JavaScript virtual machine” نامیده می شود.
 
موتور های مختلف دارای تفاوت هایی هستند به طور مثال :
  • V8 – در گوگل کروم و اوپرا.
  • SpiderMonkey – در فایر فاکس.
  • و موتور های دیگری با نام Trident و Chakra برای ورژن های مختلف IE یا ChakraCore برای Microsoft Edge و یا Nitro  و SquirrelFish برای سافاری ….

اصطلاحات بالا رو به خوبی به یاد داشته باشید چون در اکثر مقالات با این اصطلاحات روبه رو می شوید به عنوان مثال یه جایی میخونید که یک ویژگی رو V8 پشتیبانی میکنه که متوجه میشیم که احتمالا در opera و chrome کار میکند.


موتور ها چگونه کار میکنند؟

موتور ها پیچیده هستند اما مبانی ساده ای دارند.

  1. موتور های اسکریپت ها را میخوانند.
  2. سپس اون رو به زبان ماشین تبدیل میکنند.
  3. و سپس ماشین کدها را اجرا میکند.

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


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

جاوا اسکریپت مدرن یک زبان برنامه نویسی امن هست.چون در ابتدا برای مروگر های که نیاز به اون ندارند ایجاد شده بود امکان دسترسی سطح پایین به حافظه و cpu را نمیدهد.

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

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

به عنوان مثال در جاوا اسکریپت مرورگر قادر به انجام کارهای زیر هست :

  • اضافه کردن html به صفحه تغییر محتوای موجود و تغییر style ها
  • واکنش نشان دادن به عمل های کاربر ،کلیک موس یا حرکت نشانه گر یا فشار کلید
  • ارسال درخواست از طریق شبکه به سرور های راه دور ، دانلود و آپلود فایل به صورت اجاکس وتکنولوژی Comet.
  • دریافت و تنظیم کوکی ، پرسیدن سوال از بازدید کننده  نمایش پیام
  • یادآوری داده ها در سمت کلاینت : (“local storage”)

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

توانایی های جاوا اسکریپت در مرورگر به خاطر ایمنی کاربر محدود شده است. هدف این است که از یک صفحه وب مخرب برای دسترسی به اطلاعات خصوصی یا آسیب رساندن به اطلاعات کاربر جلوگیری شود.
نمونه از ای محدودیت ها به شرح زیر است :
  • در محیط وب دسترسی به خواندن و نوشتن مستقیم به فایل ها را ندارد. به صورت مستقیم به توابع سیستم عامل دسترسی ندارد.
    مرورگر های مدرن اجازه کار با فایل ها را میدهند اما به صورت محدود شده و فقط کاربر اقدام خاصی مانند حذف در یک مروگر یا انتخاب از طریق تگ input انجام دهد فراهم شده است.
    راه های زیادی برای تعامل با دوربین/وبکم یا دیگر وسیله ها وجود دارد اماهمه اینها به دسترسی واضح کاربر دارد.بنابراین یک صفحه فعال جاوا اسکریپت ممکن است ذاتا دوربین وب را فعال نکنند، محیط اطراف را مشاهده کرده و اطلاعات را به NSA ارسال کنند.
  • عموما تب ها/پنجره ها هیچ ارتباطی با هم ندارند و هیچ چیزی از همدیگر نمیدانند.بعضی مواقع از یک پنجره برای باز شدن پنجره دیگری هم استفاده میشود اما در این مورد هم اگر از سایت های مختلفی(ٰاز دامنه، پروتکل یا پورت دیگر) باشند ممکن هست که هیچ ارتباطی با همدیگر نداشته باشند.
    که Same Origin Policy نامیده می شود.برای اینکار باید در هر دو طرف اسکریپت ها جوری باشند که به توافق رسیده باشندو کد جاوا اسکریپت خاصی باشند که اونو مدیریت کنند. 
    خیالتون راحت باشه در ادامه این آموزش رو پوشش میدیم.
    این محدودیت ها برای امنیست کاربرا است . یک صفحه https://learncoding.ir که کاربر باز کرده نباید به صفحه https://mail.google.com دسترسی داشته باشه و اطلاعاتش رو برداره.
  • جاوا اسکریپت میتونه به سادگی از طریق شبکه به  سروری که از اونجا به صفحه فعلی آمده ارتباط برقرار کنید.اما این امکانی هست برای دریافت داده ها . اگر چه ممکن است نیاز به دسترسی سریح از راه دور داشته باشد. دوباره  اینجا یک محدودیت امنیتی هست.

چنین محدودیت هایی وجود ندارد اگر جاوا اسکریپت در خارج از مرورگر  به عنوان مثال در یک سرور استفاده می شود. مرورگرهای مدرن همچنین اجازه می دهد پلاگین/پسوند هایی که ممکن است برای مجوز های گسترده درخواست کنند.

 

چه چیزی جاوا اسکریپت رو منحصر به فرد میکنه؟

سه چیز خوب در مورد جاوا اسکریپت وجود دارد.


  • یکپارچگی کامل با Html و Css
  • چیز های ساده به سادگی انجام میشوند.
  • به طور پیش فرض پشتیبانی توسط تمام مرورگرهای اصلی فعال شده است.

جاوا اسکریپت تنها تکنولوژی مرورگری است که این سه مورد فوق رو ترکیب میکند.

این چیزی هست که جاوا اسکریپت رو منحصر به فرد میکند. به همین دلیل است که متداول ترین ابزار برای ایجاد رابط کاربری مرورگر است.

درحالی که برنامه ریزی کردن برای یادگیری تکنولوژی جدید بهتره که دیدگاه ها رو بررسی کنیم. بذارید بریم سمت روند های جدیدی از جمله زبان جدید و توانایی های مروگر که تاثیر گذارند.

زبان های مافوق(over) جاوا اسکریپت

syntax جاوا اسکریپت با نیازی های هر فرد متناسب نیست. 

افراد مختلف می خواهند ویژگی های مختلفی داشته باشند. و انتظار میرود که پروژه ها و نیازمندی های برای هر فردی متفاوت باشد.
از همین ر زبان های جدیدی ظاهر شدن که قبل از اجرا در مرورگر به جاوا اسکریپت تبدیل میشوند.
ابزار های جدید انتقال(تبدیل) بسیار سریع و شفاف عملا به توسعه دهنده ها اجازه میدهند که با زبان دیگری کد نویسی کنید و به صورت خودکار به جاوا اسکریپت تبدیل شوند.
 
چند نمونه از این زبان ها:
  • CoffeeScript یک ‘syntactic sugar'(میخواد بگه که نحو شرینی داره) برای جاوا اسکریپت هست.دستورات کوتاهتر رو معرفی میکنه که کد ها رو به صورت شفاف و دقیق بنویسیم. معمولا روبی این کار رو انجام میده.
  • typescript متمرکز شده روی اضافه کردن ‘strict data typing’ تا توسعه و پشتیبانی از سیستم های پیچیده را ساده کند. که توسط مایکرو سافت توسعه یافده شده است.
  • Dart یک زبان مستقل هست که موتور خود را دارد و در محیط های غیر مرورگر اجرا میشود(مانند موبایل). ابتدا گوگل برای جایگزین کردن با جاوا اسکریپت ارائه شد. باتوجه به نیاز مروگر ها باید به زبان جاوا اسکریپت تبدیل شوند.

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

خلاصه

  • جاوا اسکریپت در ابتدا به عنوان یک زبان مرورگر ایجاد شد. اما حالا در بسیاری از محیط های دیگر به خوبی استفاده میشه.
  • امروزه جاوا اسکریپت به موقعیت منحصر به فردی رسیده و به عنوان زبان مرورگر به طور گسترده با یکپارچگی کامل html/css  پذیرفته شده است.
  • زبان های بسیاری هستند که به زبان جاوا اسکریپت تبدیل میشوند و ویژگی های خاصی رو ارائه میدهند. توصیه شده که پس از تسلط به جاوا اسکریپت حداقل به طور خلاصه بهشون یه نگاه بکنید.
 

منبع : http://javascript.info

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *