Coffeescript 南希:开始有困难吗

Coffeescript 南希:开始有困难吗,coffeescript,sass,nancy,Coffeescript,Sass,Nancy,我是一个全新的用户,目前被它对web应用程序开发的低调方式所吸引。我全身心投入其中,还想利用和调查这种方法的好处 设置 为了实现这种组合,我使用VS2010模板(在项目中找到)创建了一个新的空Web应用程序。然后,我使用VS PackageManager为我的应用程序融资,并添加SassAndCoffee支持: PM> Install-Package Nancy PM> Install-Package Nancy.SassAndCoffee 到目前为止还不错。然后我创建了一个~/C

我是一个全新的用户,目前被它对web应用程序开发的低调方式所吸引。我全身心投入其中,还想利用和调查这种方法的好处

设置 为了实现这种组合,我使用VS2010模板(在项目中找到)创建了一个新的空Web应用程序。然后,我使用VS PackageManager为我的应用程序融资,并添加SassAndCoffee支持:

PM> Install-Package Nancy
PM> Install-Package Nancy.SassAndCoffee
到目前为止还不错。然后我创建了一个~/Content/scripts文件夹,并在其中放置了一个名为home.coffee的文件,其中包含以下一行CoffeeScript

alert "Hello Nancy!"
现在事情开始变得有点模糊了。我想在客户端上运行此脚本,因此我创建了一个名为~/Views/home.sshtml的视图(并将NancyModule与Get[“/”]路由关联-未显示)。视图的html如下所示:

<head>
    <title>Hello Nancy</title>
    <script type="text/javascript" src="/content/scripts/home.js"></script>
</head>
<body>
    <p>Hello @Model.User</p>
</body>
</html>

你好,南希
你好@Model.User

视图工作正常,但是home.js文件的链接只返回404:notfound

我希望Nancy会神奇地发现,当它查找引用的home.js文件并找到home.coffee时,我需要将我的CoffeeScript编译成JavaScript。这不起作用——这是一个充满灵感的猜测

如果我将上面的script标记改为指向现有的home.coffee,则会找到该文件,但会将其作为正常的JavaScript文件处理,并给出与缺少令人厌烦的仪式相关的错误,即:“意外字符串”

问题 现在您知道了我的设置和简单要求,下面是我的问题:

如何使用NancyFX框架让CoffeeScript“正常工作”?

多谢各位

更新 Steven Robbins(以下)通过指向演示代码回答了这个问题。但为了防止您不想从GitHub获取MBs的源代码,下面是运行所需的代码行。首先将名为Bootstrapper.cs的类添加到项目中。现在添加以下代码(它对我来说就像一个符咒):

public类引导程序:DefaultNancyBootstrapper
{
受保护的覆盖无效应用程序启动(TinyIoCContainer容器、IPipelines管道)
{
基础应用程序启动(容器、管道);
StaticConfiguration.DisableErrorTraces=false;
启用(管道,新的InMemoryCache(),container.Resolve());
}
}

SassAndCoffee项目不会与Nancy中的静态内容挂钩,它(或类似的东西)将来可能会挂钩,但目前它只是一个单独的管道挂钩

如果您查看github上的示例项目:


这应该会告诉您如何进行。

谢谢您的回复。演示正是我需要开始的。我现在可以用了。
public class Bootstrapper : DefaultNancyBootstrapper
{
    protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
    {
        base.ApplicationStartup(container, pipelines);
        StaticConfiguration.DisableErrorTraces = false;
        Hooks.Enable(pipelines, new InMemoryCache(), container.Resolve<IRootPathProvider>());
    }
}