Fable 1.0 Beta提供更好的工具集成、全新项目格式等改进

栏目: ASP.NET · 发布时间: 7年前

内容简介:Fable 1.0 Beta提供更好的工具集成、全新项目格式等改进

F#到JavaScript的编译器Fable近日发布了 1.0 Beta 版,该版本改进了相关工具,提供了更简洁的项目格式,以及更好的代码生成能力。

Fable现已实现了与dotnet SDK的集成,这意味着该产品已可通过nuget使用,同时开发者可以使用 dotnet CLI工具管理自己的项目。例如,我们可以这样新建一个Fable项目:

mkdir myfableapp
cd myfableapp
dotnet new fable ## create the project files from a template
dotnet restore   ## install nuget deps
npm install      ## install nmp deps
dotnet fable add 

  ## add a library to the project

此外Fable还实现了与Webpack的集成。实际上,Fable编译器的JavaScript组件已成为一种 Webpack加载器 ,因此可定义能与其他语言的加载器进行集成的构建工作流,例如TypeScript。只需通过 dotnet fable start 启动,即可让Fable Webpack加载器与Fable服务器通信。

如上文所述,新的项目格式是1.0版的另一个重要改进,现在我们可以通过一个简单的XML文件按顺序列出项目需要包含的所有依赖项和文件。这种新格式的主要优势在于,相比原本臃肿的格式,可以更轻松地修改项目,而无须承受项目受损等风险。然而目前仅可以使用 Ionide 编辑器修改这种新格式的项目。

Fable 1.0还改进了代码生成能力,这一能力主要源自 ncave 在使用Fable 将F#编译器移植至JavaScript 的过程中所做的工作。除了可以驱动 完全在浏览器中实现的Fable REPL ,为此类大型项目使用Fable可以帮助我们更好地发现有待优化的地方或可能存在的Bug。

InfoQ采访了Fable的创建者和维护者Alfonso García-Caro,此人还与人合作撰写了PACKT Mastering F# 一书。

InfoQ曾在2016年8月报道过Fable,您能否为我们的读者总结一下自那时之后语言方面有什么变化?

Fable可兼容标准的F#,因此Fable语言的大部分新功能都来自F#本身。然而Fable还通过一些额外的新功能改进了与JavaScript的交互,例如Erased union、String enums,或动态编程。Fable 1.0在代码生成方面最重要的变化之一在于,F#柯里化(Curried)的Lambda已不再作为JavaScript嵌套函数的方式呈现,借此可大幅改进与JavaScript库的交互,并消除开发者将Lambda发送至JavaScript代码过程中遇到的某些常见困扰。

Fable 1.0主要的变化均围绕 工具 和工作流,通过与dotnet SDK和Webpack的集成,以及新增的更简单的F#项目格式,这方面能力获得了显著提高。Fable的相关文档很快也将更新为最新版本。

与JavaScript代码交互的Fable模型到底是什么?如何用于管理类型/非类型边界?

Fable的指导原则之一是让其与JavaScript的交互尽可能简单。因此F#生成的代码和JavaScript原生代码之间没有边界。相比其他可编译为JavaScript的函数程序,这样的设计确实会对类型安全产生一定的影响,但与此同时我们将可以使用更多现有工具,并以任何JavaScript环境作为目标,而不仅仅是浏览器。尽管还处在早期阶段,但Fable已经可以支持Node、GitHub Electron、React Native、Fuse或Visual Studio Code扩展。与JavaScript的集成可通过配合使用ES2015导入以及动态编程或类型接口的方式实现,此时还可将自定义的或通过Typescript生成的声明文件与ts2fable解析器配合使用。

总的来说,Fable有着与.NET领域的F#类似的基本原则:在缺乏空值(Null)的情况下可为F#代码提供极高程度的类型安全,以及其他高级类型,例如通过可分辨的Union代表不可变的状态和首选项,但与此同时如果需要涉及与C#或JavaScript库的交互,就无法提供类似的帮助了。我觉得借此可以极大地提升生产力,让我们无须用F#重写一切,即可充分利用现有工具。

是否有什么成功故事可以分享给我们?

目前有很多公司,例如msu solutions GmbH或德国的NSYNK,以及加拿大的Prolucid,还有很多独立开发者,均已将Fable应用运用在生产环境中。让人最为印象深刻的是Tomas Petricek发起的Gamma项目,以及目前最棒的F# IDE之一:Ionide(一种VS Code和Atom扩展),这些都是通过Fable构建的。另一个比较有趣的例子是Fable REPL,完全运行在浏览器中,没有使用任何后端即可使用Fable将F#编译器本身转换为JavaScript。

您对Fable 1.0的成熟度是怎么看的?适合用于生产环境吗?Fable未来的发展路线图是怎样的?

当前发布的Fable 0.7版其实已经适合用于生产环境了,该版本发布于几个月之前,一直没有出现过什么重大问题。Fable 1.0目前还处于Beta测试状态,主要是供Fable的高级用户尝试和体验并向我们提供反馈。一旦我们确信在工具和代码生成方面的各种问题已经顺利解决,我们会将其作为稳定版本发布,希望这一切能在未来几周里完成。

Fable 1.0 RTM顺利发布之后,我们会将重心转向Fable生态:更全面也更优质的库、范例、教程,以及对ts2fable解析器的进一步完善。当然,我们也会继续完善Fable,使其能够兼容F#包含的更多新功能(例如Promising anonymous record)。我们还打算将Fable REPL于Lonide-web结合在一起,让整个F# IDE能够完全在浏览器中运行,无须后端,无须任何安装操作。

如果希望尝试Fable,可在安装 dotnet SDK 后运行:

dotnet new -i Fable.Template::*

该命令可安装Fable模板,随后即可按照上文列出的方法创建项目。

阅读英文原文: Fable 1.0 Beta Brings Better Tooling Integration, New Project Format, and More


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Designer Idea

Web Designer Idea

梁景红 / 电子工业出版社 / 2006年 / ¥55.00

这是一本以“目的、信息、设计、创意”作为根脉的关于网页视觉的书籍,畅谈的话题从策划到编辑再到设计,从而讨论“我们要建立怎样的站点,并以何种形式完成它”的问题。 全书共分四个部分,分别是网站建设目的,网站信息内容,页面形式设计,网页创作构思。 四部分有机地结合,形成一个统一的整体。“目的”部分以建设网站的目的为主,带领设计师从建站目的的角度,探讨如何抓住首要问题;如何建立网站雏形;如何打开狭隘的、局......一起来看看 《Web Designer Idea》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具