Noticias Programación

Fable: escriba aplicaciones web front-end en F #

¿Cómo sería poder escribir aplicaciones web front-end de estilo funcional y con seguridad de escritura? Ingrese Fable, un compilador de F # a Javascript con ambos en mente. Fable convierte F # a ES2015 JavaScript para que el código escrito en F # pueda ejecutarse en cualquier lugar donde se ejecute JavaScript: navegador, Node.js, Electron, React Native o, en general, V8.

Sí, por supuesto, con Typescript puedes tener seguridad de tipo al transcribir a Javascript y dado que Fable hace lo mismo para F #, en términos de rendimiento deberían ser equivalentes. La diferencia está en el idioma en sí. Aunque F # es un lenguaje de múltiples paradigmas, su gran ventaja es su sintaxis concisa que lo hace mucho más fácil de leer y comprender y sus propiedades de inmutabilidad predefinidas, tipos ricos que le permiten representar fácilmente sus datos o los suyos propios. Dominio y patrón poderoso capacidades de emparejamiento para definir comportamientos complejos.

Si viene de un paradigma imperativo que se vuelve funcional, F # también es mucho más fácil de aprender que Haskell puramente funcional. Además, Fable tiene acceso a algunas de las bibliotecas de clases base .NET y la mayoría de las de FSharp.Core en comparación con las únicas bibliotecas nativas equivalentes de Haskell. (Para obtener más información sobre Haskell, consulte el excelente «Curso gratuito sobre programación funcional en Haskell» del profesor Graham Hutton de la Universidad de Nottingham). No le conviene a Fable admitir toda la biblioteca de clases base; utiliza la parte que tiene sentido asumiendo que el código trasplantado se ejecutará dentro de un tiempo de ejecución de JavaScript y la mayor parte del BCL no se podría utilizar en ese contexto.

Además de invocar el poder de .NET BCL y FSharp.Core, Fable también interactúa y se integra con bibliotecas y API de JavaScript. Algunos tipos de F # / .NET tienen equivalentes en JS. Fable aprovecha esto para compilar en tipos nativos de mejor rendimiento y reducir el tamaño del paquete. Los tipos comunes más importantes son:

Strings y booleanos, que se comportan igual en F # y JS. Caracteres, que se compilan como cadenas JS de longitud 1. Esto se debe principalmente al hecho de que la indexación de cadenas en JS proporciona otra cadena. Pero puede usar un carácter como un número con una conversión explícita. Todos los tipos numéricos, que se convierten en números JS (tipo flotante de 64 bits), excepto int64, uint64, bigint y decimal. Array (y ResizeArray), que se compilan en matrices JS. Las matrices numéricas se compilan en matrices escritas en la mayoría de las situaciones, aunque esto no debería hacer una diferencia para operaciones comunes como indexación, iteración o mapeo. Puede deshabilitar este comportamiento con la opción typedArrays. Cualquier IEnumerable (o seq), que se puede atravesar en JS como si fuera un Iterable. DateTime, compila en JS Date. Regex, compilar en JS RegExp. Los diccionarios mutables (no los mapas de F #) se compilan en el mapa de ES2015. Los hashesets mutables (no los conjuntos F #) se compilan en el conjunto ES2015. La mayoría de las características de programación orientada a objetos compatibles con Fable de F #: interfaces y clases abstractas, estructuras, herencia, sobrecarga, etc. Sin embargo, debido a algunas limitaciones de las clases ES2015, el código generado usa la cadena de prototipos en su lugar.

En cuanto a las herramientas, todavía estás en Javascript ya que, aunque Fable ha traído mucha familiaridad para los desarrolladores de F # y .NET, el tiempo de ejecución de destino sigue siendo JavaScript y esta diferencia afecta varias áreas importantes:

Las dependencias de la interfaz de usuario web serán dependencias de NPM, no dependencias de .NET. Sus herramientas de compilación incluirán herramientas de desarrollo de aplicaciones web (por ejemplo, paquete web). En la mayoría de los casos, crear y ejecutar un proyecto de Fable solo requiere llamar a npm install y npm start.

En cuanto a la codificación, con Fable puedes, por ejemplo, escribir Promises a través de la API de Pipeline o usando expresiones de cálculo integradas de F #, lo que da como resultado un código como este:

Ya existen bibliotecas, extensiones y herramientas muy útiles para Fable, como la biblioteca Feliz, que es totalmente compatible con la API de React para que pueda usarse para crear aplicaciones de React que deberían parecer muy familiares para aquellos que ya conocen React, al mapear el uno- conceptos a uno, uno desde React y Javascript hasta F #.

Fable.Lit es un conjunto completo de herramientas para escribir aplicaciones de Fable al incrustar HTML en código F # con el poder de Google Lit.

Hawaii: una herramienta CLI de dotnet para generar clientes F # y Fable independientes del tipo a partir de los servicios OpenAPI / Swagger / OData.

Fable.Formatting.Markdown-Un puerto de FSharp.Formatting.Markdown para Fable. Esto le permitirá formatear el markdown a HTML dentro de su aplicación Fable.

Fable Simple PWA: cuando desee crear una aplicación web progresiva utilizando Fable.

Más recursos aquí

Finalmente, y de manera emocionante, hay planes para que Fable apunte a Python e, incluso más tarde, a PHP Rust y Lua.

Publicidad:

Publicidad:

También puede gustarte...