You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/01-getting-started/1-intro/article.md
+47Lines changed: 47 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,16 +42,26 @@ The terms above are good to remember because they are used in developer articles
42
42
43
43
Двигателите са сложни, но основното им е лесно.
44
44
45
+
<<<<<<< HEAD
45
46
1. Двигателят (вграден ако е браузър) чете ("анализира") скрипт-а.
46
47
2. Тогава го конвертира ("компилира") скрипт-а в машинен език.
47
48
3. И след тогава машинния код се изпълнява.
49
+
=======
50
+
1. The engine (embedded if it's a browser) reads ("parses") the script.
51
+
2. Then it converts ("compiles") the script to machine code.
52
+
3. And then the machine code runs, pretty fast.
53
+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
48
54
49
55
Вдигателят прилага оптимизации във всяка стъпка от процеса. Даже гледа компилирания скрипт, което се изпълнява, анализира данните, които протичат през него и прилага оптимазиции на машинния код на база тези данни. Когато всичко е готово скрипт-ът се изпълнява доста бързо.
50
56
```
51
57
52
58
## Какво може JavaScript в браузъра ?
53
59
60
+
<<<<<<< HEAD
54
61
Модерният JavaScript е "безопасен" програмен език. То не предоставя ниско ниво на достъп на паметта и процесора, защото първоначално е създаден за браузърите, които не изискват подобно нещо.
62
+
=======
63
+
Modern JavaScript is a "safe" programming language. It does not provide low-level access to memory or the CPU, because it was initially created for browsers which do not require it.
64
+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
55
65
56
66
Способностите на JavaScript-a силно зависят от средата, която се изпълнява. Например [Node.js](https://wikipedia.org/wiki/Node.js) поддържа функции, които позволяват на JavaScript-а да чете/пише случайни файлове, да изпълнява мрежови заявки и т.н.
57
67
@@ -71,11 +81,15 @@ JavaScript-a в браузъра може да направи всичко от
71
81
72
82
## Какво не може JavaScript-а в браузъра?
73
83
84
+
<<<<<<< HEAD
74
85
<<<<<<< HEAD
75
86
Възможностите на JavaScript-a в браузъра са ограничени заради безопасността на потребителя. Целта е да се предотврати на зловредните страници достъпът на личната информация на потребителите или навреждането на данните на потребителите.
76
87
=======
77
88
JavaScript's abilities in the browser are limited for the sake of a user's safety. The aim is to prevent an evil webpage from accessing private information or harming the user's data.
78
89
>>>>>>> c5358c59494b53efb832c81a5338e0a23b22c269
90
+
=======
91
+
JavaScript's abilities in the browser are limited to protect the user's safety. The aim is to prevent an evil webpage from accessing private information or harming the user's data.
92
+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
79
93
80
94
Примерите на такива ограничения вкючват:
81
95
Examples of such restrictions include:
@@ -86,6 +100,7 @@ Examples of such restrictions include:
86
100
87
101
Има начини то да взаимодейства с камера/микрофон и други устройства, но те изискват разрешение от потребителя. И така, страниците с активиран JavaScript не могат подло да активират камерата, да наблюдават околноста и да праща тези данни на [Агенцията за Национална Сигурност](https://bg.wikipedia.org/wiki/%D0%90%D0%B3%D0%B5%D0%BD%D1%86%D0%B8%D1%8F_%D0%B7%D0%B0_%D0%BD%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D0%BD%D0%B0_%D1%81%D0%B8%D0%B3%D1%83%D1%80%D0%BD%D0%BE%D1%81%D1%82).
88
102
103
+
<<<<<<< HEAD
89
104
- Различните табове/прозорци в общи линии не знаят за един друг. Понякога да, например когато един прозорец използва JavaScript за да отвори друг. Но дори тогава, JavaScript-а от едната страница може и да няма достъп до другия ако са от различни страници (от различни домейни,протоколи или порти)
90
105
91
106
Това е наречено "Same Origin Policy" или Същинска Политика за Произход. За да проработи това, *и двете страници* трябва да се съгласят за обмен на данни и да съдържат специален JavaScript код, който се справя с това. Ще разгледаме това по-късно в ръководството.
@@ -97,6 +112,19 @@ Examples of such restrictions include:
97
112

98
113
99
114
Такива ограничения не съществуват ако JavaScript-a е използван извън браузъра, например в сървърите. Също, модерните браузъри имат плъгин-и/разширения, които биха питали за допълнителни разрешения.
115
+
=======
116
+
There are ways to interact with the camera/microphone and other devices, but they require a user's explicit permission. So a JavaScript-enabled page may not sneakily enable a web-camera, observe the surroundings and send the information to the [NSA](https://en.wikipedia.org/wiki/National_Security_Agency).
117
+
- Different tabs/windows generally do not know about each other. Sometimes they do, for example when one window uses JavaScript to open the other one. But even in this case, JavaScript from one page may not access the other page if they come from different sites (from a different domain, protocol or port).
118
+
119
+
This is called the "Same Origin Policy". To work around that, *both pages* must agree for data exchange and must contain special JavaScript code that handles it. We'll cover that in the tutorial.
120
+
121
+
This limitation is, again, for the user's safety. A page from `http://anysite.com` which a user has opened must not be able to access another browser tab with the URL `http://gmail.com`, for example, and steal information from there.
122
+
- JavaScript can easily communicate over the net to the server where the current page came from. But its ability to receive data from other sites/domains is crippled. Though possible, it requires explicit agreement (expressed in HTTP headers) from the remote side. Once again, that's a safety limitation.
123
+
124
+

125
+
126
+
Such limitations do not exist if JavaScript is used outside of the browser, for example on a server. Modern browsers also allow plugins/extensions which may ask for extended permissions.
127
+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
100
128
101
129
## Какво прави JavaScript-a уникален?
102
130
@@ -118,20 +146,29 @@ JavaScript е единствената браузърна технология,
118
146
119
147
Това е което прави JavaScript-а толкова уникален. Затова е толкова широк разпространен инструмент за създаване на браузърни интерфейси.
120
148
149
+
<<<<<<< HEAD
121
150
Също така, JavaScript ни позволява за създаването на сървъри, мобилни приложения и други.
151
+
=======
152
+
That said, JavaScript can be used to create servers, mobile applications, etc.
153
+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
122
154
123
155
## Езици "над" JavaScript
124
156
125
157
Синтаксисът на JavaScript-a не отговаря на нуждите на всеки. Различните хора искат различни качества.
126
158
127
159
Това е очаквано, защото проектите и изискванията са различни за всеки.
128
160
161
+
<<<<<<< HEAD
129
162
Така наскоро се появи множество нови езици, които са *transpiled* (преобразувани) в JavaScript, преди да стартират в браузъра.
163
+
=======
164
+
So, recently a plethora of new languages appeared, which are *transpiled* (converted) to JavaScript before they run in the browser.
165
+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
130
166
131
167
Съвременните инструменти правят транспилацията много бърза и прозрачна, като всъщност позволяват на разработчиците да кодират на друг езици и автоматично да го конвертират "под капака'.
132
168
133
169
Примери на такива езици са:
134
170
171
+
<<<<<<< HEAD
135
172
-[CoffeeScript](http://coffeescript.org/) е "синтактичната захар" за JavaScript. То въвежда по-къс синтаксис като ни позволява да пишем по-четим и прецизен код. Обикновенно Ruby разработчиците го харесват.
136
173
-[TypeScript](http://www.typescriptlang.org/) e език съсредоточен да добави "писане на стрикни типове данни" за да опрости разработване и поддръжката на сложни системи. Разработва се от Microsoft.
137
174
-[Flow](http://flow.org/) също добавя типизирани данни, но по по-различен начин. Разработва се от Facebook.
@@ -140,6 +177,16 @@ JavaScript е единствената браузърна технология,
140
177
-[Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) е модерен, сбит и безопасен език за програмиране, която цел може да е Браузър или Node.
141
178
142
179
Има и други. Разбира се, дори да използваме един от транспилираните езици, ние също трябва да знаем JavaScript, за да разберем наистина какво правим.
180
+
=======
181
+
-[CoffeeScript](https://coffeescript.org/) is "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it.
182
+
-[TypeScript](https://www.typescriptlang.org/) is concentrated on adding "strict data typing" to simplify the development and support of complex systems. It is developed by Microsoft.
183
+
-[Flow](https://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
184
+
-[Dart](https://www.dartlang.org/) is a standalone language that has its own engine that runs in non-browser environments (like mobile apps), but also can be transpiled to JavaScript. Developed by Google.
185
+
-[Brython](https://brython.info/) is a Python transpiler to JavaScript that enables the writing of applications in pure Python without JavaScript.
186
+
-[Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) is a modern, concise and safe programming language that can target the browser or Node.
187
+
188
+
There are more. Of course, even if we use one of these transpiled languages, we should also know JavaScript to really understand what we're doing.
Copy file name to clipboardExpand all lines: 1-js/01-getting-started/2-manuals-specifications/article.md
+21Lines changed: 21 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,15 +1,23 @@
1
1
2
2
# Ръководства и спецификации
3
3
4
+
<<<<<<< HEAD
4
5
Тази книга е "ръководство". То цели да ви помогне постепенно да научите езика. Но когато научите основите ще ви са необходими и други ресурси.
6
+
=======
7
+
This book is a *tutorial*. It aims to help you gradually learn the language. But once you're familiar with the basics, you'll need other resources.
8
+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
5
9
6
10
## Спецификации
7
11
8
12
[Спецификаците на ECMA-262](https://www.ecma-international.org/publications/standards/Ecma-262.htm) съдържа най-задълбочените, изчерпателни и оформени информации относно езика JavaScript. То определя езика.
9
13
10
14
Но толкова оформенна документация е трудна за разбиране. Ако ви е нужна най-сигурния ресурс на информация относно детайлите на езика, спецификациите са на важа помощ. Но не са за ежедневна употреба.
11
15
16
+
<<<<<<< HEAD
12
17
Нови спецификации са публикувани всяка година. Между тях, последния публикуван е <https://tc39.es/ecma262/>
18
+
=======
19
+
A new specification version is released every year. Between these releases, the latest specification draft is at <https://tc39.es/ecma262/>.
20
+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
13
21
14
22
За да прочетете за новите функции, включително тези, които са "почти стандартни" (т. Нар. "Етап 3"), посетете <https://github.com/tc39/proposals>.
15
23
@@ -19,19 +27,32 @@
19
27
20
28
-**MDN (Mozilla) JavaScript Reference** е ръководство с примери и информация. Чудесен е за да навлизате по-задълбочено в собствените функции на езика.
21
29
30
+
<<<<<<< HEAD
22
31
Можете да ги намерите в следния линк <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
23
32
24
33
Макар че, много често, най-добрия начин е да се използва търсачката в интернет. Просто напишете "MDN [термина]" когато попълвате търсачката, например ето така "MDN parseInt" за да търсите функцията `parseInt` в MDN.
34
+
=======
35
+
You can find it at <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
36
+
37
+
Although, it's often best to use an internet search instead. Just use "MDN [term]" in the query, e.g. <https://google.com/search?q=MDN+parseInt> to search for the `parseInt` function.
38
+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
25
39
26
40
## Таблици за съвместимост
27
41
28
42
JavaScript e развиващ език, редовно се добавят нови функции и подобрения.
29
43
30
44
За да видите поддръжката на браузърите и двигателите, вижте:
31
45
46
+
<<<<<<< HEAD
32
47
-<http://caniuse.com> - таблици за поддръжката на функциите, или за да видите кои двигатели поддържат модерните криптографски функции: <http://caniuse.com/#feat=cryptography>.
33
48
-<https://kangax.github.io/compat-table> - таблица с функциите на езика и двигателите, които ги поддържат или не ги поддържат.
34
49
35
50
Всички тези ресурси за полезни в среда на разработка, като те съдържат ценна информация относно езика и т.н.
51
+
=======
52
+
-<https://caniuse.com> - per-feature tables of support, e.g. to see which engines support modern cryptography functions: <https://caniuse.com/#feat=cryptography>.
53
+
-<https://kangax.github.io/compat-table> - a table with language features and engines that support those or don't support.
54
+
55
+
All these resources are useful in real-life development, as they contain valuable information about language details, their support, etc.
56
+
>>>>>>> 5dff42ba283bce883428c383c080fa9392b71df8
36
57
37
58
Запомнете тези страници (или тази страница) в случай че може и да ви потрябва информация за определени особености.
0 commit comments