6

抱歉,如果这已经得到回答,但其他帖子已经过时了。

我想用 HTML5 和 JavaScript 构建一个 Windows 8 应用程序,该应用程序使用 F# 可移植库项目来完成繁重的计算工作。这是允许的吗?当我尝试从 JS 项目 VS2012 中添加对我的 F# 项目的引用时给了我一个错误,但无论如何让我添加它,这以后会在我面前爆炸吗?我也想做一个Windows Phone 8版本

谢谢

4

2 回答 2

4

JavaScript Metro 应用程序不能直接调用 .net 库。为了使 javascript 能够调用您的 F# 库,您应该将其转换为 Windows 运行时组件 (winmd)。现在,我不能 100% 确定是否可以使用 F# 制作 winmd,因为官方官方只支持 c# 和 VB。在 WP8 端,javascript 无法直接调用 .net 或 winmd 库,因此您必须手动桥接 js 和 .net。

于 2013-02-27T20:15:04.647 回答
4

据我所知,当前的 F# 编译器无法创建 WINMD 组件(Denis 提到),因此您将无法直接从 JavaScript 调用 F# 代码。可能(但我不确定!)将 F# 库创建为可移植库,并从编译为 WINMD 组件的 C# 项目中引用它,然后从 JavaScript 中引用它。这增加了一个额外的步骤,因此可能有点不方便。

请将此作为对Visual Studio UserVoice的反馈提交。如果更多人投票明确表示这对他们来说是一个重要的场景,则更有可能添加!

或者,正如 Ramon 所提到的,有一些工具可以将 F# 转换为 JavaScript,并允许您将 F# 代码作为 JavaScript 运行(并直接从 JS 调用它):

  • WebSharper是一款受支持的商业产品,在 AGPL 许可下具有开源版本。
  • FunScript是最近在 Apache 2.0 下提供的开源社区项目

我只有 FunScript 的经验(效果很好并且有一些不错的功能),但是 WebSharper 已经存在了更长的时间,所以我认为它更可靠。它还添加了基于formlet(和类似模式)的更复杂的 GUI 框架,而 FunScript 通过导入 TypeScript 定义的类型提供程序简单地提供对 JQuery 的类型安全访问。

于 2013-02-28T02:20:39.483 回答