0

私はNancyFXを初めて使用し、現在、Web アプリケーション開発に対する控えめなアプローチに魅了されています。深淵に身を投じて、 CoffeeScriptを使用してSassの利点も調査したいと考えて います。

セットアップ

この組み合わせを有効にするために、VS2010 テンプレート ( Nancy Accessoriesプロジェクトにあります) を使用して新しい空の Web アプリケーションを作成しました。次に、VS PackageManager を使用してアプリケーションを Nancify し、SassAndCoffee サポートを追加しました。

PM> Install-Package Nancy
PM> Install-Package Nancy.SassAndCoffee

ここまでは順調ですね。次に、~/Content/scriptsフォルダーを作成し、そこに次の CoffeeScript 行を含むhome.coffeeというファイルを配置しました。

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>

ビューは問題なく動作しますが、home.jsファイルへのリンクは 404: Not Found を返すだけです。

参照されているhome.jsファイルを探して代わりにhome.coffeeを見つけたときに、CoffeeScript を JavaScript にコンパイルする必要があることをナンシーが魔法のように解決してくれることを願っています。これはうまくいきませんでした。

代わりに既存のhome.coffeeを指すように上記のスクリプト タグを変更すると、ファイルは検出されますが、通常の JavaScript ファイルとして処理され、面倒な式がないことに関するエラーが発生します。つまり、「予期しない文字列」です。

質問

これで、私のセットアップと簡単な要件がわかったので、ここで私の質問です。

NancyFX フレームワークを使用して CoffeeScript を「正常に動作させる」にはどうすればよいですか?

ありがとうございました

アップデート

Steven Robbins (以下) は、デモ コードを示してこの質問に答えています。ただし、GitHub から何 MB ものソースを取得したくない場合に備えて、作業を進めるために必要な行を次に示します。最初に Bootstrapper.cs というクラスをプロジェクトに追加します。次に、次のコードを追加します(私にとっては魅力的でした):

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>());
    }
}
4

1 に答える 1

1

SassAndCoffee プロジェクトは Nancy の静的コンテンツ ビットにフックしません。将来的には (または同様のものが) 実装される可能性がありますが、現時点では別のパイプライン フックにすぎません。

github のサンプル プロジェクトを見ると、次のようになります。

https://github.com/NancyFx/Nancy.SassAndCoffee/tree/master/src/Nancy.SassAndCoffee.Demo

それは、それを実現する方法を示しているはずです。

于 2012-03-13T14:23:10.707 に答える