Skip to content

Commit bcccb21

Browse files
Merge pull request #131 from javascript-tutorial/sync-29216730
Sync with upstream @ 2921673
2 parents ee05579 + 8e5cf74 commit bcccb21

File tree

561 files changed

+11430
-8068
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

561 files changed

+11430
-8068
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ sftp-config.json
2121
Thumbs.db
2222

2323

24+
/svgs

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

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Să vedem ce e atât de special la JavaScript, ce putem realiza cu el și ce alt
44

55
## Ce este JavaScript?
66

7-
*JavaScript* a fost creat inițial pentru *"a da viață paginilor"*.
7+
*JavaScript* a fost creat inițial pentru "a da viață paginilor".
88

99
În acest limbaj programele sunt numite *script-uri*(scripts). Acestea pot fi scrise direct în HTML și executate în mod automat pe măsură ce pagina se încarcă.
1010

@@ -13,7 +13,7 @@ Script-urile sunt furnizate și executate ca și text simplu. Ele nu au nevoie d
1313
În ceea ce privește acest aspect, JavaScript este foarte diferit față de un alt limbaj cu nume asemănător, [Java](https://en.wikipedia.org/wiki/Java_(programming_language)).
1414

1515
```smart header="Why <u>Java</u>Script?"
16-
Când JavaScript a fost creat, inițial avea un alt nume: "LiveScript". Dar la acel moment limbajul Java era foarte popular, așa s-a decis că poziționarea unui nou limbaj ca și "frate mai mic" al lui Java, va ajuta.
16+
Când JavaScript a fost creat, inițial avea un alt nume: "LiveScript". Dar Java era foarte popular la acel moment, așa s-a decis că poziționarea unui nou limbaj ca și "frate mai mic" al lui Java, va ajuta.
1717
1818
Dar cum acesta a evoluat, JavaScript a devenit un limbaj complet independent, cu propriile specificații, numite [ECMAScript](http://en.wikipedia.org/wiki/ECMAScript), iar acum nu mai are nici o legătură cu Java.
1919
```
@@ -26,9 +26,9 @@ Diferite motoare au diferite "nume de cod", spre exemplu:
2626

2727
- [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- în Chrome și Opera.
2828
- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- în Firefox.
29-
- ...Mai există și alte nume de cod precum "Trident" și "Chakra" pentru diferite versiuni de IE, "ChakraCore" pentru Microsoft Edge, "Nitro" și "SquirrelFish" pentru Safari, etc.
29+
- ...Mai există și alte nume de cod precum "Chakra" pentru IE, "JavaScriptCore", "Nitro" și "SquirrelFish" pentru Safari, etc.
3030

31-
Termenii de mai sus sunt bine de știut, pentru că ei sunt folosiți în articole ale dezvoltatorilor, pe internet. De exemplu dacă "o caracteristică(feature) X este suportată de către V8", atunci probabil că merge și în Chrome și în Opera.
31+
Termenii de mai sus sunt bine de știut pentru că ei sunt folosiți în articole ale dezvoltatorilor de pe internet. Va trebui să-i și folosim. Spre exemplu, dacă "o caracteristică(feature) X este suportată de către V8", atunci probabil că merge și în Chrome, Opera și Edge.
3232

3333
```smart header="How do engines work?"
3434
@@ -38,7 +38,7 @@ Motoarele sunt complicate. Dar bazele sunt ușoare.
3838
2. Apoi convertește("compilează") script-ul în limbajul mașină.
3939
3. Apoi codul mașină rulează, destul de repede.
4040
41-
Motorul aplică optimizări la fiecare stadiu al procesului. Ba chiar observă script-ul compilat cum rulează, analizează datele care trec prin el și aplică optimizări asupra codului mașină, bazate pe informațiile strânse. La sfârșit script-urile rulează destul de repede.
41+
Motorul aplică optimizări la fiecare stadiu al procesului. Ba chiar observă script-ul compilat cum rulează, analizează datele care trec prin el și aplică optimizări suplimentare asupra codului mașină bazate pe informațiile strânse.
4242
```
4343

4444
## Ce poate JavaScript-ul din browser să facă?
@@ -57,13 +57,13 @@ De exemplu, JavaScript din browser este capabil să:
5757
- Preia și să seteze cookie-uri, pună întrebări vizitatorului, arate mesaje.
5858
- Să-și amintească date pe partea de client("local storage").
5959

60-
## Ce nu poate JavaScript-ul din browser să facă?
60+
## Ce NU poate JavaScript-ul din browser să facă?
6161

62-
Abilitățile JavaScript-ului din browser sunt limitate pentru siguranța utilizatorului. Scopul este acela de a preveni o pagină web malițioasă să acceseze informații private sau să corupă datele utilizatorului.
62+
Abilitățile JavaScript-ului din browser sunt limitate de dragul siguranței utilizatorului. Scopul este de a preveni o pagină web malițioasă să acceseze informații private sau să corupă datele utilizatorului.
6363

6464
Exemplele acestor restricții sunt:
6565

66-
- JavaScript, pe o pagină web, nu poate citi/scrie fișiere arbitrare pe hard disk, nu le poate copia sau să execute programe. Nu are acces direct la funcțiile sistemului de operare.
66+
- JavaScript-ul de pe o pagină web nu poate citi/scrie fișiere arbitrare pe hard disk, nu le poate copia sau să execute programe. Nu are acces direct la funcțiile sistemului de operare.
6767

6868
Browserele moderne îi permit să lucreze cu fișiere, dar accesul este limitat și furnizat doar dacă utilizatorul realizează anumite acțiuni, cum ar fi "scăparea" unui fișier într-o fereastră de browser sau selectarea lui printr-un tag `<input>`.
6969

@@ -86,30 +86,32 @@ Sunt cel puțin *trei* lucruri imporante în legătură cu JavaScript:
8686
```compare
8787
+ Integrare completă cu HTML/CSS.
8888
+ Lucrurile simple sunt făcute simplu.
89-
+ Este suportat de către toate browserele majore și este activat în mod implicit.
89+
+ Este suportat de toate browserele majore și activat în mod implicit.
9090
```
91-
JavaScript este singura tehnologie browser care combină aceste 3 lucruri.
91+
JavaScript este singura tehnologie browser care combină aceste trei lucruri.
9292

9393
Asta e ceea ce face JavaScript unic. De aceea este cea mai răspândită unealtă pentru crearea de interfețe pentru browser.
9494

95-
Acestea fiind zise JavaScript permite de asemenea crearea serverlor, aplicațiilor mobile etc.
95+
Acestea fiind spuse, JavaScript permite de asemenea crearea serverlor, aplicațiilor mobile etc.
9696

9797
## Limbaje "peste" JavaScript
9898

9999
Sintaxa JavaScript-ului nu se potrivește cerințelor fiecăruia. Persoane diferite vor diferite feature-uri.
100100

101101
Acest lucru este de așteptat, pentru că proiectele și cerințele sunt diferite pentru fiecare.
102102

103-
Așa că recent a apărut o pletoră de limbaje noi, care sunt *transpilate*(convertite) în JavaScript, înainte ca ele să ruleze în browser.
103+
Așa că, recent au apărut o pletoră de limbaje noi, care sunt *transpiled*(convertite) în JavaScript înainte ca ele să ruleze în browser.
104104

105105
Uneltele moderne fac transpilarea foarte rapidă și transparentă, permițând defapt dezvoltatorilor să codeze în alt limbaj și să auto convertească codul în cod "sub capotă"(under the hood).
106106

107107
Exemple de astfel de limbaje:
108108

109-
- [CoffeeScript](http://coffeescript.org/) este un "zahăr sintactic" pentru JavaScript, el introduce sintaxă mai scurtă, permițând scrierea de cod mai clar și mai precis. De obicei dezvoltatorii Ruby îl plac.
109+
- [CoffeeScript](http://coffeescript.org/) este un "zahăr sintatic" pentru JavaScript. El introduce sintaxă mai scurtă, permițându-ne să scrim cod mai clar și mai precis. De obicei dezvoltatorii Ruby îl plac.
110110
- [TypeScript](http://www.typescriptlang.org/) este concentrat pe adăugarea de "tipizare strictă de date", pentru a simplifica dezvoltarea și suportul sistemelor complexe. Este dezvoltat de Microsoft.
111-
- [Flow](http://flow.org/) adaugă tipizarea datelor, dar într-un mod diferit. Dezvoltate de Facebook.
112-
- [Dart](https://www.dartlang.org/) este un limbaj standalone care are propriul său motor care rulează în medii non-browser(precum aplicațiile mobile). A fost oferit inițial de către Google ca și un înlocuitor pentru JavaScript, dar de acum browserele necesită ca acesta să fie transpilat în JavaScript la fel ca cele de mai sus.
111+
- [Flow](http://flow.org/) de asemeni adaugă data typing, dar într-un mod diferit. Dezvoltat de Facebook.
112+
- [Dart](https://www.dartlang.org/) este un limbaj standalone care are propriul său motor care rulează în medii non-browser(precum aplicațiile mobile), dar deasemeni poate fi transpiled în JavaScript. Dezvoltat de Google.
113+
- [Brython](https://brython.info/) este un transpiler Python în JavaScript care permite scrierea aplicațiilor în Python pur fără Javascript.
114+
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) este un limbaj de programare modern, concis și sigur care țintește browser-ul sau Node.
113115

114116
Există mai multe. Desigur, chiar dacă folosim unul dintre aceste limbaje, ar trebui de asemenea să știm JavaScript, pentru a înțelege cu adevărat ce facem.
115117

1-js/01-getting-started/2-manuals-specifications/article.md

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,23 @@ Această carte este un *tutorial*. Are ca obiectiv să te ajute să înveți tre
55

66
## Specificații
77

8-
**Specificația ECMA-262** conține cea mai în profunzime, detaliată și formalizată informație despre JavaScript. Aceasta definește limbajul.
8+
[Specificația ECMA-262](https://www.ecma-international.org/publications/standards/Ecma-262.htm) conține cea mai în profunzime, detaliată și formalizată informație despre JavaScript. Aceasta definește limbajul.
99

1010
Dar fiind atât de formalizată, este grea de înțeles la început. Deci dacă ai nevoie de cea mai de încredere sursă de informație despre detaliile limbajului, specificațiile sunt locul potrivit. Dar nu sunt pentru uzul obișnuit.
1111

12-
Ultima schiță este la <https://tc39.es/ecma262/>.
12+
O nouă versiune a specificației este lansată în fiecare an. Printre aceste lansări, cea mai recentă schiță a specificației este la <https://tc39.es/ecma262/>.
1313

1414
Pentru a citi despre noile caracteristici avansate, incluzând acelea care sunt "aproape standard" (așa-numita "etapă a treia"), vezi propunerile la <https://github.com/tc39/proposals>.
1515

1616
De asemenea, dacă programezi pentru browser, atunci sunt și alte specificații care sunt abordate în [partea a doua](info:browser-environment) a tutorialului.
1717

1818
## Manuale
1919

20-
- **MDN (Mozilla) JavaScript Reference** este un manual cu exemple și alte informații. Este bun pentru a obține informații mult mai profunde despre funcții individuale ale limbajului, metode etc.
20+
- **MDN (Mozilla) JavaScript Reference** este manualul principal cu exemple și alte informații. Este minunat pentru a obține informații mai profunde despre funcții individuale ale limbajului, metode etc.
2121

2222
Poate fi găsit la <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
23-
24-
Deși, adeseori cel mai bine este să cauți pe internet. Doar folosește "MDN [term]" în query, e.g. <https://google.com/search?q=MDN+parseInt> pentru a căuta funcția `parseInt`.
25-
26-
- **MSDN** – manual de la Microsoft cu o multitudine de informații, inclusiv JavaScript (adeseori menționat ca JScript). Dacă cineva are nevoie de ceva specific pentru Internet Explorer, cel mai bine este să vadă: <http://msdn.microsoft.com/>.
2723

28-
De asemenea, putem căuta pe internet fraze de genul "RegExp MSDN" or "RegExp MSDN jscript".
24+
Cu toate acestea, de cele mai multe ori este mai bine să facem o căutare pe internet. Folosiți doar "MDN [termen]" în query, e.g. <https://google.com/search?q=MDN+parseInt> pentru a căuta funcția `parseInt`.
2925

3026
## Tabele de compatibilitate
3127

@@ -36,6 +32,6 @@ Pentru a vedea suportul acestora printre browsere și alte motoare vezi:
3632
- <http://caniuse.com> - tabele pentru suport per-caracteristică, e.g. pentru a vedea ce motoare suportă funcțiile moderne de criptografie: <http://caniuse.com/#feat=cryptography>.
3733
- <https://kangax.github.io/compat-table> - un tabel cu caracteristicile limbajului și motoarele ce le suportă sau nu.
3834

39-
Toate aceste resurse sunt utile de în dezvoltarea din viața reală, conținând informații valoroase despre detaliile limbajului, suportul acestora etc.
35+
Toate aceste resurse sunt utile pentru dezvoltarea din viața reală, conținând informații valoroase despre detaliile limbajului, suportul acestora etc.
4036

4137
Te rugăm să îți amintești de ele (sau de acestă pagină) pentru cazurile în care ai nevoie de informații mai profunde despre o caracteristică particulară.

1-js/01-getting-started/3-code-editors/article.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Un IDE încarcă proiectul (pot fi mai multe fișiere), permite navigarea între
1313
Dacă nu ai selectat până acum un IDE, uită-te la următoarele variante:
1414

1515
- [Visual Studio Code](https://code.visualstudio.com/) (cross-platform, free).
16-
- [Netbeans](http://netbeans.org/) (plătit).
16+
- [WebStorm](https://www.jetbrains.com/webstorm/) (cross-platform, plătit).
1717

1818
Pentru Windows există de asemenea un editor "Visual Studio", a nu se confunda cu "Visual Studio Code". "Visual Studio" este un editor doar pentru Windows, plătit dar puternic, foarte potrivit pentru platforma .NET. O versiune gratuită al lui este [Visual Studio Community](https://www.visualstudio.com/vs/community/).
1919

@@ -23,15 +23,14 @@ Multe IDE-uri sunt plătite dar au o perioadă de încercare. Costul lor este î
2323

2424
"Editoarele de categorie ușoară" nu sunt la fel de puternice precum IDE-urile, dar sunt rapide, elegante și simple.
2525

26-
Sunt de obicei folosite pentru a deschide și edita un fișier, instant.
26+
Ele sunt în principal folosite pentru a deschide și edita un fișier, instant.
2727

2828
Diferența majoră dintre un editor de "categorie ușoară" și un "IDE" este că un IDE funcționează la un nivel de proiect, așa că acesta încarcă mult mai multe date încă de la început, analizează structura proiectului dacă este necesar, ș.a.m.d. Un editor de categorie ușoară este mult mai rapid dacă avem nevoie doar de un fișier.
2929

3030
În practică, editoarele de categorie ușoară pot avea multe plugin-uri, inclusiv analizatoare de sintaxă la nivel de director sau autocompletatoare, așadar nu este o graniță strictă între un editor de categorie ușoară și un IDE.
3131

32-
Următoarele opțiuni merită atenția ta:
32+
Sunt multe opțiuni, spre exemplu:
3333

34-
- [Atom](https://atom.io/) (cross-platform, gratuit).
3534
- [Sublime Text](http://www.sublimetext.com) (cross-platform, shareware).
3635
- [Notepad++](https://notepad-plus-plus.org/) (Windows, gratuit).
3736
- [Vim](http://www.vim.org/) și [Emacs](https://www.gnu.org/software/emacs/) sunt de asemenea utile dacă știi cum să le folosești.
@@ -40,6 +39,11 @@ Următoarele opțiuni merită atenția ta:
4039

4140
Editoarele din lista de mai sus sunt cele pe care fie eu sau prietenii mei, pe care îi consider dezvoltatori buni, le-am folosit pentru un timp îndelungat și suntem mulțumiți de ele.
4241

43-
Există și alte editoare grozave în lume. Te rog alege un editor care îți place cel mai mult.
42+
Există și alte editoare grozave în lumea asta mare. Te rog alege un editor care îți place cel mai mult.
4443

4544
Alegerea unui editor, ca a oricărui alt tool, este individuală și depinde de proiectele tale, obiceiurile și preferințele personale.
45+
46+
The author's personal opinion:
47+
48+
- I'd use [Visual Studio Code](https://code.visualstudio.com/) if I develop mostly frontend.
49+
- Otherwise, if it's mostly another language/platform and partially frontend, then consider other editors, such as XCode (Mac), Visual Studio (Windows) or Jetbrains family (Webstorm, PHPStorm, RubyMine etc, depending on the language).

1-js/01-getting-started/4-devtools/article.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,15 @@ Aspectul exact al uneltelor de dezvoltare depinde de versiunea de Chrome folosit
2929
- Aici vedem mesajul colorat în roșu. În acest caz, scriptul conține o comandă necunoscută, "lalala".
3030
- În partea dreaptă se află un link către sursa `bug.html:12`, cu numărul liniei pe care a apărut eroarea.
3131

32-
Sub mesajul de eroare se află un simbol `>` albastru. El marchează o "linie de comandă" unde putem introduce comenzi JavaScript. Apăsați `key:Enter` ca să le rulați (`key:Shift+Enter` pentru a introduce comenzi pe mai multe linii).
32+
Sub mesajul de eroare, se află un simbol `>` albastru. El marchează un "command line" unde putem introduce comenzi JavaScript. Apăsați `key:Enter` ca să le rulați.
3333

3434
Pentru moment putem vedea erorile și asta e suficient pentru început. Vom reveni mai târziu la uneltele de dezvoltare și vom detalia depanarea în capitolul <info:debugging-chrome>.
3535

36+
```smart header="Multi-line input"
37+
Usually, when we put a line of code into the console, and then press `key:Enter`, it executes.
38+
39+
To insert multiple lines, press `key:Shift+Enter`. This way one can enter long fragments of JavaScript code.
40+
```
3641

3742
## Firefox, Edge, și altele
3843

@@ -50,12 +55,6 @@ Deschideți preferințele (Preferences) și mergeți în secțiunea de setări a
5055

5156
Acum, cu tastele `key:Cmd+Opt+C` puteți afișa sau ascunde consola. De asemenea, în meniul principal a apărut opțiunea "Develop". Are multe comenzi și opțiuni.
5257

53-
```smart header="Multi-line input"
54-
În mod obișnuit, când introducem o linie de cod în consolă și apoi apăsăm `key:Enter`, codul se execută.
55-
56-
Pentru a introduce mai multe linii, apăsați `key:Shift+Enter`. În acest fel oricine poate insera fragmente lungi de cod JavaScript.
57-
```
58-
5958
## Rezumat
6059

6160
- Uneltele de dezvoltare ne permit să vedem erori, să executăm comenzi, să evaluăm variabile și multe altele.

1-js/01-getting-started/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
# An introduction
1+
# O introducere
22

3-
About the JavaScript language and the environment to develop with it.
3+
Despre limbajul JavaScript și mediul de dezvoltare cu acesta.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!DOCTYPE html>
2+
<html>
3+
4+
<body>
5+
6+
<script>
7+
alert( "I'm JavaScript!" );
8+
</script>
9+
10+
</body>
11+
12+
</html>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
[html src="index.html"]

1-js/02-first-steps/01-hello-world/article.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ So first, let's see how we attach a script to a webpage. For server-side environ
99

1010
## The "script" tag
1111

12-
JavaScript programs can be inserted into any part of an HTML document with the help of the `<script>` tag.
12+
JavaScript programs can be inserted almost anywhere into an HTML document using the `<script>` tag.
1313

1414
For instance:
1515

@@ -46,7 +46,7 @@ The `<script>` tag contains JavaScript code which is automatically executed when
4646
The `<script>` tag has a few attributes that are rarely used nowadays but can still be found in old code:
4747

4848
The `type` attribute: <code>&lt;script <u>type</u>=...&gt;</code>
49-
: The old HTML standard, HTML4, required a script to have a `type`. Usually it was `type="text/javascript"`. It's not required anymore. Also, the modern HTML standard totally changed the meaning of this attribute. Now, it can be used for JavaScript modules. But that's an advanced topic; we'll talk about modules in another part of the tutorial.
49+
: The old HTML standard, HTML4, required a script to have a `type`. Usually it was `type="text/javascript"`. It's not required anymore. Also, the modern HTML standard totally changed the meaning of this attribute. Now, it can be used for JavaScript modules. But that's an advanced topic, we'll talk about modules in another part of the tutorial.
5050

5151
The `language` attribute: <code>&lt;script <u>language</u>=...&gt;</code>
5252
: This attribute was meant to show the language of the script. This attribute no longer makes sense because JavaScript is the default language. There is no need to use it.
@@ -60,7 +60,7 @@ Comments before and after scripts.
6060
//--></script>
6161
```
6262

63-
This trick isn't used in modern JavaScript. These comments hid JavaScript code from old browsers that didn't know how to process the `<script>` tag. Since browsers released in the last 15 years don't have this issue, this kind of comment can help you identify really old code.
63+
This trick isn't used in modern JavaScript. These comments hide JavaScript code from old browsers that didn't know how to process the `<script>` tag. Since browsers released in the last 15 years don't have this issue, this kind of comment can help you identify really old code.
6464

6565

6666
## External scripts
@@ -73,12 +73,12 @@ Script files are attached to HTML with the `src` attribute:
7373
<script src="/path/to/script.js"></script>
7474
```
7575

76-
Here, `/path/to/script.js` is an absolute path to the script from the site root. One can also provide a relative path from the current page. For instance, `src="script.js"` would mean a file `"script.js"` in the current folder.
76+
Here, `/path/to/script.js` is an absolute path to the script from the site root. One can also provide a relative path from the current page. For instance, `src="script.js"`, just like `src="./script.js"`, would mean a file `"script.js"` in the current folder.
7777

7878
We can give a full URL as well. For instance:
7979

8080
```html
81-
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js"></script>
81+
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
8282
```
8383

8484
To attach several scripts, use multiple tags:

0 commit comments

Comments
 (0)