Skip to content

Commit 5e32abe

Browse files
authored
Merge branch 'master' into master
2 parents 3cb9cc3 + 870b29e commit 5e32abe

File tree

283 files changed

+5420
-2754
lines changed

Some content is hidden

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

283 files changed

+5420
-2754
lines changed

.github/FUNDING.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
github: iliakan

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

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,26 @@ The terms above are good to remember because they are used in developer articles
4646
4747
Engines sind kompliziert. Aber die Grundlagen sind einfach.
4848
49+
<<<<<<< HEAD
4950
1. Die Engine (eingebettet, wenn es sich um einen Browser handelt) liest ("parses") den Script.
5051
2. Danach wird der Script in die Maschinensprache übersetzt ("Kompilieren").
5152
3. Und zum Schluss wird der Maschienen Code ausgeführt, was ziemlich schnell passiert.
53+
=======
54+
1. The engine (embedded if it's a browser) reads ("parses") the script.
55+
2. Then it converts ("compiles") the script to machine code.
56+
3. And then the machine code runs, pretty fast.
57+
>>>>>>> d694e895efe89922a109702085b6ca1efeffea10
5258
5359
Die Engine wendet in jedem Schritt des Prozesses Optimierungen an. Es beobachtet sogar das kompilierte Skript, während es läuft, analysiert die Daten, die durch es fließen, und optimiert den Maschinencode basierend auf diesem Wissen weiter.
5460
```
5561

5662
## Was kann in-browser JavaScript tun?
5763

64+
<<<<<<< HEAD
5865
Modernes JavaScript ist eine "sichere" Programmiersprache. Es bietet keinen Low-Level-Zugriff auf Speicher oder CPU, da es ursprünglich für Browser erstellt wurde.
66+
=======
67+
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.
68+
>>>>>>> d694e895efe89922a109702085b6ca1efeffea10
5969
6070
Die Funktionen von JavaScript hängen stark von der Umgebung ab, in der es ausgeführt wird. Beispielsweise unterstützt [Node.js](https://wikipedia.org/wiki/Node.js) Funktionen, die es JavaScript z.B. ermöglichen, beliebige Dateien zu lesen oder zu schreiben, sowie Netzwerkanfragen durchzuführen.
6171

@@ -71,18 +81,23 @@ So ist beispielsweise In-Browser JavaScript in der Lage:
7181

7282
## Was kann JavaScript im Browser nicht tun?
7383

84+
<<<<<<< HEAD
7485
<<<<<<< HEAD
7586
Die Fähigkeiten von JavaScript im Browser sind aus Gründen der Sicherheit des Benutzers eingeschränkt. Ziel ist es, zu verhindern, dass eine bösartige Webseite auf private Informationen zugreift oder die Daten des Benutzers schädigt.
7687
=======
7788
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.
7889
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
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+
>>>>>>> d694e895efe89922a109702085b6ca1efeffea10
7993
8094
Beispiele für solche Beschränkungen sind:
8195

8296
- JavaScript auf einer Webseite darf keine beliebigen Dateien auf der Festplatte lesen/schreiben, sie kopieren oder Programme ausführen. Es hat keinen direkten Zugriff auf die Funktionen des Betriebssystems.
8397

8498
Moderne Browsers erlauben es mit Dateien zu arbeiten. Der Zugriff ist jedoch beschränkt und nur möglich wenn der Benutzer bestimmte Aktionen ausführt, z.B. die Datei in den Browser per "drag and drop" lädt oder sie via `<input>` tag auswählt.
8599

100+
<<<<<<< HEAD
86101
Es gibt auch Möglichkeiten mit der Kamera oder dem Mikrofon des Geräts zu interagieren. Dies benötigt aber die explizite Zustimmung des Benutzers. Deshalb kann eine JavaScript-enabled Website nicht heimlich die Webcam aktivieren, die Umgebung beobachten und die Informationen and die [NSA](https://en.wikipedia.org/wiki/National_Security_Agency) übermitteln.
87102
- Unterschiedliche Tabs und Fenster wissen in der Regel nicht voneinander. Es gibt jedoch Ausnahmen, bei welchen dies doch der Fall ist. Dies kann z.B. passieren, wenn durch JavaScript ein neues Fenster geöffnet wird. Aber selbst in diesem Fall kann es sein, dass JavaScript von einer Seite nicht auf die andere Seite zugreifen kann, wenn sie von verschiedenen Seiten (von einer anderen Domäne, einem anderen Protokoll oder Port) kommen.
88103

@@ -95,6 +110,19 @@ Obwohl es möglich ist, erfordert es eine ausdrückliche Zustimmung (ausgedrück
95110
![](limitations.svg)
96111

97112
Solche Einschränkungen bestehen nicht, wenn JavaScript außerhalb des Browsers, z.B. auf einem Server, verwendet wird. Moderne Browser erlauben auch Plugins/Erweiterungen, die unter Umständen nach erweiterten Rechten fragen.
113+
=======
114+
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).
115+
- 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).
116+
117+
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.
118+
119+
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.
120+
- 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.
121+
122+
![](limitations.svg)
123+
124+
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.
125+
>>>>>>> d694e895efe89922a109702085b6ca1efeffea10
98126
99127
## What makes JavaScript unique?
100128

@@ -115,20 +143,29 @@ JavaScript ist die einzige Browser-Technologie, die diese drei Dinge vereint.
115143

116144
Das macht JavaScript einzigartig. Deshalb ist es das am weitesten verbreitete Werkzeug zur Erstellung von Browser-Oberflächen.
117145

146+
<<<<<<< HEAD
118147
Trotzdem erlaubt JavaScript auch die Erstellung von Servern, mobilen Anwendungen, etc.
148+
=======
149+
That said, JavaScript can be used to create servers, mobile applications, etc.
150+
>>>>>>> d694e895efe89922a109702085b6ca1efeffea10
119151
120152
## Sprachen "über" JavaScript
121153

122154
Die Syntax von JavaScript ist nicht für jeden geeignet. Verschiedene Menschen wollen unterschiedliche Funktionen.
123155

124156
Das ist zu erwarten, denn Projekte und Anforderungen sind für jeden anders.
125157

158+
<<<<<<< HEAD
126159
So sind vor kurzem eine Fülle neuer Sprachen erschienen, die in JavaScript *transpiled* (konvertiert) werden, bevor sie im Browser laufen.
160+
=======
161+
So, recently a plethora of new languages appeared, which are *transpiled* (converted) to JavaScript before they run in the browser.
162+
>>>>>>> d694e895efe89922a109702085b6ca1efeffea10
127163
128164
Moderne Werkzeuge machen die Transpilation sehr schnell und transparent und erlauben es den Entwicklern tatsächlich, in einer anderen Sprache zu programmieren und diese "unter der Haube" automatisch zu konvertieren.
129165

130166
Beispiele für solche Sprachen sind:
131167

168+
<<<<<<< HEAD
132169
<<<<<<< HEAD
133170
- [CoffeeScript](http://coffeescript.org/) ist ein "syntactic sugar" für JavaScript. Es führt eine kürzere Syntax ein, was uns erlaubt, klareren und präziseren Code zu schreiben. Usually, Ruby devs like it.
134171
- [TypeScript](http://www.typescriptlang.org/) ist darauf konzentriert "strict data typing" hinzuzufügen. TypeScript verfolg das Ziel den Entwicklungsprozess und den Support für komplexe Systeme zu vereinfachen. Die Sprache wurde von Microsoft entwickelt.
@@ -138,12 +175,21 @@ Beispiele für solche Sprachen sind:
138175
- [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.
139176
- [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.
140177
- [Flow](http://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
178+
=======
179+
- [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.
180+
- [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.
181+
- [Flow](https://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
182+
>>>>>>> d694e895efe89922a109702085b6ca1efeffea10
141183
- [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.
142184
- [Brython](https://brython.info/) is a Python transpiler to JavaScript that enables the writing of applications in pure Python without JavaScript.
143185
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) is a modern, concise and safe programming language that can target the browser or Node.
144186
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
145187
188+
<<<<<<< HEAD
146189
Es gibt noch mehr. Auch wenn wir eine der transpilierten Sprachen verwenden sollten wir auch JavaScript trozdem kennen. Es ist wichtig zu verstehen, was im Hintergrund passiert und was wir eigentlich tun.
190+
=======
191+
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.
192+
>>>>>>> d694e895efe89922a109702085b6ca1efeffea10
147193
148194
## Zusammenfassung
149195

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11

22
# Handbücher und Spezifikationen
33

4+
<<<<<<< HEAD
45
Dieses Buch ist ein *Tutorial*. Es soll dir helfen, die Sprache nach und nach zu erlernen. Aber sobald du mit den Grundlagen vertraut bist, wirst du andere Quellen benötigen.
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+
>>>>>>> d694e895efe89922a109702085b6ca1efeffea10
59
610
## Spezifikation
711

812
[The ECMA-262 specification](https://www.ecma-international.org/publications/standards/Ecma-262.htm) enthält die ausführlichsten, detailliertesten und formalisiertesten Informationen über JavaScript. Es definiert die Sprache.
913

1014
Die Tatsache dass es so festgschrieben ist, macht es am Anfgan etwas schwer verständlich. Wenn du also die vertrauenswürdigste Informationsquelle benötigst, dann ist die Spezifikation dir richtige Stelle. Sie ist jedoch nicht für den alltäglichen Gebrauch passend.
1115

16+
<<<<<<< HEAD
1217
Eine neue Spezifikationsversion wird jedes Jahr veröffentlicht. In der Zwischenzeit kann der letzte entwurf unter <https://tc39.es/ecma262/> gefunden werden.
18+
=======
19+
A new specification version is released every year. Between these releases, the latest specification draft is at <https://tc39.es/ecma262/>.
20+
>>>>>>> d694e895efe89922a109702085b6ca1efeffea10
1321
1422
Um mehr über die neuen bleeding-edge features, einschliesslich derjendigen, die "fast Standard" sind ("stage 3" genannt), siehe Vorschläge unter <https://github.com/tc39/proposals>.
1523

@@ -27,6 +35,7 @@ Also, if you're developing for the browser, then there are other specifications
2735
- **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.
2836
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
2937
38+
<<<<<<< HEAD
3039
Man kann es unter <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference> finden.
3140

3241
<<<<<<< HEAD
@@ -39,16 +48,28 @@ Also, if you're developing for the browser, then there are other specifications
3948
=======
4049
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 `parseInt` function.
4150
>>>>>>> a82915575863d33db6b892087975f84dea6cb425
51+
=======
52+
You can find it at <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
53+
54+
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.
55+
>>>>>>> d694e895efe89922a109702085b6ca1efeffea10
4256
4357
## Kompatibilitäts-Tabellen
4458

4559
JavaScript ist eine Entwicklungssprache, neue Funktionen werden regelmäßig hinzugefügt.
4660

4761
Um ihre Unterstützung unter den Browser-basierten und anderen Engines zu sehen, siehe:
4862

63+
<<<<<<< HEAD
4964
- <http://caniuse.com> - pro Feature-Tabellen der Unterstützung, z.B. um zu sehen, welche Engines moderne Kryptographie-Funktionen unterstützen: <http://caniuse.com/#feat=cryptography>.
5065
- <https://kangax.github.io/compat-table> - eine Tabelle mit Sprachfunktionen und Engines, die diese unterstützen oder nicht unterstützen.
5166

5267
All diese Ressourcen sind in der realen Entwicklung nützlich, da sie wertvolle Informationen über sprachliche Details, ihre Unterstützung usw. enthalten.
68+
=======
69+
- <https://caniuse.com> - per-feature tables of support, e.g. to see which engines support modern cryptography functions: <https://caniuse.com/#feat=cryptography>.
70+
- <https://kangax.github.io/compat-table> - a table with language features and engines that support those or don't support.
71+
72+
All these resources are useful in real-life development, as they contain valuable information about language details, their support, etc.
73+
>>>>>>> d694e895efe89922a109702085b6ca1efeffea10
5374
5475
Bitte merke dir diese (oder diese Seite) für die Fälle, in denen du vertiefte Informationen über eine bestimmte Funktion benötigst.

0 commit comments

Comments
 (0)