ECMAScript: Unterschied zwischen den Versionen
MTm (Diskussion | Beiträge) |
Kowa (Diskussion | Beiträge) |
||
| (102 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
{{Qualität | {{Qualität | ||
|correctness = | |correctness = 2 | ||
|extent = | |extent = 2 | ||
|numberOfReferences = 3 | |numberOfReferences = 3 | ||
|qualityOfReferences = 4 | |qualityOfReferences = 4 | ||
|conformance = 4 | |conformance = 4 | ||
|annotation1 = Im Artikel sind viele weiterführenden Verweise angegeben. Diese werden jeweils zu Beginn des | |annotation1 = Im Artikel sind viele weiterführenden Verweise angegeben. Diese werden jeweils zu Beginn des Wintersemesters aktualisiert. | ||
|annotation2 = Derzeit sind viele Informationen veraltet. '''Dieser Artikel muss grundlegend überarbeitet werden.''' | |||
}} | }} | ||
=Definition= | ==Definition== | ||
[[ | [[ECMAScript]] (JavaScript) ist eine [[Dynamische Typisierung|dynamisch typisierte]] [[Skriptsprache]], | ||
die [[Objektorientierte Programmierung|objektorientierte]], [[Funktionale Programmierung|funktionale]] | die [[Objektorientierte Programmierung|objektorientierte]], [[Funktionale Programmierung|funktionale]] | ||
und auch das [[Imperative Programmierung|imperative]] Programmierung unterstützt. | und auch das [[Imperative Programmierung|imperative]] Programmierung unterstützt. | ||
=Anmerkungen= | ==Anmerkungen== | ||
ECMAScript wird von den meisten [[Web-Browser]]n unterstützt, um HTML-Dokumente dynamisch erzeugen | |||
und verändern zu können. Es gibt | und verändern zu können (eine Ausnahme ist [[Lynx]], ein textbasierter Webbrowser für den Einsatz in reinen Text-Terminals ohne Maus). Es gibt darüber hinaus auch serverseitige JavaScript-Frameworks (z.B. [[Node.js]]). | ||
JavaScript wurde unter dem Namen ECMAScript standardisiert: | JavaScript wurde unter dem Namen ECMAScript von [http://www.ecma-international.org/ Ecma International] standardisiert: | ||
* | * [http://www.ecma-international.org/ecma-262/8.0/ ECMAScript® 2017 (ECMAScript 8)] (wird zu Teilen [http://kangax.github.io/compat-table/es2016plus/ durch aktuelle Browser unterstützt]) | ||
* [http://www.ecma-international.org/ecma-262/7.0/ ECMAScript® 2016 (ECMAScript 7)] (wird zu großen Teilen [http://kangax.github.io/compat-table/es2016plus/ durch aktuelle Browser unterstützt]) | |||
* | * [http://www.ecma-international.org/ecma-262/6.0/ ECMAScript® 2015 (ECMAScript 6)] (wird zu großen Teilen [https://kangax.github.io/compat-table/es6/ durch aktuelle Browser unterstützt]) | ||
* JavaScript 1.8.x (HTML5): Standard [http://www.ecma-international.org/ecma-262/5.1/ ECMAScript Language Specification Edition 5.1 (June 2011)] | |||
* JavaScript 1.5: Standard: ECMAScript 3rd Edition Compact Profile (June 2001) | |||
= | == Beispiele aus der Vorlesung == | ||
Siehe [[ECMAScript/Beispiele]] | |||
==Siehe auch== | |||
====Utilities | ===JavaScript-Dokumentation und Tutorials=== | ||
* [http://wiki.ecmascript.org/ ECMAScript-Wiki] | |||
* [https://developer.mozilla.org/en/JavaScript/Reference Mozilla Developer Network] (sehr gute und aktuelle Dokumentation zu JavaScript) | |||
* [http://eloquentjavascript.net/ Eloquent JavaScript] – Für Anfänger. | |||
* [http://bonsaiden.github.io/JavaScript-Garden/ JavaScript Garden] – Eine stetig wachsende Sammlung von JavaScript-Eigenheiten und Best Practices | |||
* [http://addyosmani.com/resources/essentialjsdesignpatterns/book/ Learning JavaScript Design Patterns] – empfehlenswert | |||
* [http://addyosmani.com/largescalejavascript/ Patterns For Large-Scale JavaScript Application Architecture] – Auch lesenswert | |||
* [http://developer.yahoo.com/performance/rules.html Regeln zur Performanz-Steigerung] | |||
* {{Quelle|Widjaja, S. (2012): I will Survive}} | |||
===Style Guides=== | |||
* [https://github.com/airbnb/javascript Airbnb JavaScript Style Guide] | |||
* [[Multimedia-Programmierung: Style Guide]] | |||
===Frameworks für die JavaScript-Entwicklung=== | |||
* [http://www.eclipse.org/ Eclipse] mit JavaScript- und Web-Plugins (insbesondere [http://www.eclipse.org/downloads/packages/eclipse-ide-javascript-web-developers/indigor Eclipse IDE for JavaScript Web Developers]) – Ursprünglich eine Java-Entwicklungsumgebung, heute eine sehr weit verbreitete Universal-Entwicklungsumgebung. | |||
* [http://www.jetbrains.com/webstorm/ WebStorm] – Ein Ableger der Java-Entwicklungsumgebung IntelliJ IDEA von JetBrains. Für kommerzielle Projekte ist WebStorm kostenpflichtig. | |||
* [https://www.meteor.com/ Meteor] (auch in Verbindung mit [http://blog.jetbrains.com/webstorm/2014/09/meteor-support-in-webstorm-9/ WebStorm]) | |||
* [http://netbeans.org/ Netbeans IDE] – Eine weitere Java-Entwicklungsumgebung, die ebenfalls hervorragend zur Entwicklung von Web-Anwendungen geeignet ist. | |||
* [http://www.aptana.com/ Aptana Studio 3] – Apatana Studio kann sowohl als Standalone-Version (basierend auf Eclipse) als auch als Eclipse-Plugin [http://www.aptana.com/products/studio3/download heruntergeladen] werden. | |||
* [http://www.appcelerator.com/ Appcelerator Titanium] – Basiert ebenfalls auf Eclipse, dient zur Entwicklung von nativen iOS- und Adroid-Apps auf Basis von HTML5/CSS/JavaScript. | |||
* [https://www.adobe.com/de/products/edge-animate.html Adobe Edge Animate] ist ein Werkzeug zur Erstellung von HTML5/CSS3/JavaScript-Animationen, wobei die Zeilleisten-Konzepte an [[Adobe Flash]] und [[Adobe After Effects]] erinnern. | |||
* [https://docs.microsoft.com/de-de/visualstudio/ Visual Studio] | |||
===ECMAScript 6=== | |||
ECMAScript 6 wurde bereits weitestgehend fertiggestellt. | |||
*[http://kangax.github.io/compat-table/es6/ ECMAScript-6-Kompatibilitäts-Tabelle] | |||
====Tools==== | |||
Es gibt Tools, um ECMAScript 6 in ECMAScript 5 zu übersetzen und jetzt schon von den Erweiterungen | |||
zu profitieren: | |||
* [https://github.com/addyosmani/es6-tools ECMAScript 6 Tools] | |||
* [http://www.typescriptlang.org TypeScript] | |||
====Generators==== | |||
*[http://www.2ality.com/2013/06/iterators-generators.html Axel Rauschmayer: Iterators and generators in ECMAScript 6 ] | |||
*[http://www.2ality.com/2014/08/formatting-generator-asterisk.html Axel Rauschmayer: How should I format the ECMAScript 6 generator asterisk? ] | |||
====Promises==== | |||
*[https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Promise MDB web doc: Promise] | |||
*[http://www.html5rocks.com/en/tutorials/es6/promises/ html5rocks: JavaScript Promises] | |||
*[http://www.peterkroener.de/ecmascript-6-promises/ Peter Körner: ECMAScript 6: Promises] | |||
===Utilities=== | |||
* [https://github.com/sergeche/eclipse-zencoding Zen-Coding mit Eclipse] – Ermöglicht es, Codesnippets zu generieren. Eine kleine Anleitung für Aptana: http://nooshu.com/aptana-on-steroids-using-zen-coding. Zen-Coding ist auch für andere Editoren und Entwicklungsumgebungen [http://code.google.com/p/zen-coding/downloads/list erhältlich] (wie beispielsweise für [[Notepad++]] oder [[Dreamweaver]]). | * [https://github.com/sergeche/eclipse-zencoding Zen-Coding mit Eclipse] – Ermöglicht es, Codesnippets zu generieren. Eine kleine Anleitung für Aptana: http://nooshu.com/aptana-on-steroids-using-zen-coding. Zen-Coding ist auch für andere Editoren und Entwicklungsumgebungen [http://code.google.com/p/zen-coding/downloads/list erhältlich] (wie beispielsweise für [[Notepad++]] oder [[Dreamweaver]]). | ||
====Komprimierung und Reduktion der Anzahl der Dateien==== | |||
* [https://webpack.github.io/ WebPack] | |||
* [http://yui.github.io/yuicompressor/ YUI Compressor] | |||
* [https://www.npmjs.com/package/cssmin cssmin] und [https://github.com/mishoo/UglifyJS2 UglifyJS2] (mittels [https://gruntjs.com/ Grunt]) | |||
===Erstellung von App/Anwendungs-Dokumentationen=== | |||
* '''Allgemeine Dokumentation''': Sphinx (http://sphinx-doc.org/). Auch hier kann das Ergebnis durch ein gutes Theme deutlich aufgebessert werden: https://github.com/snide/sphinx_rtd_theme. (siehe z.B. http://www.plasticjs.org/docs/ ) | |||
* '''JSON Schema''': Wenn man [[JSON Schema]] oder Ähnliches verwendet, lassen sich Teile der Dokumentation relativ einfach automatisch generieren. (siehe z.B. http://www.plasticjs.org/docs/displayModules/advancedTable.html#available-options ) | |||
* [[JSDoc]] | |||
** Etwas schlecht dokumentiert und ein wenig oldschool ist [http://usejsdoc.org/ @use JSDoc] – Mit einem zusätzlichem Theme und ein paar Einstellung lässt sich daraus eine sehr schöne Doku generieren (siehe z.B. http://plasticjs.org/devdocs/ ) | |||
** [http://code.google.com/p/jsdoc-toolkit/ JSDoc ToolKit] – Ein weiteres JSDoc-Tool. | |||
** [https://github.com/jsdoc3/jsdoc3.github.com JSDoc 3] – Ein drittes JSDoc-Tool. | |||
** [https://github.com/VlVl/adwiki ADWiki] – Ein viertes JSDoc-Tool. | |||
** JSDoc-Dokumentation: ''Foundations of Ajax'' von Apress, ISBN 1-59059-582-3 | |||
Viele Frameworks und Editoren unterstützen JSDoc von Haus aus: | |||
* [[WebStorm]] | |||
* [[NetBeans]] | |||
* [[RubyMine]] | |||
* [[Visual Studio]] | |||
* Für [[Eclipse]] gibt es eine [https://wiki.eclipse.org/JSDT JSDoc-Extension] | |||
* Für [[Adobe Edge]] gibt es eine [JSDoc-Extension] | |||
* [[Aptana Studio]] unterstützt ScriptDoc | |||
* Editor [[Sublime Text]] mit Hilde des DocBlockr-Plugins | |||
* Mozilla-Inline-Editor [http://mozile.mozdev.org/0.8/doc/jsdoc/index.html Mozile] | |||
* [https://developers.google.com/closure/utilities/ Closure Linter] und [https://developers.google.com/closure/ Closure Compiler] von Google | |||
===JavaScript-Cross-Compiler=== | ===JavaScript-Cross-Compiler=== | ||
[[Cross-Compiler]] erzeugen Compilate für bestimmte Zielumgebungen, die sich von der Umgebung, auf dem der Cross-Compiler läuft, unterscheiden. | [[Cross-Compiler]] erzeugen Compilate für bestimmte Zielumgebungen, die sich von der Umgebung, auf dem der Cross-Compiler läuft, unterscheiden. | ||
Ein Spezialfall sind Cross-Compiler, Quellcode einer Programmiersprache in einen Quellcode einer anderen Programmiersprache übersetzen. | Ein Spezialfall sind Cross-Compiler, die Quellcode einer Programmiersprache in einen Quellcode einer anderen Programmiersprache übersetzen. | ||
Es gibt mehrere Cross-Compiler, die als Zielsprache (unter | Es gibt mehrere Cross-Compiler, die als Zielsprache (unter anderem) JavaScript unterstützen. | ||
* [https://developers.google.com/closure/compiler/?hl=de-D Google Closure Compiler] transformiert JavaScript in kompakteres JavaScript. | * [https://developers.google.com/closure/compiler/?hl=de-D Google Closure Compiler] transformiert JavaScript in kompakteres JavaScript. | ||
* [https://github.com/clojure/clojurescript/wiki ClojureScript] ([https://github.com/clojure/clojurescript Download]) transformiert die LISP-ähnliche Sprache[http://clojure.org/ Clojure] in JavaScript; der erzeugte Code ist mit dem „advanced compilation mode“ des [https://developers.google.com/closure/compiler/?hl=de-DE Google-Closure-Übersetzers] kompatibel. | * [https://github.com/clojure/clojurescript/wiki ClojureScript] ([https://github.com/clojure/clojurescript Download]) transformiert die LISP-ähnliche Sprache [http://clojure.org/ Clojure] in JavaScript; der erzeugte Code ist mit dem „advanced compilation mode“ des [https://developers.google.com/closure/compiler/?hl=de-DE Google-Closure-Übersetzers] kompatibel. | ||
* [http://haxe.org/ HaXe] ist eine funktionale Sprache, die in diverse Zielsprachen übersetzt werden kann: C++, Flash, JavaScript, Neko, PHP, Tamarin, NodeJS. | * [http://haxe.org/ HaXe] ist eine funktionale Sprache, die in diverse Zielsprachen übersetzt werden kann: C++, Flash, JavaScript, Neko, PHP, Tamarin, NodeJS. | ||
===Übersichten im Web=== | ===Übersichten im Web=== | ||
| Zeile 50: | Zeile 125: | ||
* [[WikipediaEN: Multiple phone web-based application framework|Multiple phone web-based application framework]] (Wikipedia EN) | * [[WikipediaEN: Multiple phone web-based application framework|Multiple phone web-based application framework]] (Wikipedia EN) | ||
== JavaScript-Bibliotheken== | ===Frameworks=== | ||
* [https://developers.google.com/closure/library/?hl=de-DE Google Closure Library], eine umfangreiche Cross-Browser-JavaScript-Bibliothek | * [https://github.com/aurelia/ Aurelia] | ||
* [http://mootools.net/ mootools] (Zitat: “MooTools is a compact, modular, Object-Oriented JavaScript framework”) | === JavaScript-Bibliotheken=== | ||
* [https://developers.google.com/closure/library/?hl=de-DE Google Closure Library], eine umfangreiche Cross-Browser-JavaScript-Bibliothek | |||
* [http://mootools.net/ mootools] (Zitat: “MooTools is a compact, modular, Object-Oriented JavaScript framework”), [http://mootools.net/core/ MooTools Core Builder], [http://mootools.net/more/ Mootools More Builder] | |||
* [http://www.prototypejs.org/ prototype] (Klassen, Ajax, Event Handling) | * [http://www.prototypejs.org/ prototype] (Klassen, Ajax, Event Handling) | ||
* [http://script.aculo.us/ script.aculo.us] (Erweiterung von Prototype um grafische Elemente; insb. integriert in [[Ruby on Rails]]) | |||
* [http://dojotoolkit.org/ Dojo Toolkit] (Klassen, JSON, Ajax und vieles mehr) | |||
* [http://yuilibrary.com/ Yahoo User Interface Library (YUI)] (JSON, JUnit, Klassen und vieles mehr) | |||
* [http://microjs.com/ microjs] (viele kleine Helferlein) | * [http://microjs.com/ microjs] (viele kleine Helferlein) | ||
* [http://bartaz.github.com/impress.js/ impress.js] (Vortragsfolien) | * [http://bartaz.github.com/impress.js/ impress.js] (Vortragsfolien) | ||
* [http://streamjs.org/ stream.js] (unendlich große Container, [[Lazy Binding]]) | * [http://streamjs.org/ stream.js] (unendlich große Container, [[Lazy Binding]]) | ||
* [http://raphaeljs.com/ Raphaël—JavaScript Library] (Vektorgrafiken) | * [http://raphaeljs.com/ Raphaël—JavaScript Library] (Vektorgrafiken) | ||
** [http://readysetraphael.com/ readysetraphael: SVG-zu-Raphaël-Konverter] | |||
** [http://toki-woki.net/p/SVG2RaphaelJS/ toki-woki: noch ein SVG-zu-Raphaël-Konverter] | |||
** [http://www.irunmywebsite.com/raphael/SVGTOHTML_LIVE.php SVGTOHTML_LIVE: noch ein SVG-zu-Raphaël-Konverter] | |||
* [http://processingjs.org/ Processing Library] | * [http://processingjs.org/ Processing Library] | ||
* [http://documentcloud.github.com/backbone/ backbone.js] (Framework für eine [[MVC]]-Struktur) | * [http://documentcloud.github.com/backbone/ backbone.js] (Framework für eine [[MVC]]-Struktur) | ||
* [http://requirejs.org/ require.js] (Script-Loader) | * [http://requirejs.org/ require.js] (Script-Loader) | ||
* [http:// | * [http://underscorejs.org/ underscore.js] (erweitert JS um einige Funktionen, kann auch neben jQuery oder backbone.js verwendet werden) | ||
===MVC=== | |||
* http://javascriptmvc.com | |||
**[http://javascriptmvc.com/builder.html JavaScriptMVC/JQueryMX] | |||
* http://backbonejs.org/ | |||
* http://emberjs.com/ | |||
* http://angularjs.org/ | |||
===Mobile=== | |||
* [http://jquerymobile.com/ jQuery Mobile] (Framework für mobile Webapps) | * [http://jquerymobile.com/ jQuery Mobile] (Framework für mobile Webapps) | ||
* [http://docs.sencha.com/ Sencha Libraries (Sencha Touch, Ext ...)] (Umfassende Libraries, vor allem für mobile Endgeräte) | |||
==== Android-Entwicklung ==== | |||
* http://blog.webducer.de/2011/09/android-neues-projekt-anlegen/ | |||
* [http://www.youtube.com/watch?v=uVqp1zcMfbE How to build Android App with HTML5/CSS/JavaScript] (Video) | |||
* Nexus S | |||
** http://nexusshacks.com/nexus-s-hacks/how-to-install-nexus-s-windows-usb-drivers/ | |||
** http://androiddrivers.net/samsung-android-drivers/download-nexus-s-drivers/ | |||
== | === Canvas === | ||
* [http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html Canvas API] | |||
* [http://www.nihilogic.dk/labs/canvas_sheet/HTML5_Canvas_Cheat_Sheet.pdf HTML5 Canvas Cheat Sheet] | |||
* [https:// | ===Game Engines=== | ||
* [https://github.com/bebraw/jswiki/wiki/Game-Engines Game Engines] | |||
== JavaScript- | === JavaScript-Templates=== | ||
* [ | * [https://developers.google.com/closure/templates/?hl=de-DE Google Closure Templates], ein Java/-JavaScript-Template-System, um server- und/oder client-seitig HTML-Templates zu erstellen. | ||
=== JavaScript-Server-Technologie=== | |||
== JavaScript-Testumgebungen == | siehe [[Node.js]] | ||
=== JavaScript-Testumgebungen === | |||
* [http://stackoverflow.com/questions/300855/looking-for-a-better-javascript-unit-test-tool Übersicht und Bewertung] (stackoverflow.com) | * [http://stackoverflow.com/questions/300855/looking-for-a-better-javascript-unit-test-tool Übersicht und Bewertung] (stackoverflow.com) | ||
* [[WikipediaEN:List_of_unit_testing_frameworks|Übersicht]] (Wikipedia EN) | * [[WikipediaEN:List_of_unit_testing_frameworks|Übersicht]] (Wikipedia EN) | ||
| Zeile 84: | Zeile 189: | ||
* [http://www.browserstack.com/ Browserstack] (alle Browser innerhalb eines Browsers testen - kostenpflichtig!) | * [http://www.browserstack.com/ Browserstack] (alle Browser innerhalb eines Browsers testen - kostenpflichtig!) | ||
* [http://slimerjs.org/ SlimerJS] | |||
== | === Responsive Webdesign === | ||
* http://www.elmastudio.de/webdesign/responsive-webdesign-2/ein-paar-notizen-zur-entwicklung-von-responsive-webdesigns/ | |||
* http://mobilehtml5.org/ | |||
== Beispiele == | === Beispiele === | ||
*http://skytechgeek.com/2012/01/30-best-html5-games-to-kill-your-boredom/ <br/> | *http://skytechgeek.com/2012/01/30-best-html5-games-to-kill-your-boredom/ <br/> | ||
*http://www.animaclock.com/ | *http://www.animaclock.com/ | ||
*http://joelb.me/scrollpath/ | *http://joelb.me/scrollpath/ | ||
= | ==== BigInt ==== | ||
<source lang="javascript"> | |||
5.10 + 10.20 === 15.30 → false | |||
let a = BigInt(2), b= 256n; | |||
console.log(a ** b); | |||
</source> | |||
</ | |||
[[Kategorie:JavaScript]] | [[Kategorie:JavaScript]] | ||
[[Kategorie:Glossar]] | [[Kategorie:Glossar]] | ||
[[en:JavaScript]] | [[en:JavaScript]] | ||
Aktuelle Version vom 27. März 2023, 15:42 Uhr
Dieser Artikel erfüllt die GlossarWiki-Qualitätsanforderungen nur teilweise:
| Korrektheit: 2 (teilweise überprüft) |
Umfang: 2 (wichtige Fakten fehlen) |
Quellenangaben: 3 (wichtige Quellen vorhanden) |
Quellenarten: 4 (sehr gut) |
Konformität: 4 (sehr gut) |
Im Artikel sind viele weiterführenden Verweise angegeben. Diese werden jeweils zu Beginn des Wintersemesters aktualisiert.
Derzeit sind viele Informationen veraltet. Dieser Artikel muss grundlegend überarbeitet werden.
Definition
ECMAScript (JavaScript) ist eine dynamisch typisierte Skriptsprache, die objektorientierte, funktionale und auch das imperative Programmierung unterstützt.
Anmerkungen
ECMAScript wird von den meisten Web-Browsern unterstützt, um HTML-Dokumente dynamisch erzeugen und verändern zu können (eine Ausnahme ist Lynx, ein textbasierter Webbrowser für den Einsatz in reinen Text-Terminals ohne Maus). Es gibt darüber hinaus auch serverseitige JavaScript-Frameworks (z.B. Node.js).
JavaScript wurde unter dem Namen ECMAScript von Ecma International standardisiert:
- ECMAScript® 2017 (ECMAScript 8) (wird zu Teilen durch aktuelle Browser unterstützt)
- ECMAScript® 2016 (ECMAScript 7) (wird zu großen Teilen durch aktuelle Browser unterstützt)
- ECMAScript® 2015 (ECMAScript 6) (wird zu großen Teilen durch aktuelle Browser unterstützt)
- JavaScript 1.8.x (HTML5): Standard ECMAScript Language Specification Edition 5.1 (June 2011)
- JavaScript 1.5: Standard: ECMAScript 3rd Edition Compact Profile (June 2001)
Beispiele aus der Vorlesung
Siehe ECMAScript/Beispiele
Siehe auch
JavaScript-Dokumentation und Tutorials
- ECMAScript-Wiki
- Mozilla Developer Network (sehr gute und aktuelle Dokumentation zu JavaScript)
- Eloquent JavaScript – Für Anfänger.
- JavaScript Garden – Eine stetig wachsende Sammlung von JavaScript-Eigenheiten und Best Practices
- Learning JavaScript Design Patterns – empfehlenswert
- Patterns For Large-Scale JavaScript Application Architecture – Auch lesenswert
- Regeln zur Performanz-Steigerung
- Widjaja (2012): Simon Widjaja; I will Survive; in: weave; Band: 2012; Nummer: 2; Seite(n): 86-90; Verlag: Page Verlag; Adresse: Hamburg; 2012; Quellengüte: 5 (Artikel)
Style Guides
Frameworks für die JavaScript-Entwicklung
- Eclipse mit JavaScript- und Web-Plugins (insbesondere Eclipse IDE for JavaScript Web Developers) – Ursprünglich eine Java-Entwicklungsumgebung, heute eine sehr weit verbreitete Universal-Entwicklungsumgebung.
- WebStorm – Ein Ableger der Java-Entwicklungsumgebung IntelliJ IDEA von JetBrains. Für kommerzielle Projekte ist WebStorm kostenpflichtig.
- Meteor (auch in Verbindung mit WebStorm)
- Netbeans IDE – Eine weitere Java-Entwicklungsumgebung, die ebenfalls hervorragend zur Entwicklung von Web-Anwendungen geeignet ist.
- Aptana Studio 3 – Apatana Studio kann sowohl als Standalone-Version (basierend auf Eclipse) als auch als Eclipse-Plugin heruntergeladen werden.
- Appcelerator Titanium – Basiert ebenfalls auf Eclipse, dient zur Entwicklung von nativen iOS- und Adroid-Apps auf Basis von HTML5/CSS/JavaScript.
- Adobe Edge Animate ist ein Werkzeug zur Erstellung von HTML5/CSS3/JavaScript-Animationen, wobei die Zeilleisten-Konzepte an Adobe Flash und Adobe After Effects erinnern.
- Visual Studio
ECMAScript 6
ECMAScript 6 wurde bereits weitestgehend fertiggestellt.
Tools
Es gibt Tools, um ECMAScript 6 in ECMAScript 5 zu übersetzen und jetzt schon von den Erweiterungen zu profitieren:
Generators
- Axel Rauschmayer: Iterators and generators in ECMAScript 6
- Axel Rauschmayer: How should I format the ECMAScript 6 generator asterisk?
Promises
Utilities
- Zen-Coding mit Eclipse – Ermöglicht es, Codesnippets zu generieren. Eine kleine Anleitung für Aptana: http://nooshu.com/aptana-on-steroids-using-zen-coding. Zen-Coding ist auch für andere Editoren und Entwicklungsumgebungen erhältlich (wie beispielsweise für Notepad++ oder Dreamweaver).
Komprimierung und Reduktion der Anzahl der Dateien
- WebPack
- YUI Compressor
- cssmin und UglifyJS2 (mittels Grunt)
Erstellung von App/Anwendungs-Dokumentationen
- Allgemeine Dokumentation: Sphinx (http://sphinx-doc.org/). Auch hier kann das Ergebnis durch ein gutes Theme deutlich aufgebessert werden: https://github.com/snide/sphinx_rtd_theme. (siehe z.B. http://www.plasticjs.org/docs/ )
- JSON Schema: Wenn man JSON Schema oder Ähnliches verwendet, lassen sich Teile der Dokumentation relativ einfach automatisch generieren. (siehe z.B. http://www.plasticjs.org/docs/displayModules/advancedTable.html#available-options )
- JSDoc
- Etwas schlecht dokumentiert und ein wenig oldschool ist @use JSDoc – Mit einem zusätzlichem Theme und ein paar Einstellung lässt sich daraus eine sehr schöne Doku generieren (siehe z.B. http://plasticjs.org/devdocs/ )
- JSDoc ToolKit – Ein weiteres JSDoc-Tool.
- JSDoc 3 – Ein drittes JSDoc-Tool.
- ADWiki – Ein viertes JSDoc-Tool.
- JSDoc-Dokumentation: Foundations of Ajax von Apress, ISBN 1-59059-582-3
Viele Frameworks und Editoren unterstützen JSDoc von Haus aus:
- WebStorm
- NetBeans
- RubyMine
- Visual Studio
- Für Eclipse gibt es eine JSDoc-Extension
- Für Adobe Edge gibt es eine [JSDoc-Extension]
- Aptana Studio unterstützt ScriptDoc
- Editor Sublime Text mit Hilde des DocBlockr-Plugins
- Mozilla-Inline-Editor Mozile
- Closure Linter und Closure Compiler von Google
JavaScript-Cross-Compiler
Cross-Compiler erzeugen Compilate für bestimmte Zielumgebungen, die sich von der Umgebung, auf dem der Cross-Compiler läuft, unterscheiden. Ein Spezialfall sind Cross-Compiler, die Quellcode einer Programmiersprache in einen Quellcode einer anderen Programmiersprache übersetzen. Es gibt mehrere Cross-Compiler, die als Zielsprache (unter anderem) JavaScript unterstützen.
- Google Closure Compiler transformiert JavaScript in kompakteres JavaScript.
- ClojureScript (Download) transformiert die LISP-ähnliche Sprache Clojure in JavaScript; der erzeugte Code ist mit dem „advanced compilation mode“ des Google-Closure-Übersetzers kompatibel.
- HaXe ist eine funktionale Sprache, die in diverse Zielsprachen übersetzt werden kann: C++, Flash, JavaScript, Neko, PHP, Tamarin, NodeJS.
Übersichten im Web
- List of rich internet application frameworks (Wikipedia EN)
- Multiple phone web-based application framework (Wikipedia EN)
Frameworks
JavaScript-Bibliotheken
- Google Closure Library, eine umfangreiche Cross-Browser-JavaScript-Bibliothek
- mootools (Zitat: “MooTools is a compact, modular, Object-Oriented JavaScript framework”), MooTools Core Builder, Mootools More Builder
- prototype (Klassen, Ajax, Event Handling)
- script.aculo.us (Erweiterung von Prototype um grafische Elemente; insb. integriert in Ruby on Rails)
- Dojo Toolkit (Klassen, JSON, Ajax und vieles mehr)
- Yahoo User Interface Library (YUI) (JSON, JUnit, Klassen und vieles mehr)
- microjs (viele kleine Helferlein)
- impress.js (Vortragsfolien)
- stream.js (unendlich große Container, Lazy Binding)
- Raphaël—JavaScript Library (Vektorgrafiken)
- Processing Library
- backbone.js (Framework für eine MVC-Struktur)
- require.js (Script-Loader)
- underscore.js (erweitert JS um einige Funktionen, kann auch neben jQuery oder backbone.js verwendet werden)
MVC
Mobile
- jQuery Mobile (Framework für mobile Webapps)
- Sencha Libraries (Sencha Touch, Ext ...) (Umfassende Libraries, vor allem für mobile Endgeräte)
Android-Entwicklung
- http://blog.webducer.de/2011/09/android-neues-projekt-anlegen/
- How to build Android App with HTML5/CSS/JavaScript (Video)
- Nexus S
Canvas
Game Engines
JavaScript-Templates
- Google Closure Templates, ein Java/-JavaScript-Template-System, um server- und/oder client-seitig HTML-Templates zu erstellen.
JavaScript-Server-Technologie
siehe Node.js
JavaScript-Testumgebungen
- Übersicht und Bewertung (stackoverflow.com)
- Übersicht (Wikipedia EN)
- Übersicht (Wikipedia DE)
- JsUnit (GitHub), wird nicht mehr weiterentwickelt
- Jasmine (GitHub), Nachfolger von JsUnit
- rhinounit
- TestSwarm (GitHub)
- js-test-dirver
- Browserstack (alle Browser innerhalb eines Browsers testen - kostenpflichtig!)
- SlimerJS
Responsive Webdesign
- http://www.elmastudio.de/webdesign/responsive-webdesign-2/ein-paar-notizen-zur-entwicklung-von-responsive-webdesigns/
- http://mobilehtml5.org/
Beispiele
- http://skytechgeek.com/2012/01/30-best-html5-games-to-kill-your-boredom/
- http://www.animaclock.com/
- http://joelb.me/scrollpath/
BigInt
5.10 + 10.20 === 15.30 → false
let a = BigInt(2), b= 256n;
console.log(a ** b);
