我想编写一个HttpHandler,它可以即时编译CoffeeScript代码并发送生成的JavaScript代码。我尝试过MS [JScript] [1]和IronJS但没有成功。我不想使用[Rhino] [2],因为Java依赖会使分发太难。
如何从.NET编译CoffeeScript?
答案 0 :(得分:36)
用于编译CoffeeScript的命令行工具。包括一个文件系统观察程序,可在更改时自动重新编译CoffeeScripts。大致相当于linux / mac的coffee-script节点包。
包含一个类似于CoffeeScript-dotnet的命令行工具,以及一个在asp.net站点请求时编译CoffeeScripts的http处理程序。
Asp.net mvc库,可根据要求编译sass和coffeescript文件。还支持缩小和组合。
IronJS是一个.NET javascript解释器,可以成功加载CoffeeScript编译器并编译CoffeeScript。
使用Node.js手动编译
获取node binaries并将bin目录添加到路径中。写一个node.js script to load the CoffeeScript compiler and your CoffeeScript files and save the compiled javascript。
答案 1 :(得分:32)
Chirpy现在完全支持CoffeeScript: http://chirpy.codeplex.com/
答案 2 :(得分:8)
你明确表示你想要编写一个运行时编译器,所以这可能不是你想要的,但如果要点是要有一种生成javascript结果的方法,Mindscape Web Workbench是有趣。它是Visual Studio.NET 2010的免费扩展,可在Extension Manager中使用。它提供了Intellisense,语法高亮,并在编写时编译JS。我刚刚开始使用它,但看起来很有希望。斯科特汉塞尔曼谈到它here。它还支持LESS和Sass。
答案 3 :(得分:4)
我已经设法使用IKVM,jcoffeescript和Rhino从.NET编译CoffeeScript。它很简单,只是没有参数的JCoffeeScriptCompiler构造函数重载不起作用。它以java.util.Collections.EMPTY_LIST作为参数运行正常。
我就这样做了:
下一步是创建构建任务和/或HTTP处理程序。
答案 4 :(得分:4)
查看新的coffeescript-dotnet项目,该项目使用Jurassic JavaScript实施。
答案 5 :(得分:3)
由于CoffeeScript编译器现在可以在Internet Explorer上运行,经过几次最近的调整后,最好也可以使用其他MS口味的JavaScript。尝试从最新版本中加入extras/coffee-script.js
,您应该选择CoffeeScript.compile(code)
。
答案 6 :(得分:1)
Visual Studio 2010中的CoffeeScript
这是Chirpy的分叉(chirpy是一种用于混搭,修剪和验证javascript,样式表和无点文件的工具)
“好吧,我认为我的工作主要依赖于其他人的工作。检查出来: http://chirpy.codeplex.com/SourceControl/network/Forks/Domenic/CoffeeScriptFixes“
答案 7 :(得分:1)
我尝试通过基于Windows的脚本主机(或仅仅是wscript)运行捆绑的extras/coffee-script.js
,但它没有报告任何问题。然后我添加了这一行:
WScript.Echo(CoffeeScript.compile('a: 1'));
在文件的末尾,再次通过wscript
运行,并正确打印生成的JavaScript。
您使用的是COM对象吗?你能分享一些负责初始化MScript对象引用的代码吗?
答案 8 :(得分:1)
IronJS现在支持CoffeeScript,并且通常比其他.NET JS引擎更快:
我有一篇关于将两者连接在一起的博客文章:
http://otac0n.com/blog/2011/06/29/CoffeeDemo-A-Simple-Demo-Of-IronJS-Using-CoffeeScript.aspx
答案 9 :(得分:1)
我没有直接答案,(我希望你找到一个答案),但也许可以看看以下内容,看看它是如何完成的。
答案 10 :(得分:1)
我的主编是VS 2010,我喜欢WorkBench扩展。它很好,每当你点击你的.coffee文件时自动编译为js,还会向你介绍我读过但从未到过的SASS。
他们提供的付费版本也会自动缩小/缩小你的js和css文件,因为你的.coffee和.scss无论如何都是你的源文件。
我鼓励所有VS用户继续安装,尤其是在运行VS 2010时。
唯一的敲门声,有人请你纠正我或赐教,是用.coffee语法,它没有突出显示方式说html,js,c#代码是。这可能是因为我使用了来自http://studiostyl.es/的配色方案,并且对于记录http://studiostyl.es/schemes/coffee-只是分享名称coffee没有特别的语法高亮支持我知道的coffeescript。但没有理由不立即开始使用工作台插件!
好的工作台网站声称:语法高亮,所以也许是我选择的studiostyle.es。
答案 11 :(得分:1)
我知道这已经过时了,但我来这里是为了回答一个非常类似的问题:如何使用Visual Studio 2012 Express编译我的CoffeeScript?请注意,免费的Express版本不允许任何扩展程序,因此我无法继续使用已经很好用了很长时间的Mindscape Workbench扩展程序。
事实证明这很容易。只需使用NuGet安装Jurassic-Coffee软件包即可。
在mindscape工作台上使用此软件包的一个优点是,您可以直接从html中的脚本标签引用您的咖啡。它缩小并缓存已编译的JS,因此只有在请求的咖啡文件发生更改时才能正常工作。
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="home.coffee"></script>
</head>
mindscape工作台允许您将不同的coffescript文件捆绑在一起,这对于模块化您的coffeescript非常方便。您也可以使用侏罗纪咖啡,使用#= require
语句包含其他咖啡模块文件,例如:
#= require Classes\GridWrapper.coffee
class UsersGrid
constructor:->
@grid = new GridWrapper()
我认为在咖啡文件中使用#= require
标签实际上比mindscape工作台方法更清晰,更清晰,这种方法隐藏了所有这些,因此您很容易忘记自己的依赖关系。
注意强> 有一个潜在的问题。 Nuget安装程序会在您的web.config中输入一个httphandler条目,该条目可能与IIS Express集成的托管管道模式不兼容。
您可能会看到以下错误:
检测到的ASP.NET设置不适用于Integrated 管理流水线模式。
要解决此问题,只需删除下面显示的处理程序。
<system.web>
//other stuff
<httpHandlers>
<add type="JurassicCoffee.Web.JurassicCoffeeHttpHandler,JurassicCoffee" validate="false" path="*.coffee" verb="*" />
</httpHandlers>
</system.web>
答案 12 :(得分:1)
你可以简单地将它的一个端口写入C#。我已将Jison移植到C#(这是使CoffeeScript运行的底层项目)。我认为它可能有点不同,但两个Jison解析器都是一样的。
我还没有请求它回到Jison的主要架构,但很快就会这样做。
答案 13 :(得分:0)
我尝试将未修改的extras / coffee-script.js
文件编译为jsc
,.NET的JScript.NET编译器,我收到了很多错误。以下是值得注意的:
其他错误是由上述错误引起的。
答案 14 :(得分:0)
你可以向Node.js(here are self-contained Windows binaries发送)
,而不是炮轰出CScript。答案 15 :(得分:0)
您可能还想查看jurassic-coffee,它也是一个运行jurassic中原始编译器的咖啡脚本编译器。
它具有链轮样式“#= require file.coffee”或“#= require file.js
”,可用于在编译之前保持.coffee文件模块化和组合以及嵌入.js文件。< / p>
它带有一个带有.js和.coffee文件的文件监视器的HttpHandler,可以跟踪需要重新编译的.coffee文件,然后传递给已编译的* .js文件。
jurassic-coffee也可作为Nuget套餐
答案 16 :(得分:0)
我已经完成了一个在幕后使用Windows Script Host的HttpHandler:https://github.com/duncansmart/LessCoffee并且运行良好(它还可以编译*.less个文件)。
它在NuGet上:http://nuget.org/List/Packages/LessCoffee
它基于这个简单的包装器:https://github.com/duncansmart/coffeescript-windows
答案 17 :(得分:0)
我使用v8编写了一个交互式shell。
https://github.com/mattn/coffee-script-v8
这项工作是单个可执行文件。 (不要使用外部文件) 它不能使用require()。但足以学习coffeescript。