0

ノードとノード atm 用のいくつかのフレームワーク、特に機関車を試しています。しかし、機関車を使ったルーティングに行き詰まっているようです。答えが見つからないいくつかの質問があるので、ここに行きます:

  1. 機関車のアウトオブボックス インストールがファイル名として index.html.ejs を使用するのはなぜですか? index.ejsだけではないのはなぜですか? メリットは何ですか?

  2. ビューにルートを追加しようとしています: ビュー フォルダーに追加した searchName.html.ejs。これを実現するために、次のような toolController を作成しました。

    var locomotive = require('locomotive').Controller,
    toolController = new Controller();
    
    toolController.searchName = function() {
        this.render();
    }
    
    module.exports = toolController;
    

    次のように、routes.js にルートも追加しました。

    this.match('searchName', 'tool#searchName');
    

    ただし、それは機能しません (それでも、ドキュメントには機能するはずだと書かれています)。結果は 404 エラーです。では、そのルートを機能させるにはどうすればよいですか?

  3. たとえば、anExample.html へのルートを作成したいとします。どうすればいいですか?locomotive のすぐに使えるアプリでは、 localhost:3000/index.html を入力できないことに気付きました。localhost:3000/index でさえ、行きたい特定のページを追加するユーザーがたくさんいるので、これは私には非常に実用的ではないようです。では、どうすればそれを機能させることができますか?

PS: これに関するすべての質問を stackoverflow で調べ、Web を検索しましたが、まだわかりません。enter code here

4

1 に答える 1

1
  1. この命名方式の利点は、1 つのルートに複数の異なる形式を指定できることです。したがって、 と を使用して、クライアントが何を期待しているかに応じて、いずれかのビューで応答できsearch_name.html.ejsますsearch_name.xml.ejs

  2. あなたが投稿したサンプルコードにはいくつかの問題があります。よりもわかりやすいエラーが表示されるはずな404ので、そこで何が起こっているのかわかりませんが、私の環境で機能するコードの修正を次に示します。

    コントローラーで:

    //tool_controller.js
    var locomotive = require('locomotive');
    var toolController = new locomotive.Controller();
    
    toolController.searchName = function() {
      this.render();
    };
    
    module.exports = toolController;
    

    routes.js では:

    //routes.js
    module.exports = function routes()
    {
      this.match('searchName', 'tool#searchName');
    }
    

    次に、ビューを次のように変更する必要がありますviews/tool/search_name.html.ejs。ドキュメントからは明らかではありませんが、ロコモティブは searchName のようなキャメルケースのアクションを自動的に小文字化し、アンダースコアを付けます。

    アプリを起動して参照しますhttp://localhost:3000/searchName

  3. 静的な html ファイルを提供するだけの場合、最も簡単な方法は、それをpublicフォルダーにドロップすることです。このフォルダーは、クライアント側の js、css などの静的コンテンツを提供するためのものです。また、静的 HTML を提供する場合にも問題なく機能します。

于 2014-04-22T05:07:10.893 に答える