2016-07-11 5 views
-1

私はカスタムミニルータを実装しなければなりませんし、エクスプレスjsでインスピレーションを探しています。node.jsのカスタムミニルータ

エクスプレスjsで私を案内できる人は、フードの下にルートハンドラを作成できますか?

たとえば、次のような実装方法はありますか?

ノード・サーバ・コード

http.createServer(function (req, res) { //how routing is done after? 
    //req??? 
    req.get("/customers", function(){}) 
    req.get("/customers/:id", function(){}) 
}).listen(9615); 

は、正規表現を使用して明示jsのでしょうか? githubリポジトリの適切なスクリプトも参照してください。

+2

Expressはパスを正規表現に変換するために['path-to-regexp'](https://www.npmjs.com/package/path-to-regexp)を使用します。 – robertklep

+0

@robertklep、ありがとう、それは非常に近いです、私は正規表現をあまりにも多くはしませんが、正規表現を使って上記の2つのルートを処理する答えとして私に例を書いてください。 – user2727195

+0

@robertklep正規表現をgithubページからも見つけました。http://forbeslindesay.github.io/express-route-tester/ – user2727195

答えて

1

公示番号robertklep

フードエクスプレスでは、path-to-regexpを使用します。

私も、私が欲しかったすべてが基本的なルータであるとき、ここに関わる多くの再発明するホイールはありませんlink

/^(?:\/(?=$))?$/i 

URLを解析するために速達JSで使用されている自分のページから正規表現を見つけましたフレームワーク全体を取得することなく、そのすべてが私のプロジェクトに依存することはありません。

1

これをチェックする必要がありますhttps://github.com/expressjs/express/blob/master/lib/router/index.js。これはルーティングのためのexpressjsの別個のモジュールであり、あなたは車輪を全面改革することなくあなたの個人的な使用のためにそれを引き出すことができます。

[編集] - それがどのように行われる可能性があるか考えてください。

var routes = []; 
var app = {}; 
app.get = function(pattern, cb) { 
    var splits = pattern.split("/"); 
    var route = ""; 
    var regex = ""; 
    for(i=0; i < splits.length; i++) { 
     if (splits[i].indexOf(':') === -1) { 
      route += splits[i]+"/"; 
     } else { 
      regex = splits[i].replace(":", ""); 
     } 
    } 
    routes.push({ route : routes, regex : regex, cb: cb }); 
} 

app.get("/customers", callback); 

. 
. 
. 
// handle incoming request. requestPath comes from server 
var requestPath = "/customers"; // example only. 

app.handleRequest(requestPath) { 
    for(i = 0; i < routes.length; i++) { 
     if(routes[i].route === requestPath) { 
      cb = routes[i].cb; 
     } 
    } 
    cb(); 
} 
+0

私は車輪を再発明し、実際に何が起こっているのか理解して、質問のコード解決策を探していることに恐れています – user2727195

+0

しかし、なぜですか? IMHOでは、expressフレームワークをルーティングするindex.jsに存在する関数を使用するだけです。基本的なルータは難しくありませんが、機能を追加することは苦労でしょう。 – kawadhiya21

+0

真実なので、私は自分のルートを使って非常に基本的な実装を探しています。 – user2727195

0

the Express JS documentationをご覧ください。それはかなりです。たとえば、Express JSを使用するコードの一部:

// GET method route 
app.get('/', function (req, res) { 
    res.send('GET request to the homepage'); 
}); 

// POST method route 
app.post('/', function (req, res) { 
    res.send('POST request to the homepage'); 
}); 

正規表現は、使用できます。例:

さらに、the Express JS GitHub repositoryの例をご覧ください。

Express JSのルータ実装については、their GitHub code (router script)を参照してください。

+0

いいえ私はどのようにエクスプレスjsのルータを実装するためではなく、ルータのソースコードを書くことを意味します – user2727195

+0

答えの最後にあなたが本当にコードする必要がありますあなたのインスピレーションのためのExpress JSルータの実装へのリンクを入れてあなた自身の解決策。 –

+0

2台のルータをどのように使っているのか教えてください。 – user2727195