Hallo zusammen,
ich versuche mich zur Zeit in Sachen Entwicklungstrends im SPA Bereich auf den neusten Stand zu bringen, da ich in naher Zukunft ein Projekt in diesem Bereich beginnen werde.
Nun ist es leider so, dass mich die Fülle an Suchergebnissen erschlägt, wenn ich mich über JavaScript (Patterns) Best Practices, Design, Code Stile, Module usw. informieren möchte.
Für OOP in JavaScript benötigt man zusätzliche Bibliotheken. Um JavaScript Code modularisierbar zu machen, verwendet man anscheinend Bibliotheken wie JSModule oder Node.js oder....
Wir würden gerne während der Entwicklung der Anwendung weiterhin im Visual Studio arbeiten inkl. Typsicherheit durch den Compiler. Deswegen wird überlegt ob TypeScript nicht die richtige Technologie für uns sein könnte.
So wie ich das sehe würden wir mittels TypeScript alle von mir genannten Anforderungen erfüllt bekommen, oder?
Ist das soweit korrekt oder mache ich mir falsche Hoffnungen? 😉
Gruß,
wax
Hallo Wax,
das stimmt schon. Intellisense hast du aber bei Javascript im VS auch. Ist halt nicht so gut. 😃
Aber grundsätzlich rate ich (Neu)Kunden nach Möglichkeit Typescript statt plain Javascript zu verwenden. Man muss halt ein wenig Javascript-Hintergrundwissen haben IMHO.
Statt VS würde ich für die clientseitige Entwicklung VSCode in Betracht ziehen.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Für OOP in JavaScript benötigt man zusätzliche Bibliotheken.
Nein, das stimmt nicht.
Man muss die Sprache nur richtig verwenden. JS unterstützt prototyp-basiertes OOP. Wenn man so entwickelt ist alles gut. Da es eine dynamische Sprache ist, braucht man sowieso keine Klassen, da Polymorphismus quasi immer unterstützt wird.
JavaScript Code modularisierbar zu machen, verwendet man anscheinend Bibliotheken wie JSModule oder Node.js oder....
Das ist gerade im Umbruch. Node.js (Serverseitige Technologie) unterstützt bereits regulär Module. Allerdings werden die im Gegensatz zu den gängigen Client-seitigen Bibliotheken (SystemJS, RequireJS, AMD) synchron und nicht asynchron geladen.
Wir würden gerne während der Entwicklung der Anwendung weiterhin im Visual Studio arbeiten inkl. Typsicherheit durch den Compiler. Deswegen wird überlegt ob TypeScript nicht die richtige Technologie für uns sein könnte.
Dann ist es sie. Punkt.
Du bekommst:
* Angular 2 für ein SPA Application Framework. Wenn du unbedingt auch React verwenden willst, kannst du das auch in Angular 2 für das View-Rendering.
* Support direkt von MS
* Es ist gekommen um zu bleiben. (Microsoft UND Google setzen darauf)
Aber Achtung: Deine Fragen klingen so als hättest du nicht viel Ahnung davon, wie man JS-Anwendungen am besten strukturiert. Halte dich da am besten an Angular 2. Es bietet dir Module und bindet UI ziemlich performant mit funktionalen Bindings an deine Logik. (FFP => schlägt Watchcycle)
As a man thinketh in his heart, so he is.
Aktuell (zumindest großflächig verbreitet) kann JavaScript nur das Prototyping.
Echtes OOP im Sinne von Klassen kommt erst mit EcmaScript 6 - ist trotzdem JavaScript.
TypeScript erzeugt über einen Transcompiler JavaScript.
Das Resultat ist dann kompatibel mit einer der EcmaScript Versionen (ES3, ES4, ES5).
ES6 btw. manchmal auch ES2015 genannt ist - wie im Web das halt so ist - nicht überall gleich gut implementiert.
Siehe http://www.webbrowsercompatibility.com/es6/desktop/ oder auch andere Vergleiche, auffindbar via Google.
Gibt derzeit keinen Browser, der ES6 richtig richtig gut unterstützt. Ist aber halt auch erst ein halbes Jahr alt.
Dementsprechend kommt es dann darauf an, was Du nutzen willst und welche Browser primär wichtig sind.
Daran entscheidet sich dann, welche ES Version für Dich möglich / nötig ist.
Das tolle an TypeScript ist: es ist endlich was vernünftiges (wenn man da noch an Coffeescript denkt), die Sprache ist uns .NETlern sehr Nahe und man muss sich um EcmaScript nicht mehr kümmern.
Die Sorge nimmt der Transcompiler.
Sprich Du hast in TypeScript dann zwar eine Klasse, aber in JavaScript wirds abwärts-kompatibel nen Prototype und in den neueren ES Versionen dann eine Klasse.
Angular 2 funktioniert anders wie Angular 1.
Mit NG2 wurden Komponenten eingeführt, wie man es von HTML5 Web Components kennt und zB auch mit ReactJS verfolgt wird - wird wohl auch die Zukunft sein.
Typsicherheit durch TypeScript ist nicht 100% gewährleistet, weil Du weiterhin auch JavaScript Code schreiben wirst / musst.
Verwendest Du Bibliotheken, die keine Typings kennen, dann kann das TypeScript auch nicht wirklich während der Compile-Zeit überprüfen.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Aber man kann sich die Typensicherheit von Javascribt libs (wenn nicht schon auf DefinitelyTyped angeboten) selber mit Definition Files herstellen.