10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege ›...

29
10 Jahre JavaScript in 60+ Minuten Entwicklung mit JavaScript

Transcript of 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege ›...

Page 1: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

10 Jahre JavaScript in 60+ Minuten

Entwicklung mit JavaScript

Page 2: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

2

Vorwort (1)

In den letzten 10 Jahren ist viel im

JavaScript-Ökosystem geschehen

Dieser Vortrag soll einen Schnellüberblick geben

Die moderne Sprache JavaScript

Das heutige Tooling

Naturgemäß kann nur ein kleiner Teil der existierenden

Tools und ihrer Möglichkeiten gezeigt werden

React und Vue wurden ganz ausgelassen

Die Konfigurationsdateien sind vielfältig ausbaubar

Page 3: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

3

Vorwort (2)

Damit die Präsentation nachträglich verstanden werden

kann, sind die Code-Beispiele mit Hilfedateien im

Markdown-Format angereichert:

_setup.md

Erklärung wie das Projekt entwickelt wurde

_interessantes.md

Fokus/Besonderheiten im jeweiligen Beispiel

Page 4: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

4

Inhalt

Damals und heute

ECMAScript Theorie und Praxis

Die Toolchain

Pakete verwalten

Bauen

Testen

Automatisieren

Ausblick

Page 5: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

5

Damals und heute

Page 6: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

6

Es war einmal…

Browser-Krieg

Standard-Kompatibilität?

Bibliotheken im Netz suchen

So viele Globals…

Debugging – alert() console.log()

IDE-Unterstützung, wo bist du?

ಠ_ಠ

Page 7: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

7

Bevor es los geht…

Was und für wen wird entwickelt?

Wie soll entwickelt werden?

Technologie-Entscheidung!

Für diesen Vortrag:

Konsole

Cmder

SCM Runtime IDE

Page 8: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

8

Start the engine

REPL Lokale Engine Online

node <enter>

Browser-Konsole

node <file>

Browser

GraalVMJava:NashornV8.NET

JSFiddle

Plunker

CodePen

StackBlitz

Page 9: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

9

Von 0 auf 100: Scaffolding

Große Frameworks bringen Generatoren mit

Angular npx @angular/cli new my-project

React npm init react-app

Vue.js npx @vue/cli create my-project

Separate Generatoren

gitignore.io

Yeoman

JHipster

Tutorials und Dokumentationen

Bestehende Projekte

Page 10: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

10

Page 11: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

11

ECMAScriptTheorie und Praxis

Page 12: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

12

EC-Was?

Wer hat‘s erfunden?

Komitee TC-39: ECMAScript

Zahlreiche Organisationen Mitglied

Google, Microsoft, Mozilla, eBay, Intel, AMD, …

ECMA International auch verantwortlich für C#

Sprachstandard, der domänenspezifisch

implementiert wird

JavaScript

ActionScript

Page 13: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

13

Von der Idee zum Standard

Vorschläge durchlaufen Stages

Browser implementieren Vorschläge

Strawman Proposal Draft Candidate Finished

Jahr Veröffentlichter Standard

1999 ES3

2009 ES5

2011 ES5.1

2015 ES2015 = ES6

2016 ES2016 = ES7

2017 ES2017 = ES8

2018 ES2018 = ES9

Page 14: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

14

TypeScript (Microsoft)

Basis ist ES2015

Ergänzt die Sprache um ein statisches Typsystem

Veröffentlicht 2008

Version 0.8

Jährlich Updates

Aktuell Version 3.1

Page 15: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

15

Transpiling

Übersetzt Code in andere Sprache

ES2018 ES2015

TypeScript ES2015

LESS CSS

SCSS/SASS CSS

Stellt Kompatibilität mit Engines her

Neue Sprachstandards schnell nutzen können

Page 16: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

16

Page 17: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

17

Standardaufgaben

Pakete verwaltenBauenTestenAutomatisieren

Page 18: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

18

Lieferdienst für JavaScriptPaketverwaltung

Repository

Größte Paketbibliothek der Welt

Tool

Installation von Paketen

Upload eigener Pakete

Vergleichbar mit

Maven

NuGet

Page 19: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

19

Page 20: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

20

Bau mir ein Produkt: Build

1•Envification

2•Tree Shaking

3•Transpiling

4

•Bundling

•Code Splitting

5

•Obfuscation

•Minification

(für Anwendungen)

(für Libraries)

Page 21: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

21

Page 22: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

22

Haben wir nicht was vergessen?Testing

Tests sind Scripte, wie alle anderen auch

Jest, Jasmine Test-Verwaltung und

Mocha, Chai, Sinon Assertion und Mocking-Libs

describe(…) it(…) spyOn(…)

expect(…).not.toEqual(…)

Karma Führt Unit-/Integration-Tests aus

Protractor Führt E2E-Tests aus

Verwendet Selenium Webdriver, um Browser zu steuern

browser.get(…) element(by.css(…)).getText()

Page 23: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

23

Page 24: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

24

Lasst die Hunde los!Automatisierung

npm Scripts

Für einfache Aufrufe: npm run task

WebPack & Rollup

Nur Build mit Standardablauf

Reicht aber oft völlig aus!

Gulp

Orchestration von Tasks

Aufbau von Pipelines

Anbindung an viele Tools

Page 25: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

25

Page 26: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

26

Ausblick

Page 27: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

27

Isomorphes JavaScriptSingle-Page-Applications noch schneller liefern

Client öffnet Seite

Server lässt APP 1x

statisches HTML rendern

Client lädt APP nach

und macht die Seite dynamisch

(hydrate)

Client Server

APP

1. volles HTML2. app.bundle.js

Page 28: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

28

JHipster

Generator für einen

vollständigen Stack

Angular/React

Websockets

Spring Boot

DB-Migrationen: Liquibase

Caching (Ehcache,

Hazelcast, Infinispan, …)

Docker-Integration für

verschiedene Services

OAuth (Keycloak)

Service Discovery

Suche: ElasticSearch

SQL- und NoSQL-

Datenbanken

Message Streaming

Auf Basis von UML oder JDL

Entities

DTOs

Listen- und Detailansichten

Nur Standardtechniken

(außer JDL)

Page 29: 10 Jaher JavaScript in 60+ Minuten - W3L › de › fileadmin › user_upload › Vortraege › 10... · 2019-07-04 · JHipster Generator für einen vollständigen Stack Angular/React

29

Vielen Dank!

Wanders, Hero

Software-Entwickler

Tel. +49 (231) 61 804 - 127

Mail: [email protected]