Skip to content

Commit 934b5cb

Browse files
committed
fix: introduction to js
1 parent 354645e commit 934b5cb

1 file changed

Lines changed: 22 additions & 22 deletions

File tree

1-js/01-getting-started/1-intro/article.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,38 @@
1-
# در آمدی بر جاوااسکریپت
1+
# مقدمه‌ای بر جاوااسکریپت
22

33
در اینجا به قابلیت‌های جاوااسکریپت، اینکه به واسطه آن چه کارهایی می‌توان انجام داد و چه تکنولوژی‌هایی با آن به خوبی کار می‌کنند، نگاهی می‌اندازیم.
44

55
## جاوااسکریپت چیست
66

7-
جاوااسکریپت در ابتدا به منظور **زنده کردن صفحات وب** ساخته شد.
7+
جاوااسکریپت در ابتدا به منظور **جان دادن به صفحات وب** ساخته شد.
88

9-
برنامه‌هایی که در این زبان نوشته می‌شوند را اصطلاحا **اسکریپت** می‌نامند، که می‌توان آن را مستقیما در یک سند HTML نوشت و به صورت خودکار با بارگذاری صفحه، اجرا می‌شوند.
9+
برنامه‌هایی که در این زبان نوشته می‌شوند را اصطلاحا **اسکریپت (script)** می‌نامند، که می‌توان آن را مستقیما در یک سند HTML نوشت و به صورت خودکار با بارگذاری صفحه، اجرا می‌شوند.
1010

11-
**اِسکریپت‌ها** نیازی به آماده‌سازی (Compilation) ندارند و فقط کافیست آنها را به صورت متنی در یک فایل (Plain Text) بنویسیم.
11+
**اِسکریپت‌ها** نیازی به Compilation ندارند و فقط کافیست آن‌ها را به صورت متنی در یک فایل (Plain Text) بنویسیم.
1212

13-
از این نظر جاوااسکریپت تفاوت زیادی با زبان [جاوا](https://en.wikipedia.org/wiki/Java_(programming_language)) دارد .
13+
از این نظر جاوااسکریپت تفاوت زیادی با زبان [جاوا](https://en.wikipedia.org/wiki/Java_(programming_language)) دارد.
1414

1515
```smart header="چرا به آن <u>جاوا</u>اسکریپت می‌گویند؟"
16-
جاوااسکریپت در زمان تولد، «LiveScript» نامیده می‌شد. اما در آن زمان زبانی به نام [جاوا](https://fa.wikipedia.org/wiki/جاوا) محبوبیت فراوانی داشت، به همین منظور تصمیم بر آن شد تا برای آن (جاوا) برادری جوان‌تر قرار دهند.
16+
جاوااسکریپت در زمان تولد، «LiveScript» نامیده می‌شد. اما در آن زمان زبانی به نام [جاوا](https://fa.wikipedia.org/wiki/جاوا) محبوبیت فراوانی داشت، به همین منظور تصمیم بر آن شد تا برای جاوا برادری جوان‌تر قرار دهند.
1717
1818
اما با توسعه روز افزون جاوااسکریپت، این زبان کاملا مستقل، و دارای استانداری به نام [اِکمااسکریپت (EcmaScript)](https://fa.wikipedia.org/wiki/اکما_اسکریپت) شد و اکنون هیچ ارتباطی با زبان جاوا ندارد.
1919
```
2020

2121
در حال حاضر جاوااسکریپت نه تنها در مرورگرهای وب، بلکه در سمت سِرور هم قابلیت اجرایی دارد. عملا در هر محیطی که [موتور جاوااسکریپت](https://fa.wikipedia.org/wiki/موتور_جاوااسکریپت) وجود داشته باشد، این زبان قابلیت اجرا شدن را داراست.
2222

23-
مرورگرهای وب دارای موتوری داخلی برای اجرای جاوااسکریپت هستند، که گاهی آن را **ماشین مجازی جاوااسکریپت** نیز می‌نامند.
23+
مرورگرهای وب دارای موتوری داخلی برای اجرای جاوااسکریپت هستند، که گاهی آن را **ماشین مجازی جاوااسکریپت (JavaScript virtual machine)** نیز می‌نامند.
2424

25-
موتورهای مختلف دارای «اسم رمز» خاص خود هستند، برای نمونه :
25+
موتورهای مختلف دارای «codenameهای» خاص خود هستند، برای نمونه :
2626

2727
- [V8](https://fa.wikipedia.org/wiki/%D9%88%DB%8C%DB%B8_(%D9%85%D9%88%D8%AA%D9%88%D8%B1_%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA)) برای مرورگرهای کروم، اُپِرا و Edge.
28-
- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) برای مرورگر فایرفاکس
29-
- اسم رمزهای دیگری چون «Chakra» برای نسخه‌های مختلف IE، «JavaScriptCore»، «Nitro» و «SquireFish» برای مرورگر سافاری وجود دارند.
28+
- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) برای مرورگر فایرفاکس
29+
- codenameهای دیگری چون «Chakra» برای نسخه‌های مختلف IE، «JavaScriptCore»، «Nitro» و «SquireFish» برای مرورگر سافاری وجود دارند.
3030

31-
بخاطر سپردن این نام‌ها مفید هستند، چراکه در مقالات مختلف توسعه دهندگان به آنها بر خواهید خورد. ما هم از آنها استفاده خواهیم کرد. زمانی که ما در این آموزش برای نمونه می‌گوییم ویژگی X توسط موتور «V8» پشتیبانی می‌شود، یعنی به احتمال زیاد در مرورگرهای کروم و اپرا پشتیبانی خواهد شد.
31+
بخاطر سپردن این نام‌ها مفید هستند، چراکه در مقالات مختلف توسعه‌دهندگان به آن‌ها بر خواهید خورد. ما هم از آن‌ها استفاده خواهیم کرد. زمانی که ما در این آموزش برای نمونه می‌گوییم ویژگی X توسط موتور «V8» پشتیبانی می‌شود، یعنی به احتمال زیاد در مرورگرهای کروم و اپرا پشتیبانی خواهد شد.
3232

3333
```smart header="موتورها چگونه کار می‌کنند؟"
3434
35-
موتورها پیچیده هستند، ولی اساس آنها ساده است.
35+
موتورها پیچیده هستند، ولی اساس آن‌ها ساده است.
3636
3737
۱. موتور (اگر مرورگر باشد، تعبیه شده است) اِسکریپت را می‌خواند (Parse).
3838
۲. سپس اسکریپت را به زبان ماشین ترجمه می‌کند (Compile).
@@ -41,8 +41,8 @@
4141
موتور در تمام مراحل پردازش عملیات بهینه‌سازی را انجام می‌دهد. حتی به اِسکریپت‌ ترجمه شده توجه می‌کند و اطلاعاتی که در این بین رد و بدل می‌شود را بررسی می‌کند و در این مرحله هم روی ‌کدهای ماشین عملیات بهینه‌سازی را انجام می‌دهد تا سرعت اجرای اِسکریپت‌ها بالا رود.
4242
```
4343

44-
## جاوااسکریپت در مرورگر چه توانایی‌هایی دارد؟
45-
44+
## جاوااسکریپت در مرورگر چه توانایی‌هایی دارد؟
45+
4646
جاوااسکریپت مدرن یک زبان برنامه‌نویسی «امن» است. این زبان اجازه دسترسی در سطوح پایین مانند دسترسی به حافظه (Memory) و پردازنده (CPU) را نمی‌دهد، چراکه از ابتدا برای مرورگرها (که نیازی به این موراد ندارند) ساخته شده بود.
4747

4848
قابلیت‌های جاوااسکریپت کاملا به محیطی که در آن اجرا می‌شود بستگی دارد. برای نمونه با جاوااسکریپت در [Node.JS](https://fa.wikipedia.org/wiki/%D9%86%D9%88%D8%AF_%D8%AC%DB%8C%E2%80%8C%D8%A7%D8%B3) می‌توان عملیات خواندن و نوشتن (Read/Write) روی فایل‌ها را انجام داد، و یا در شبکه درخواست‌هایی ارسال و دریافت کرد، و دیگر موارد.
@@ -68,7 +68,7 @@
6868
مرورگرهای مدرن اجازه کار کردن با فایل‌ها را می‌دهند اما دسترسی محدود است و فقط اگر کاربر کارهای مشخصی را انجام دهد مجاز هستند مانند «drop» کردن یک فایل درون یک پنجره مرورگر یا انتخاب کردن آن فایل توسط یک تگ `<input>`.
6969

7070
همچنین راه‌هایی برای تعامل با دوربین، میکروفون و دیگر دستگاه‌ها وجود دارد، اما استفاده از چنین مواردی به اجازه صریح از طرف کاربر نیاز دارد و یک صفحه جاوااسکریپت دار نمی‌تواند به صورت پنهانی دوربین را روشن کند اطلاعات اطرافش را جمع آوری کند و به [NSA](https://en.wikipedia.org/wiki/National_Security_Agency) یا سایر نهادهای اطلاعاتی ارسال کند.
71-
- تب‌ها و پنجره‌ها بطور کلی در مورد یکدیگر چیزی نمی‌دانند. اما درشرایطی هم می‌دانند، بطور نمونه زمانی که یک پنجره برای باز نمودن پنجره دیگر از جاوااسکریپت استفاده می‌کند. اما حتی در این حالت هم ممکن است جاوااسکریپت به صفحات دیگر دسترسی نداشته باشد (اگر صفحات مذکور از دامنه، پروتکل یا پورت دیگری باشند).
71+
- تب‌ها (tab) و پنجره‌ها بطور کلی در مورد یکدیگر چیزی نمی‌دانند. اما درشرایطی هم می‌دانند، بطور نمونه زمانی که یک پنجره برای باز نمودن پنجره دیگر از جاوااسکریپت استفاده می‌کند. اما حتی در این حالت هم ممکن است جاوااسکریپت به صفحات دیگر دسترسی نداشته باشد (اگر صفحات مذکور از دامنه، پروتکل یا پورت دیگری باشند).
7272

7373
به این موضوع Same Origin Policy گفته می‌شود. برای آنکه بتوان در این حالت کار کرد هر دو صفحه باید یک کد جاوااسکریپت مخصوصی داشته باشند تا بتوان این تبادل اطلاعات را انجام داد.
7474

@@ -77,7 +77,7 @@
7777

7878
![](limitations.svg)
7979

80-
اگر جاوااسکریپت در محیطی خارج از مرورگرها اجرا می‌شد (برای نمونه در سِروِرها) ، این محدودیت‌ها محدودیت‌ها وجود نداشتند. همینطور پلاگین‌ها مختلف ممکن است برای انجام کارهای مختلف پلاگین‌ها و افزونه‌هایی را نصب کنند که سطح دسترسی‌شان را افزایش می‌دهد.
80+
اگر جاوااسکریپت در محیطی خارج از مرورگرها اجرا می‌شد (برای نمونه در سِروِرها) ، این محدودیت‌ها وجود نداشتند. همینطور پلاگین‌های مختلف (plugin) ممکن است برای انجام کارهای مختلف پلاگین‌ها و افزونه‌هایی (extension) را نصب کنند که سطح دسترسی‌شان را افزایش می‌دهد.
8181

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

@@ -98,19 +98,19 @@
9898

9999
سینتَکس (Syntax) جاوااسکریپت مورد نیاز هر کسی نیست و اشخاص مختلف به قابلیت‌های متفاوتی نیاز دارند.
100100

101-
این چیزی است که توقع می‌رود چراکه پروژه‌ها و نیازمندی‌ها برای هر شخص متفاوت است.
101+
این موضوع قابل انتظار است چراکه پروژه‌ها و نیازمندی‌ها برای هر شخص متفاوت است.
102102

103-
اخیرا تعداد زیادی زبان بوجود آمده‌اند که پیش از آنکه در مرورگر اجرا شوند به جاوااسکریپت *تبدیل* (Transpile) می‌شوند.
103+
اخیرا تعداد زیادی زبان بوجود آمده‌اند که پیش از آنکه در مرورگر اجرا شوند به جاوااسکریپت *transpile (تبدیل)* می‌شوند.
104104

105-
ابزارهای مدرن فرایند تبدیل را بسیار سریع و پنهانی می‌کنند و به توسعه‌دهندگان اجازه می‌دهند که به زبانی دیگر کد بنویسند و «پشت پرده» آن را به طور خودکار تبدیل می‌کنند.
105+
ابزارهای مدرن فرایند transpile را بسیار سریع و پنهانی می‌کنند و به توسعه‌دهندگان اجازه می‌دهند که به زبانی دیگر کد بنویسند و «پشت پرده» آن را به طور خودکار تبدیل می‌کنند.
106106

107107
نمونه‌هایی از این زبان‌ها :
108108

109109
- [CoffeeScript](http://coffeescript.org/) : که سینتکس کوتاه‌تری را ارائه می‌کند و قابلیت نوشتن کدهایی تمیز و دقیق را بوجود می‌آورد.که معمولا توسعه دهندگان زبان روبی به آن علاقه مند هستند.
110-
- [TypeScript](http://www.typescriptlang.org/) : که تمرکز اصلی خود را بر اضافه نمودن DataType ها قرار داده تا فرایند توسعه ساده‌تر شود و نرم‌افزار نهایی قابلیت‌های پیچیده‌تری را به اجرا در آورد. این زبان توسط مایکروسافت توسعه داده شده است.
111-
- [Flow](http://flow.org/) هم به شیوه دیگری DataType اضافه می کند. و توسط فیس بوک توسعه داده شده است.
110+
- [TypeScript](http://www.typescriptlang.org/) : که تمرکز اصلی خود را بر اضافه نمودن «strict data typing» قرار داده تا فرایند توسعه ساده‌تر شود و نرم‌افزار نهایی قابلیت‌های پیچیده‌تری را به اجرا در آورد. این زبان توسط مایکروسافت توسعه داده شده است.
111+
- [Flow](http://flow.org/) هم به شیوه دیگری data typing را اضافه می کند. و توسط فیس بوک توسعه داده شده است.
112112
- [Dart](https://www.dartlang.org/) : که زبانی مستقل با موتور مربوط به خود بوده و در محیط‌های غیر مرورگری (مانند نرم‌افزارهای موبایل) کار می‌کند. این زبان در ابتدا توسط گوگل معرفی شد تا جایگزینی برای جاوااسکریپت باشد.
113-
- [Brython](https://brython.info/) یک ترانسپایلر پایتون به جاوااسکریپت است که توسعه دهندگان را قادر می سازد برنامه هایی به زبان پایتون خالص بدون جاوااسکریپت بنویسند.
113+
- [Brython](https://brython.info/) یک transpiler پایتون به جاوااسکریپت است که توسعه دهندگان را قادر می سازد برنامه هایی به زبان پایتون خالص بدون جاوااسکریپت بنویسند.
114114
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) یک زبان برنامه‌نویسی مدرن، کوتاه و امن است که می‌تواند مرورگر یا Node را مورد هدف قرار دهد.
115115

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

0 commit comments

Comments
 (0)