Hola React Day, mi nombre es Felix y hablaré sobre cómo podemos usar JSX para crear construcciones en Minecraft. Además, también exploraré la idea de usar JSX como un lenguaje específico de dominio en general.
Entonces, en primer lugar, ¿qué es un lenguaje específico de dominio? Un lenguaje específico de dominio o DSL para abreviar, es un lenguaje de programación que está diseñado para hacer una cosa particularmente bien. Y eso contrasta con un lenguaje de programación de propósito general como por ejemplo JavaScript, que en teoría es capaz de resolver cualquier problema.
Entonces, por ejemplo, SQL. SQL es muy bueno interactuando con bases de datos de manera muy concisa, pero en general es limitado en funcionalidad y no puede resolver todos los problemas. O en otras palabras, SQL no es Turing completo. Otro ejemplo muy famoso de un lenguaje específico de dominio es HTML. HTML está diseñado para definir la estructura de una página web. Pero como estamos hablando de JavaScript y React aquí, no podemos usar HTML directamente. En su lugar, usamos algo llamado JSX.
JSX es una forma de escribir código pseudo-HTML dentro del código JavaScript. Pero como los navegadores no admiten nativamente JSX, esta sintaxis JSX necesita ser primero transpilada en algo que el navegador puede entender. Y esto es, en el caso de React, una llamada a una función llamada react.createElement() que luego, al final, representa el mismo contenido que nuestro JSX. Pero la gran parte de JSX es que no estamos limitados a usarlo con React. En su lugar, podemos usar cualquier función en lugar de React.createElement() para luego usar JSX y agregarle comportamiento personalizado.
Entonces, en este caso, primero creo un componente de bloque personalizado que luego se alimenta en mi función de manejador JSX personalizada, en este caso una función JSX de Minecraft. Y esto funciona porque mi función tiene la misma firma de función que react.createElement() Por lo tanto, puedo tomar mi función como objetivo para la transpilación desde JSX. En este ejemplo aquí, he expandido este ejemplo y también lo he envuelto en un fragmento. Y ahora la idea es que con mi manejador JSX personalizado, puedo convertir esta sintaxis JSX en un array que consta de objetos simples. Pero ahora esa es la parte importante. Dependiendo del caso de uso o del problema que estás intentando resolver, esta representación intermedia puede verse completamente diferente. Es posible que quieras usar clases en su lugar o posiblemente preservar la anidación que fue creada por JSX. Esta representación intermedia dependerá en gran medida del problema que estás intentando resolver.
Soy capaz de convertir este array en un conjunto de comandos que son entendidos por el juego y luego se convierten en una construcción real dentro de Minecraft. En caso de que no lo sepas, Minecraft es un juego de caja de arena 3D donde puedes colocar bloques donde como definido por tres coordenadas, x, y y z. Y cada bloque por supuesto tiene un tipo, en este caso está definido por este valor de ID.
Entonces, en general, la pregunta sería ¿por qué usarías JSX para construir un DSL personalizado? La primera razón es que tú y tus colegas ya están familiarizados con JSX. Por lo tanto, no hay una gran curva de aprendizaje y es fácil de adoptar.
Comments