Skip to content

Commit 0d9447f

Browse files
author
darkw1z
committed
Translating first article
1 parent 3f6bad3 commit 0d9447f

File tree

1 file changed

+161
-94
lines changed

1 file changed

+161
-94
lines changed
Lines changed: 161 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,122 +1,189 @@
1-
# An Introduction to JavaScript
1+
# Uvod v JavaScript
22

3-
Let's see what's so special about JavaScript, what we can achieve with it, and what other technologies play well with it.
3+
Poglejmo si kaj je tako posebnega z JavaScript-om, kaj vse lahko z njim dosežemo
4+
ter katere tehnologije delujejo dobro uparjene z JavaScript.
45

5-
## What is JavaScript?
6+
## Kaj je JavaScript?
67

7-
*JavaScript* was initially created to "make web pages alive".
8+
_JavaScript_ je bil prvotno ustvarjen da "oživi spletne strani".
89

9-
The programs in this language are called *scripts*. They can be written right in a web page's HTML and run automatically as the page loads.
10+
Programi v tem programskem jeziku se imenujejo _skripte_. Te lahko spišemo
11+
direktno v HTML-ju spletne strani in jih tako avtomatično poženemo ob nalaganju
12+
strani.
1013

11-
Scripts are provided and executed as plain text. They don't need special preparation or compilation to run.
14+
Skripte se napišejo ter se izvršijo v čisti tekstovni obliki. Ni potreben noben
15+
specialen prevajalnik ali kakšna posebna priprava. Na primer spletni brskalniki
16+
imajo vgrajen program (angl. _engine_), ki izvede prevajanje tekstovne oblike
17+
kode v strojno ob izvedbi programa. Takšne prevajalnike imenujemo _Just-In-Time_
18+
ali _Run-Time_ prevajalniki.
1219

13-
In this aspect, JavaScript is very different from another language called [Java](https://en.wikipedia.org/wiki/Java_(programming_language)).
20+
V tem kontekstu je JavaScript precej drugačen od programskega jezika, ki ga
21+
poznamo pod imenom
22+
[Java](<https://en.wikipedia.org/wiki/Java_(programming_language)>).
1423

15-
```smart header="Why is it called <u>Java</u>Script?"
16-
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.
24+
```smart header="Zakaj se imenuje prav <u>Java</u>Script?"
25+
Prvotno poimenovanje za JavaScript je bilo "LiveScript". Ampak ker je v tistem času bila Java tako popularen programski jezik so se ustvarjalci JavaScript-a odločili postaviti novi programski jezik kot "mlajši brat" Java-e.
26+
S tem so menili, da bo to pomagalo pri prepoznavnosti tega jezika.
1727
18-
But as it evolved, JavaScript became a fully independent language with its own specification called [ECMAScript](http://en.wikipedia.org/wiki/ECMAScript), and now it has no relation to Java at all.
28+
Z razvojem je JavaScript postal povsem samostojen in neodvisen programski jezik, ki ima tudi svojo ustrezno specifikacijo, ki se imenuje [ECMAScript](http://en.wikipedia.org/wiki/ECMAScript).
29+
Tako več nima nobene povezave z Java-o.
1930
```
2031

21-
Today, JavaScript can execute not only in the browser, but also on the server, or actually on any device that has a special program called [the JavaScript engine](https://en.wikipedia.org/wiki/JavaScript_engine).
32+
Danes lahko JavaScript izvedemo ne le v spletnem brskalniku, ampak tudi na
33+
strežniki oziroma pravzaprav na katerikoli napravi, ki uporablja
34+
[JavaScript engine](https://en.wikipedia.org/wiki/JavaScript_engine).
2235

23-
The browser has an embedded engine sometimes called a "JavaScript virtual machine".
36+
Spletni brskalniki uporabljajo različna imena za JavaScript engine:
2437

25-
Different engines have different "codenames". For example:
38+
- [V8](<https://en.wikipedia.org/wiki/V8_(JavaScript_engine)>) -- Chrome in
39+
Opera.
40+
- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- Firefox.
41+
- [Chakra](<https://en.wikipedia.org/wiki/Chakra_(JavaScript_engine)>) -- IE.
42+
- [WebKit](<https://en.wikipedia.org/wiki/Safari_(web_browser)>) -- Safari
43+
- ...Obstajajo še druga imena kot je "ChakraCore" za Microsoft Edge ipd.
2644

27-
- [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- in Chrome and Opera.
28-
- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefox.
29-
- ...There are other codenames like "Chakra" for IE, "ChakraCore" for Microsoft Edge, "Nitro" and "SquirrelFish" for Safari, etc.
45+
Zgornja poimenovanja si velja zapomniti saj se velikokrat pojavijo v raznih
46+
člankih razvijalcev, kjer jih navadno omenjajo kadar govorijo o podpori določene
47+
funkcionalnosti. Na primer: "lastnost X je podprta na V8", kar pomeni, da to
48+
lastnost lahko uporabimo na brskalnikih Chrome in Opera.
3049

31-
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 and Opera.
50+
```smart header="Kako delujejo programski stroji (angl. *engines*)?"
3251
33-
```smart header="How do engines work?"
52+
Programski stroji so precej zahtevni za razumevanje. A osnove so enostavne.
3453
35-
Engines are complicated. But the basics are easy.
54+
1. Programski stroj prebere (angl.*parses*) skripto (v JavaScript je programski stroj največkrat kar vgrajen v spletni brskalnik, če se izvaja v spletni aplikaciji).
55+
2. Nato jo prevede (angl. *compiles*) v strojni jezik.
56+
3. Sledi izvedbe strojne kode, ki deluje zelo hitro.
3657
37-
1. The engine (embedded if it's a browser) reads ("parses") the script.
38-
2. Then it converts ("compiles") the script to the machine language.
39-
3. And then the machine code runs, pretty fast.
40-
41-
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.
58+
Programski stroji opravijo dodatne optimizacije ob vsakem koraku v danem procesu. Pravtako imajo možnost opazovanja in analiziranje prevedene skripte, ki se poganja, in s tem dodatno optimizira strojno kodo glede na najdbe.
4259
```
4360

44-
## What can in-browser JavaScript do?
45-
46-
Modern JavaScript is a "safe" programming language. It does not provide low-level access to memory or CPU, because it was initially created for browsers which do not require it.
47-
48-
JavaScript's capabilities greatly depend on the environment it's running in. For instance, [Node.js](https://wikipedia.org/wiki/Node.js) supports functions that allow JavaScript to read/write arbitrary files, perform network requests, etc.
49-
50-
In-browser JavaScript can do everything related to webpage manipulation, interaction with the user, and the webserver.
51-
52-
For instance, in-browser JavaScript is able to:
53-
54-
- Add new HTML to the page, change the existing content, modify styles.
55-
- React to user actions, run on mouse clicks, pointer movements, key presses.
56-
- Send requests over the network to remote servers, download and upload files (so-called [AJAX](https://en.wikipedia.org/wiki/Ajax_(programming)) and [COMET](https://en.wikipedia.org/wiki/Comet_(programming)) technologies).
57-
- Get and set cookies, ask questions to the visitor, show messages.
58-
- Remember the data on the client-side ("local storage").
59-
60-
## What CAN'T in-browser JavaScript do?
61-
62-
JavaScript's abilities in the browser are limited for the sake of the user's safety. The aim is to prevent an evil webpage from accessing private information or harming the user's data.
63-
64-
Examples of such restrictions include:
65-
66-
- 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.
67-
68-
Modern browsers allow it to work with files, but the access is limited and only provided if the user does certain actions, like "dropping" a file into a browser window or selecting it via an `<input>` tag.
69-
70-
There are ways to interact with 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).
71-
- 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 if they come from different sites (from a different domain, protocol or port).
72-
73-
This is called the "Same Origin Policy". To work around that, *both pages* must agree for data exchange and contain a special JavaScript code that handles it. We'll cover that in the tutorial.
74-
75-
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` and steal information from there.
76-
- 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.
61+
## Kaj lahko stori JavaScript, ki se izvede v spletnem brskalniku?
62+
63+
Sodobni JavaScript je "varen" programski jezik. To pomeni, da ne ponuja možnosti
64+
dostopa do nizko-nivojskih funkcij spomina ali CPE, saj je bil inicialno
65+
ustvarjen za spletne brskalnike, ki pa tega ne potrebujejo.
66+
67+
Sposobnosti JavaScript-a so močno odvisne od okolja v katerem se poganja. Na
68+
primer [Node.js](https://wikipedia.org/wiki/Node.js) podpira funkcije, ki
69+
dovolijo JavaScript-u, da bere/piše poljubne datoteke, opravlja omrežne zahteve
70+
ipd.
71+
72+
JavaScript, ki se izvaja v spletnem brasklaniku lahko počne vse kar je v
73+
povezavi z manipulacijo spletne strani, interakcijo z uporabniki ali spletnim
74+
strežnikom. JavaScript (ki se izvede v spletnem brskalniku) lahko na primer:
75+
76+
- Doda nov HTML na stran, spremeni obstoječo vsebino, spremeni stile.
77+
- Se odziva na uporabniške akcije, se poganja glede na klike z miško,
78+
premikanjem kazalnika, pritiskanjem tipk.
79+
- Pošilja zahtevke preko omrežja do oddaljenih strežnikov, nalaga in prenaša
80+
datoteke (t.i. [AJAX](<https://en.wikipedia.org/wiki/Ajax_(programming)>) in
81+
[COMET](<https://en.wikipedia.org/wiki/Comet_(programming)>) technologies).
82+
- Bere in nastavlja spletne piškotke, postavlja vprašanje obiskovalcem strani,
83+
prikazuje različna sporočila.
84+
- Si zapomni (shrani) podatke na klientu ("local storage")
85+
86+
## Kaj JavaScript, ki se izvede v spletnem brskalniku, NE MORE počet?
87+
88+
Omejitve JavaScript-a, ki se izvaja v spletnem brskalniku so predvsem zaradi
89+
varnosti uporabnika. Cilj je preprečiti zlonamernim spletnim stranem dostop do
90+
ali neželjeno manipulacijo zasebnih podatkov uporabnika.
91+
92+
Primeri takih omejitev vključujejo:
93+
94+
- JavaScript na spletni strani ne more brati/pisati/kopirati ali izvajati
95+
poljubnih datotek na trdem disku. Nima neposrednega dostopa do funkcij
96+
operacijskega sistema.
97+
- Različni zavihki/okna se ne zavedajo drug drugega. Takšen princip se imenuje
98+
"Same Origin Policy". Če želimo izmenjavati podatke med omenjenimi entitetami
99+
se morata _obe strani_ strinjati za izmenjavo podatkov ter uporabiti posebno
100+
JavaScript kodo, ki to izvede (več o tem kasneje v vodniku). V praksi ta
101+
omejitev pomeni, da spletna stran `http://anysite.com` ne more dostopati do
102+
podatkov iz zavihka `http://gmail.com` ter posledično ukrasti podatke od tam.
103+
104+
- Čeprav JavaScript lahko brez težav komunicira s strežnikom, ki je naložil
105+
spletno stran, ne more pa prejemati podatkov od drugih strežnikov. To lahko
106+
stori le, če obstaja ekspliciten dogovor (navadno izražen v HTTP glavi) z
107+
oddaljeno stranjo.
108+
109+
Izjeme:
110+
111+
- Sodobni brskalniki do določene mere dovolijo delo z datotekami, vendar dostop
112+
je omejen ter omogoče le če uporabnik naredi določeno akcijo kot je npr.:
113+
nalaganje datoteke v brskalnik preko "drop" funkcionalnosti ali pa preko
114+
izbire z `<input>` oznako.
115+
- Obstajajo načini kako vzpostavit interakcijo s kamero ali mikrofonom ali
116+
drugih naprav, vendar te zahtevajo uporabnikovo posebno dovoljenje. To pomeni
117+
da JavaScript ne more na skrivno prisluškovat ali omogočit spletno kamero ter
118+
podatke pošiljati
119+
[NSA](https://en.wikipedia.org/wiki/National_Security_Agency).
77120

78121
![](limitations.svg)
79122

80-
Such limits do not exist if JavaScript is used outside of the browser, for example on a server. Modern browsers also allow plugin/extensions which may ask for extended permissions.
123+
Takšne omejitve ne obstajajo, če se JavaScript požene izven brskalnika (na
124+
primer na strežniku). Sodobni brskalniki pravtako omogočajo vtičnike, ki lahko
125+
zahtevajo za dodatna dovoljenja.
81126

82-
## What makes JavaScript unique?
127+
## Kaj je unikatnega pri JavaScript-u?
83128

84-
There are at least *three* great things about JavaScript:
129+
Obstajajo vsaj _tri_ odlične stvari v JavaScript-u:
85130

86131
```compare
87-
+ Full integration with HTML/CSS.
88-
+ Simple things are done simply.
89-
+ Support by all major browsers and enabled by default.
132+
+ Popolna integracija s HTML in CSS.
133+
+ Enostavno stvari so izvedene preprosto.
134+
+ Podpora vseh glavnih brskalnikov ter je povsod samodejno omogoočen.
90135
```
91-
JavaScript is the only browser technology that combines these three things.
92-
93-
That's what makes JavaScript unique. That's why it's the most widespread tool for creating browser interfaces.
94-
95-
That said, JavaScript also allows to create servers, mobile applications, etc.
96-
97-
## Languages "over" JavaScript
98-
99-
The syntax of JavaScript does not suit everyone's needs. Different people want different features.
100-
101-
That's to be expected, because projects and requirements are different for everyone.
102-
103-
So recently a plethora of new languages appeared, which are *transpiled* (converted) to JavaScript before they run in the browser.
104-
105-
Modern tools make the transpilation very fast and transparent, actually allowing developers to code in another language and auto-converting it "under the hood".
106-
107-
Examples of such languages:
108-
109-
- [CoffeeScript](http://coffeescript.org/) is a "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it.
110-
- [TypeScript](http://www.typescriptlang.org/) is concentrated on adding "strict data typing" to simplify the development and support of complex systems. It is developed by Microsoft.
111-
- [Flow](http://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
112-
- [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.
113-
- [Brython](https://brython.info/) is a Python transpiler to JavaScript that enables the writing of applications in pure Python without JavaScript.
114-
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) is a modern, concise and safe programming language that can target the browser or Node.
115-
116-
There are more. Of course, even if we use one of transpiled languages, we should also know JavaScript to really understand what we're doing.
117-
118-
## Summary
119136

120-
- JavaScript was initially created as a browser-only language, but it is now used in many other environments as well.
121-
- Today, JavaScript has a unique position as the most widely-adopted browser language with full integration in HTML/CSS.
122-
- 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.
137+
JavaScript je edina tehnologija v brskalnikih, ki omogoča vse tri hkrati in to
138+
naredi JavaScript unikatnega. Zaradi tega je to najbolj uporabljeno orodje za
139+
ustvarjanje brskalniških vmesnikov.
140+
141+
Z JavaScript lahko pravtako razvijamo spletne strežnike, mobilne aplikacije,
142+
itd.
143+
144+
## Programski jeziki, katerih podlaga je JavaScript
145+
146+
Sintaksa,ki jo uporablja JavaScript, morda ni primerna za vse. Različni ljudje
147+
si želijo različne sposobnosti. To je tudi pričakovati saj projektne zahteve so
148+
različne za vsakogar.
149+
150+
Tako se je nedavno razvilo ogromno število novih programskih jezikov, ki se na
151+
koncu prevedejo v JavaScript, preden se izvedejov spletnem brskalniku.
152+
153+
Sodobna orodja omogočajo zelo hitro in transparentno prevajanje, kar omogoča
154+
razvijalcem programiranje v drugem programskem jeziku, vmes pa se le-ta
155+
avtomatično prevaja v JavaScript.
156+
157+
Nekaj primerov takšnih programskih jezikov:
158+
159+
- [CoffeeScript](http://coffeescript.org/) je t.i. "syntactic sugar" za
160+
JavaScript. Omogoča krajšo sintakso, kar nam omogoča pisanje bolj jasne in
161+
natančne kode. Navadno ga uporabljajo Ruby razvijalci.
162+
- [TypeScript](http://www.typescriptlang.org/) se osredotoča na dodajanje
163+
striktosti pri tipih podatkov za olajšano vzdrževanje bolj kompleksnih
164+
sistemov. Razvija ga Microsoft.
165+
- [Flow](http://flow.org/) pravtako dodaja tipiziranje, vendar na drugacen
166+
način. Razvija ga Facebook.
167+
- [Dart](https://www.dartlang.org/) je povsem samostojen programski jezik, ki
168+
ima svoj programski stroj, ki se izvaja izven brskalniških okolij (kot so
169+
mobilne aplikacije), a se vseeno lahko prevedejo v JavaScript. Razvija ga
170+
Google.
171+
- [Brython](https://brython.info/) je Pythonov prevajalnik za JavaScript, ki
172+
omogoča razvijanje aplikacij v Python-u, brez JavaScript.
173+
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) je sodoben is
174+
a modern, jedrnat in varen programski jezik, ki se lahko tudi uporablja za
175+
razvoj spletnih aplikacij ali strežnikov.
176+
177+
Obstaja jih še več. Kljub temu, da obstaja več prevedenih programskih jezikov za
178+
JavaScript, je le-ta tisti,ki se na koncu izvede torej je potrebno dobro znanje
179+
samega JavaScript-a za dosledno razumevanje naših aplikacij.
180+
181+
## Povzetek
182+
183+
- Prvotno je bil JavaScript zasnovan kot programski jezik le za brskalnike, a je
184+
sedaj uporabljen tudi v drugih okoljih.
185+
- Danes ima JavaScript unikatno mesto kot najbolj priznan brskalniški jezik s
186+
popolno integracijo z HTML in CSS.
187+
- Obstaja veliko programskih jezikov ki se prevedejo v JavaScript in ponujajo
188+
določene funkcionalnosti. Po spoznavanju JavaScript-a ja zaželjeno, da se
189+
spoznamo tudi s kakšnim izmed njih.

0 commit comments

Comments
 (0)