AngularJS 2: ¿Qué idioma usar? (Mecanografiado, Javascript, Dart) [cerrado]
Con el lanzamiento de AngularJS 2, la documentación sugiere tres lenguajes
Typescript
: Javascript
y Dart
.
Solo estoy acostumbrado a Javascript EcmaScript 5 y me pregunto cuáles son las fortalezas y debilidades de estos tres.
En el momento en que se hace esta pregunta, la documentación está más desarrollada en Typecript y es bastante escasa en los demás (incluso en su propio idioma, Dart):
- Texto mecanografiado: 4 tutoriales, 16 guías para desarrolladores, 4 guías de prueba
- Javascript: 0 tutoriales, 4 guías para desarrolladores, 0 guías de prueba
- Dart: 0 tutoriales, 14 guías para desarrolladores, 0 guías de prueba
¿Debería cambiar mi hábito de desarrollar usando Javascript y seguir lo que sugiere Angular 2 usando Typecript? ¿Realmente cambia los conceptos de Javascript?
Sitio web oficial de AngularJS 2.0
Dart facilita el comienzo porque todo lo que necesita lo proporciona el ecosistema de Darts de una sola mano (idioma, administración de paquetes, compilación,...).
Mecanografiado
Para TS hay la mayor cantidad de recursos disponibles (documentación,...) porque hay una enorme base de usuarios.
La versión Dart y JS de Angular se genera a partir de TS.
Parece que hay muchos problemas para poner en funcionamiento un proyecto de Angular+TS (consulte las preguntas de Angular2 aquí en SO), pero hay proyectos iniciales disponibles donde todo ya está configurado. No conozco los detalles porque yo solo estoy usando Dart.
Para TS ahora existe Angular CLI que mejora mucho la experiencia del desarrollador para Angular2 con TypeScript.
JavaScript, ES5, ES6
Si eres un purista de JS, podría ser el lenguaje adecuado para ti. Si no (si lo fuera, probablemente no haría esta pregunta), estoy bastante seguro de que será mejor que use Dart o TS. Angular hace uso de anotaciones de tipo de varias maneras. Con JS se necesitan "soluciones alternativas"; de lo contrario, una simple anotación de tipo es suficiente (principalmente inyección de dependencia).
Dardo
Dart es un lenguaje agradable con un conjunto de herramientas que funcionan bien juntas. Muchos de los problemas que causa el entorno JS/TS se resuelven elegantemente para Dart.
Desde aproximadamente 2016/05, Angular2 Dart es un proyecto independiente y difiere bastante de las versiones TS y JS (a partir de 2016/10).
El módulo de enrutador que fue reemplazado en TS varias veces para que funcione con la compilación de plantillas sin conexión, no fue reemplazado en Dart porque en Dart la carga diferida también funciona bien con el enrutador "antiguo".
... y
NgModule
tampoco conocí a Dart por la misma razón.El nuevo módulo de formularios creado para TS no se ha adaptado (todavía) a Dart.
Dart tenía compilación de plantillas fuera de línea desde el principio, pero no admite la plataforma dinámica del navegador para compilar componentes en tiempo de ejecución.
Parece que se está trabajando en un nuevo módulo de inyección de dependencia para Dart basado en Dagger2 (actualmente aún no disponible) para reemplazar el sistema DI que se generó automáticamente a partir del código TypeScript.
Angular2 Dart tiene un fuerte enfoque en el tamaño de salida de la compilación y el rendimiento del tiempo de ejecución, pero AFAIK se eliminó el soporte multiplataforma (como la renderización del lado del servidor).