¿Por qué Babel impulsa el desarrollo de JavaScript?
Según el fundador de Codemix, Charles Pick, entre todos los compiladores de conversión de ES6, Babel es el que más cumple con la especificación ES6, superando incluso al compilador Traceur que Google ha creado durante mucho tiempo. Babel permite a los desarrolladores utilizar todas las funciones nuevas de ES6 sin afectar la compatibilidad con navegadores más antiguos. Además, admite muchas compilaciones diferentes; el sistema de prueba facilita a los desarrolladores integrarlo en sus propias cadenas de herramientas.
Charles cree que Babel es básicamente una plataforma, que es la mayor diferencia entre Babel y CoffeeScript y la compilación en JS TypeScript. El sistema de complementos de Babel permite a los desarrolladores personalizar transcodificadores e insertarlos en el proceso de compilación. Estos convertidores reciben árboles de sintaxis abstracta y procesan el código antes de convertirlo en JavaScript ejecutable. Codemix ha experimentado con el desarrollo de verificación de tipos de tiempo de ejecución estáticos, eliminación de cierres, "macros de salud" de JavaScript y otros complementos.
La Torre de Babel no solo sigue el progreso de ES6, sino que también puede servir como campo de pruebas para ES7 o ES2016. Por ejemplo, ya admite async/await, lo que facilita a los desarrolladores escribir código JavaScript asincrónico que es más simple y fácil de entender que usar devoluciones de llamada o promesas. Si bien pueden pasar años antes de que los principales navegadores admitan este método de codificación JavaScript asíncrono, Babel permite a los desarrolladores utilizarlo ahora. Esto se debe al alto grado de alineación entre Babel y el Comité Técnico de JavaScript (TC39), que puede proporcionar a los desarrolladores implementaciones del mundo real antes de que se estandaricen las nuevas funciones de ECMAScript. También beneficia el mayor desarrollo de JavaScript porque su equipo puede obtener comentarios del mundo real antes de que se finalice la especificación ECMAScript.
Babel también puede acelerar la ejecución de JavaScript. Debido a que la carga y ejecución lentas de archivos JavaScript pueden afectar gravemente la experiencia del usuario, el JIT no tiene tiempo para realizar todas las optimizaciones técnicamente viables en tiempo de ejecución. Por el contrario, Babel se ejecuta en tiempo de compilación y no tiene restricciones de tiempo tan estrictas. Con potentes capacidades de seguimiento de rango e inferencia de tipos y un sistema de complemento, los desarrolladores pueden crear convertidores para realizar dichas optimizaciones. Por ejemplo, el método de eliminación de cierres mencionado anteriormente puede convertir cierres en funciones ordinarias. Babel en sí tiene algunas optimizaciones integradas, como la fusión/propagación constante a través del convertidor utilidad.deadCodeElimination. En los próximos meses, podemos esperar ver los siguientes complementos:
Inclusión de funciones arbitrarias: funciones en línea en el sitio de llamada, maximizando el rendimiento y evitando el polimorfismo y la sobrecarga de llamadas de funciones;
p>Duplicación de funciones: en JavaScript, el polimorfismo es una causa común de ejecución lenta de código. Por lo tanto, cuando una función no se puede insertar en línea, se debe generar una copia de la función para garantizar que siga siendo un singleton.
Extrapolación de códigos invariantes en bucles: mueva códigos invariantes en bucles entre bucles afuera;
Desenrollamiento del bucle: si el número de bucles n es fijo, elimine el bucle y haga n copias del bucle.
Codemix lanzará varios complementos para realizar esta optimización, los lectores interesados pueden contactarlos o seguirlos en Twitter. Consulte aquí para conocer las diferentes optimizaciones que pueden realizar los motores de JavaScript.
El complemento Torre de Babel no se limita a mejoras de rendimiento. Por ejemplo, también pueden hacer lo siguiente:
I 18n/Convertidor de traducción: traducir cadenas específicas y reemplazarlas;
Personalizar el sistema de registro: establecer el nivel de registro y controlar el registro a través de variables de entorno Granularidad;
Convertidores en tiempo de compilación para sistemas de plantillas opcionales (como Moustache o Manillar): convierten cadenas de plantillas de etiquetas directamente en código JavaScript;
Generador de documentación: utiliza el tipo Stream anotaciones e inferencia de tipos para generar documentación.
Se han implementado algunos de los complementos anteriores.
En resumen, Charles cree que Babel es un software excelente que definitivamente se convertirá en parte de la caja de herramientas de cada desarrollador web y, como campo de pruebas para ECMAScript, es probable que se convierta en una fuerza impulsora en el futuro cercano. La principal fuerza impulsora para la aplicación y desarrollo de ES6 y ESNext.