我在尝试使用FunScript时遇到了真正的困难,我真的很喜欢F#->Javascript的想法,但我一直对如何使用如此漂亮的技术的大量信息/文档感到沮丧。
问题是:
FunScript项目(无主机)模板无法安装,因为:"你需要安装Nuget",当我尝试下载它时VS说。// Dah, I do have Nuget and just updated it to latest release. I'm using VS2013 Ultimate.
我做了以下事情:
我创建了一个新的FSharp库项目,然后运行Package Maneger命令来获得所需的FunScript库:
PM> Install-Package FunScript
效果不错,但是。当我看一个FunScript的例子时,我会看到程序中的open FunScript.TypeScript
,当我键入它时,它目前不存在,因为它说TypeScript没有定义,而看看FunScript.TypeScript的例子,就可以使用jQuery并与DOM交互。所以没有它我在这里什么都做不了
我确实注意到了FunScript的Nuget上的第三方libs,即:
FuncScript.TypeScript.Bindings.(lib|jquery)
但我不能在"open[namespace]"语句中引用它们。
最后,在程序的末尾必须有一个"do Runtime components…"之类的东西。这也是"未定义的"
你们有一个完整的FunScript例子吗?(我已经在网上搜索了很多,我看到的程序对我不起作用)
很抱歉,该项目的文档仍然有点少。我们将很快努力改进这一点。
我现在已经更新了FunScript Visual Studio项目模板,以删除NuGet包管理器依赖项。从v1.1.0.15
开始,它应该可以在Visual Studio 2013上运行注意:您可能需要构建两次才能正确恢复NuGet包
在主NuGet包中,您只能获得基本的F#到JS编译器(以及一些FSharp.Data类型提供程序映射)。如果你想通过TypeScript绑定访问JavaScript,你必须添加对你提到的那些"绑定"包的引用。
这些包的名称实际上并不反映程序集中的任何命名空间。目前,它们将类型导入全局命名空间(即,它们应该在intellisense中可用,而不打开任何命名空间)。除非TypeScript包含模块,否则在这种情况下,函数和类型会映射到相应的.NET命名空间。
例如,添加FunScript.TypeScript.Binding.lib
NuGet包后,Globals.alert(message)
应键入check。
请注意,我们将来可能会将这些定义全部移动到FunScript.TypeScript
命名空间中,以避免污染全局命名空间。
示例中的do Runtime.Run(components)
调用实际上只是一个helper方法。我们可能应该把它从例子中删除,因为它让很多人感到困惑。您真正需要的唯一方法调用是Compiler.Compile(<@ main() @>, noReturn = true)
,它编译引号并返回一个JavaScript字符串。然后由用户决定如何使用此JavaScript(例如,将其放在托管页面中)。
当我发布另一个名为HashBang的项目时,我将添加更多关于使用FunScript的文档,该项目使用FunScript来构建可爬网的动态网站。这将包括使用HashBang/FunScript构建和部署的分步教程。
我顺利进入。。。
使用MS Visual Studio 2013(专业版),带有普通的"FunScript-Not Hosted"项目模板(由Zach Bary设计),可以通过在线项目搜索找到。
然后添加相关的FunScript绑定包(通过NuGet)。我为我的一些解决方案添加了:FunScript.TypeScript.Binding.jquerymobile和FunScript.Type Script.Binding.phonegap
你可以在GiHub上看到我的几个例子(https://github.com/ZachBray/FunScript/tree/master/src/samples/EasyGettingStarted)。你所需要做的就是替换默认项目中的Program.fs(FunScript-非托管)。并添加其余文件。我正在使用Zach Bray的一些代码作为基础。请参阅上面链接上的自述文件。
如果你安装了MSVS2013,应该是5-10分钟的体验。我正在提交更多的例子。我推荐Funscript。
根据Zach的建议,我为OSX和Xamarin Studio创建了一个工作(至少在写作时)的示例项目:
https://github.com/mfrawley/Funny
我发现安装过程完全没有直觉,但现在它已经开始工作了,并且看到了大量的NuGet包,我很高兴看到这件事是如何发展的。