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
+86
Original file line number
Diff line number
Diff line change
@@ -1,19 +1,32 @@
1
1
# Uvod u JavaScript
2
2
3
+
<<<<<<< HEAD
3
4
Pogledajmo šta je tako posebno u JavaScriptu, šta možemo postići sa njim i koje druge tehnologije se sa njim dobro 'igraju'.
5
+
=======
6
+
Let's see what's so special about JavaScript, what we can achieve with it, and what other technologies play well with it.
7
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
4
8
5
9
## Šta je JavaScript ?
6
10
11
+
<<<<<<< HEAD
7
12
*JavaScript* je prvobitno kreiran kako bi *"oživio web stranice"*.
13
+
=======
14
+
*JavaScript* was initially created to "make web pages alive".
15
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
8
16
9
17
Programi na ovom jeziku se nazivaju *skripte*. Mogu se napisati pravo u HTML-u veb stranice i pokrenuti automatski kada se stranica učita.
10
18
11
19
Skripte se pružaju i izvode u obliku običnog teksta. Za pokretanje im nisu potrebne posebne pripreme ili kompilacije.
12
20
13
21
U ovom aspektu, JavaScript se veoma razlikuje od drugog jezika koji se zove [Java](https://en.wikipedia.org/wiki/Java_(programming_language)).
14
22
23
+
<<<<<<< HEAD
15
24
```smart header="Zašto <u>Java</u>Script?"
16
25
Kada je kreiran JavaScript, u početku je imao drugo ime: "LiveScript". Ali Java je u to vreme bila veoma popularna, pa je odlučeno da će pozicioniranje novog jezika Java-ovog „mlađeg brata“
26
+
=======
27
+
```smart header="Why is it called <u>Java</u>Script?"
28
+
When JavaScript was created, it initially had another name: "LiveScript". But Java was very popular at that time, so it was decided that positioning a new language as a "younger brother" of Java would help.
29
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
17
30
18
31
Ali kako se razvijao, JavaScript je postao potpuno nezavisan jezik sa sopstvenom specifikacijom [ECMAScript](http://en.wikipedia.org/wiki/ECMAScript), a sada uopšte nema veze sa Javom.
19
32
```
@@ -24,26 +37,46 @@ Preglednik ima ugrađeni motor koji se ponekad naziva i „JavaScript virtuelna
24
37
25
38
Različite mašine imaju različita "kodna imena". Na primer:
26
39
40
+
<<<<<<< HEAD
27
41
-[V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- u Chrome-u i Opera.
28
42
-[SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- u Firefox-u.
29
43
- ... Postoje i druga kodna imena poput "Trident" i "Chakra" za različite verzije IE-a, "ChakraCore" za Microsoft Edge, "Nitro" i "SkuirrelFish" za Safari, itd.
30
44
31
45
Gore navedene pojmove dobro je zapamtiti jer se koriste u člancima za programere na Internetu. Koristićemo i njih. Na primer, ako „odliku X podržava V8“, ona verovatno funkcioniše u Chrome-u i Operi.
46
+
=======
47
+
-[V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- in Chrome, Opera and Edge.
48
+
-[SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefox.
49
+
- ...There are other codenames like "Chakra" for IE, "JavaScriptCore", "Nitro" and "SquirrelFish" for Safari, etc.
50
+
51
+
The terms above are good to remember because they are used in developer articles on the internet. We'll use them too. For instance, if "a feature X is supported by V8", then it probably works in Chrome, Opera and Edge.
52
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
32
53
33
54
```smart header="Kako rade mašine ?"
34
55
35
56
Motori su komplikovani. Ali osnove su jednostavne.
36
57
58
+
<<<<<<< HEAD
37
59
1. Motor (ugrađen ako je pretraživač) čita („analizira“) skriptu.
38
60
2. Zatim pretvara ("kompajlira") skriptu u mašinski jezik.
39
61
3. A onda mašinski kod radi prilično brzo.
40
62
41
63
Motor primenjuje optimizacije na svakom koraku procesa. Čak posmatra sastavljenu skriptu dok radi, analizira podatke koji prolaze kroz nju i primenjuje optimizacije na mašinskom kodu na osnovu tog znanja. Kada je gotov, skripte se pokreću prilično brzo.
64
+
=======
65
+
1. The engine (embedded if it's a browser) reads ("parses") the script.
66
+
2. Then it converts ("compiles") the script to machine code.
67
+
3. And then the machine code runs, pretty fast.
68
+
69
+
The engine applies optimizations at each step of the process. It even watches the compiled script as it runs, analyzes the data that flows through it, and further optimizes the machine code based on that knowledge.
70
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
42
71
```
43
72
44
73
## Šta JavaScript u internet pretraživaču može da radi?
45
74
75
+
<<<<<<< HEAD
46
76
Savremeni JavaScript je "siguran" programski jezik. Ne pruža pristup memoriji ili CPU-u nižeg nivoa, jer je prvobitno kreiran za pregledače koji to ne zahtevaju.
77
+
=======
78
+
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.
79
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
47
80
48
81
Mogućnosti JavaScript-a u velikoj meri zavise od okruženja u kome se nalazi. Na primjer [Node.js](https://wikipedia.org/wiki/Node.js) podržava funkcije koje omogućuju JavaScriptu da čita / piše proizvoljne datoteke, izvršava mrežne zahteve itd.
49
82
@@ -59,14 +92,23 @@ Na primer, JavaScript u pregledaču može:
59
92
60
93
## Šta NE MOŽETE u JavaScript pretraživaču?
61
94
95
+
<<<<<<< HEAD
62
96
Mogućnosti JavaScripta u pretraživaču su ograničene zbog bezbednosti korisnika. Cilj je sprečiti zlo veb stranici da pristupi privatnim podacima ili našteti korisnikovim podacima.
97
+
=======
98
+
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.
99
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
63
100
64
101
Primeri takvih ograničenja uključuju:
65
102
103
+
<<<<<<< HEAD
66
104
- JavaScript na veb stranici možda ne može čitati / pisati proizvoljne datoteke na hard disku, kopirati ih ili izvršavati programe. Nema direktan pristup funkcijama sistema OS.
105
+
=======
106
+
- JavaScript on a webpage may not read/write arbitrary files on the hard disk, copy them or execute programs. It has no direct access to OS functions.
107
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
67
108
68
109
Savremeni pregledači omogućavaju mu da radi sa datotekama, ali je pristup ograničen i pruža se samo ako korisnik izvrši određene radnje, poput „puštanja“ datoteke u prozor pregledača ili izbora pomoću „<input>“ taga.
69
110
111
+
<<<<<<< HEAD
70
112
Postoje načini za interakciju s kamerom / mikrofonom i drugim uređajima, ali za njih je potrebno izričito odobrenje korisnika. Dakle, stranica sa omogućenim JavaScriptom možda ne dozvoljava da večno omogućuju veb kameru, posmatrajte okolinu i šaljite informacije na [NSA](https://en.wikipedia.org/wiki/National_Security_Agency).
71
113
72
114
- Različiti tabovi / prozori uglavnom ne znaju jedni o drugima. Ponekad to urade, na primer kada jedan prozor koristi JavaScript da otvori drugi. Ali čak i u ovom slučaju, JavaScript s jedne stranice možda ne može pristupiti drugoj ako dolaze sa različitih veb lokacija (sa drugog domena, protokola ili porta).
@@ -80,43 +122,87 @@ Primeri takvih ograničenja uključuju:
80
122

81
123
82
124
Takva ograničenja ne postoje ako se JavaScript koristi izvan pregledača, na primer na serveru. Savremeni pregledači takođe dozvoljavaju dodatak / proširenja koji mogu tražiti proširenja dozvola.
125
+
=======
126
+
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).
127
+
- 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).
128
+
129
+
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.
130
+
131
+
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.
132
+
- 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.
133
+
134
+

135
+
136
+
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.
137
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
83
138
84
139
## Po čemu je JavaScript jedinstven?
85
140
86
141
Postoje najmanje *tri* sjajne stvari o JavaScript-i :
87
142
88
143
```compare
144
+
<<<<<<< HEAD
89
145
+ Potpuna integracija sa HTML-om/CSS-om.
90
146
+ Jednostavne stvari se rade jednostavno.
91
147
+ Podrška svih glavnih pregledača i omogućena podrazumijevano.
148
+
=======
149
+
+ Full integration with HTML/CSS.
150
+
+ Simple things are done simply.
151
+
+ Supported by all major browsers and enabled by default.
152
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
92
153
```
93
154
JavaScript je jedina tehnologija pretraživača koja kombinuje ove tri stvari.
94
155
95
156
To čini JavaScript jedinstvenim. Zato je to najrasprostranjeniji alat za kreiranje interfejsa pretraživača.
96
157
158
+
<<<<<<< HEAD
97
159
Uz to, JavaScript takođe omogućava kreiranje servera, mobilnih aplikacija itd.
160
+
=======
161
+
That said, JavaScript can be used to create servers, mobile applications, etc.
162
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
98
163
99
164
## Jezici "preko" JavaScript-e
100
165
101
166
Sintaksa JavaScript ne odgovara svačijim potrebama. Različiti ljudi žele različite karakteristike.
102
167
103
168
To je očigledno, jer su projekti i zahtevi za svakoga različiti.
104
169
170
+
<<<<<<< HEAD
105
171
Tako se nedavno pojavila mnoštvo novih jezika koji su * prevedeni * (pretvoreni) u JavaScript pre nego što se pokrenu u pretraživaču.
172
+
=======
173
+
So, recently a plethora of new languages appeared, which are *transpiled* (converted) to JavaScript before they run in the browser.
174
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
106
175
107
176
Savremeni alati čine transpilaciju veoma brzom i preglednom, ustvari omogućavajući programerima da kodiraju na drugom jeziku i automatski ga pretvaraju "pod haubom".
108
177
109
178
Primeri takvih jezika:
110
179
180
+
<<<<<<< HEAD
111
181
-[CoffeeScript](http://coffeescript.org/) je "sintaktički šećer" za JavaScript. Uvodi kraću sintaksu, omogućavajući nam pisanje jasnijeg i preciznijeg koda. Obično se Ruby programerima sviđa.
112
182
-[TypeScript](http://www.typescriptlang.org/) koncentrisana je na dodavanje „strogog unosa podataka“ radi pojednostavljenja razvoja i podrške složenih sistema. Razvio ga je Microsoft.
113
183
-[Flow](http://flow.org/) takođe dodaje podatke za unos podataka, ali na drugačiji način. Razvijen od strane Facebook-a.
114
184
-[Dart](https://www.dartlang.org/) je samostalan jezik koji ima svoj motor koji radi u okruženjima koja nisu u pretraživaču (poput mobilnih aplikacija), ali takođe se može prevesti u JavaScript. Razvio Google.
115
185
116
186
Postoji više. Naravno, čak i ako koristimo jedan od prevedenih jezika, trebalo bi da znamo i JavaScript da bismo zaista razumeli šta radimo.
187
+
=======
188
+
-[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.
189
+
-[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.
190
+
-[Flow](https://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
191
+
-[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.
192
+
-[Brython](https://brython.info/) is a Python transpiler to JavaScript that enables the writing of applications in pure Python without JavaScript.
193
+
-[Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) is a modern, concise and safe programming language that can target the browser or Node.
194
+
195
+
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.
196
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
117
197
118
198
## Rezime
119
199
200
+
<<<<<<< HEAD
120
201
- JavaScript je u početku kreiran kao jezik samo za pregledač, ali se sada koristi i u mnogim drugim okruženjima.
121
202
- Danas JavaScript ima jedinstvenu poziciju kao najšire prihvaćeni jezik pregledača sa potpunom integracijom sa HTML-om / CSS-om.
122
203
- Postoji mnogo jezika koji se "prevode" u JavaScript i pružaju određene funkcije. Preporučuje se da ih sagledate, bar na kratko, nakon savladavanja JavaScripta.
204
+
=======
205
+
- JavaScript was initially created as a browser-only language, but it is now used in many other environments as well.
206
+
- Today, JavaScript has a unique position as the most widely-adopted browser language, fully integrated with HTML/CSS.
207
+
- There are many languages that get "transpiled" to JavaScript and provide certain features. It is recommended to take a look at them, at least briefly, after mastering JavaScript.
Copy file name to clipboardExpand all lines: 1-js/01-getting-started/2-manuals-specifications/article.md
+31
Original file line number
Diff line number
Diff line change
@@ -1,22 +1,39 @@
1
1
2
2
# Priručnici i specifikacije
3
3
4
+
<<<<<<< HEAD
4
5
Ova knjiga je *tutorial*. Cilj mu je da vam pomogne da postepeno naučite jezik. Ali nakon što se upoznate sa osnovama, trebat će vam i drugi izvori.
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
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
5
9
6
10
## Specifikacije
7
11
12
+
<<<<<<< HEAD
8
13
**ECMA-262 specifikacija** sadrži najdublje, detaljne i formalizovane informacije o JavaScript-u. Definiše jezik.
14
+
=======
15
+
[The ECMA-262 specification](https://www.ecma-international.org/publications/standards/Ecma-262.htm) contains the most in-depth, detailed and formalized information about JavaScript. It defines the language.
16
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
9
17
10
18
Ali kako je to formalizovano, u početku je teško razumeti. Dakle, ako vam je potreban najpouzdaniji izvor informacija o detaljima jezika, specifikacija je pravo mesto. Ali nije za svakodnevnu upotrebu.
11
19
20
+
<<<<<<< HEAD
12
21
Najnoviji nacrt je u <https://tc39.es/ecma262/>.
22
+
=======
23
+
A new specification version is released every year. Between these releases, the latest specification draft is at <https://tc39.es/ecma262/>.
24
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
13
25
14
26
Da biste pročitali nove funkcije 'krvarenja ivice', uključujući one koje su „skoro standardne“ (tzv. „Faza 3“), pogledajte predloge na <https://github.com/tc39/proposals>.
15
27
28
+
<<<<<<< HEAD
16
29
Takođe, ako se razvijate za pregledač, onda postoje i druge specifikacije pokrivene u [drugom delu] (info:browser-environment) uputstva.
30
+
=======
31
+
Also, if you're developing for the browser, then there are other specifications covered in the [second part](info:browser-environment) of the tutorial.
32
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
17
33
18
34
## Priručnici
19
35
36
+
<<<<<<< HEAD
20
37
-**MDN (Mozilla) JavaScript Referenca** je priručnik sa primerima i drugim informacijama. Odlično je dobiti detaljne informacije o pojedinim funkcijama jezika, metodama itd.
21
38
22
39
Može se naći na <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
@@ -27,16 +44,30 @@ Takođe, ako se razvijate za pregledač, onda postoje i druge specifikacije pokr
27
44
-**MSDN** – Microsoftov priručnik sa puno informacija, uključujući JavaScript (koji se često naziva JScript). Ako vam treba nešto specifično za Internet Ekplorer, idite tamo: <http://msdn.microsoft.com/>.
28
45
29
46
Takođe, možemo da koristimo internet pretragu sa izrazima kao što su "RegExp MSDN" ili "RegExp MSDN jscript".
47
+
=======
48
+
-**MDN (Mozilla) JavaScript Reference** is the main manual with examples and other information. It's great to get in-depth information about individual language functions, methods etc.
49
+
50
+
You can find it at <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
51
+
52
+
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.
53
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
30
54
31
55
## Tabele kompatibilnosti
32
56
33
57
JavaScript je jezik u razvoju, nove funkcije se redovno dodaju.
34
58
35
59
Da biste videli njihovu podršku među pregledačima i drugim motorima, pogledajte:
36
60
61
+
<<<<<<< HEAD
37
62
-<http://caniuse.com> - tabele podrške po karakteristikama, npr. da biste videli koji motori podržavaju moderne funkcije kriptografije: <http://caniuse.com/#feat=cryptography>.
38
63
-<https://kangax.github.io/compat-table> - tabela sa jezičkim funkcijama i motorima koji ih podržavaju ili ne podržavaju.
39
64
40
65
Svi ovi resursi su korisni u razvoju u stvarnom životu, jer sadrže dragocene informacije o jezičnim detaljima, njihovoj podršci itd.
66
+
=======
67
+
-<https://caniuse.com> - per-feature tables of support, e.g. to see which engines support modern cryptography functions: <https://caniuse.com/#feat=cryptography>.
68
+
-<https://kangax.github.io/compat-table> - a table with language features and engines that support those or don't support.
69
+
70
+
All these resources are useful in real-life development, as they contain valuable information about language details, their support, etc.
71
+
>>>>>>> 035c5267ba80fa7b55878f7213cbde449b4092d9
41
72
42
73
Zapamtite ih (ili ovu stranicu) u slučajevima kada su vam potrebne detaljne informacije o određenoj funkciji.
0 commit comments