如何真正“开始”使用FunScript

12

我在尝试使用FunScript时遇到了真正的困难,我非常喜欢F# -> Javascript的想法,但是在如何使用这些看起来漂亮的技术方面,我不断感到挫败。

问题出在这里:

当我尝试下载FunScript项目(无主机)模板时,VS显示无法安装:“你需要安装Nuget”。//啊,我已经安装了Nuget,并且刚刚更新到最新版本。我正在使用VS2013旗舰版。

我尝试了以下步骤:

我创建了一个新的FSharp库项目,然后运行了Package Manager命令以获取所需的FunScript Libs。

PM> Install-Package FunScript
那个方法起效果了,但是接下来...... 当我查看FunScript的示例时,程序中有open FunScript.TypeScript,但是在我输入时这个并不存在,系统提示TypeScript未定义,而且通过查看FunScript示例,我发现FunScript.TypeScript可以使用jQuery并与DOM进行交互,所以如果没有它,我在这里什么也做不了。
我注意到Nuget上有一些FunScript的第三方库:
FuncScript.TypeScript.Bindings.(lib|jquery)

但是我无法在“open [namespace]”语句中引用它们。

最后,在程序末尾必须有一个“do Runtime components…”的操作。这也未被定义。

你们有没有一个完整的FunScript示例可以让我开始使用?(我已经在网上搜索了很多,但我看到的程序对我不起作用)


你尝试过查看Funscript的Github存储库吗?https://github.com/ZachBray/FunScript/tree/master/Examples - N_A
这个问题出现在今天将从github下载FunScript Examples并加载到Xamarin Studio时。官方解决方案是什么? - Alexy
3个回答

14

抱歉,该项目的文档还有些薄弱。我们会尽快改进。

我已经更新了FunScript Visual Studio 项目模板,删除了 NuGet 包管理器的依赖。从 v1.1.0.15 版本开始,它应该可以在 Visual Studio 2013 上使用。注意:你可能需要构建两次,以正确恢复 NuGet 包。

主要的 NuGet 包中只包含基本的 F# 到 JS 编译器(和一些 FSharp.Data 类型提供程序映射)。如果你想通过 TypeScript 绑定访问 JavaScript,则必须添加对那些 "Bindings" 包的引用。

这些包的名称实际上并不反映任何程序集中的命名空间。目前,它们将类型导入到全局命名空间中(即,它们应该在不打开任何命名空间的情况下在 IntelliSense 中变为可用)。除非 TypeScript 包含模块,在这种情况下,函数和类型将映射到相应的 .NET 命名空间。

例如,添加 FunScript.TypeScript.Binding.lib NuGet 包后,Globals.alert(message) 应该可以通过类型检查。

请注意,我们可能会将这些定义全部移到 FunScript.TypeScript 命名空间中,以避免污染全局命名空间。

示例中的 do Runtime.Run(components) 调用实际上只是一个帮助方法。我们应该从示例中删除它,因为它会让很多人感到困惑。你真正需要的唯一方法调用是 Compiler.Compile(<@ main() @>, noReturn = true),它会编译引用并返回一个 JavaScript 字符串。然后用户可以自行决定如何处理此 JavaScript(例如,将其放在托管页面中)。

当我发布另一个名为HashBang的项目时,我将添加更多关于使用FunScript的文档,该项目利用FunScript构建可爬行的动态网站。这将包括使用HashBang/FunScript进行构建和部署的逐步教程。


谢谢回答,我现在会去尝试使用这个模板。 - Zaid Ajaj
1
@ZackBray 我刚试了一下这个项目,就像你说的那样,我不得不构建两次,在这一点上,没有错误(也没有警告),但是当运行程序时,我得到了一个“TypeInitializationException”,它是从“FunScript.Data.Components”抛出的,信息->“<StartupCode$FunScript-Data>.$FunScript.Data.Components”的类型初始化程序引发了异常。”这实际上是一个稳定版本还是我应该等待HashBang? - Zaid Ajaj
它在VS 2012和F# v3.0中肯定是稳定的。我还没有测试过VS 2013和F# v3.1。不过,我还没有听说过其他相关问题。看起来问题来自于FSharp.Data类型提供程序映射。你可以尝试暂时删除该程序集并避免使用Apiary/WorldBank类型提供程序。否则,请等待一段时间,直到我们使用VS 2013。 - ZachBray

4

我顺利进入了...

我使用的是Microsoft Visual Studio 2013(专业版),使用了基础版"FunScript - Not Hosted"项目模板(由Zach Bary提供),该模板可以通过在线项目搜索找到。

然后添加相关的FunScript绑定包(通过NuGet)。对于我的一些解决方案,我添加了FunScript.TypeScript.Binding.jquerymobile和FunScript.TypeScript.Binding.phonegap

您可以在GitHub上查看我的几个示例(https://github.com/ZachBray/FunScript/tree/master/src/samples/EasyGettingStarted)。 您只需替换默认项目(FunScript - Not Hosted)中的Program.fs,并添加其他文件。我使用了Zach Bray代码的某些部分作为基础。请参阅上面链接中的README文件。

如果您安装了MS VS 2013,则应该需要5-10分钟即可完成体验。 我正在提交更多的示例。 我推荐Funscript。


0
根据Zach的建议,我为OSX和Xamarin Studio创建了一个工作示例项目(至少在撰写本文时是这样)。

https://github.com/mfrawley/Funny

我发现安装过程非常不直观,但既然它正在工作并且有大量的NuGet包可用,我对这个东西的发展感到非常兴奋。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接