私はこのトピックによるNode.jsのConnectおよびエクスプレスutilsの
の世界に新たなんだ:What is Node.js' Connect, Express and “middleware”?
私は、ConnectはExpress
の一部であった私は、コードに少し掘っていることを学びました
./myProject/node_modules/express/lib/utils.js
、より良い:
と私は2つの非常に興味深いのファイルを見つけましたこれらの2つのファイルは便利な機能が満載で、正しく呼び出す方法が不思議でした。
var express = require('express')
, resource = require('express-resource')
, mongoose = require('mongoose')
, expresstUtils =
require('./node_modules/express/lib/utils.js');
, connectUtils =
require('./node_modules/express/node_modules/connect/lib/utils.js');
しかし、私はそれは少し不器用な発見し、どのような私の他のファイルについて:
は限り、./myProject/app.js
で、それは私が何ですか?
例えば、ここに私のルートの1つである:
myResources = app.resource(
'myresources',
require('./routes/myresources.js'));
、ここではmyresources.js
の内容です:
exports.index = function(req, res)
{
res.render('./myresources.jade', { title: 'My Resources' });
};
exports.show = function(req, res)
{
fonction resourceIsWellFormatted(param)
{
// Here is some code to determine whether the resource requested
// match with the required format or not
// return true if the format is ok
// return false if not
}
if (resourceIsWellFormatted(req.params['myresources']))
{
// render the resource
}
else
{
res.send(400); // HEY! what about the nice Connect.badRequest in its utils.js?
}
};
あなたはres.send(400)
後のコメントで見ることができるように、私は場合は自問しますConnectモジュールのutils.js
ファイルにあるbadRequest
関数を使用することができます。
いいファイルmd5
は同じファイルにありますか?
私はこれがhugly?:
var connectUtils =
require('../node_modules/express/node_modules/connect/lib/utils.js');
または、(さえapp.js
用)よりエレガントな解決策がありますか?それらを使用するために私のmyresources.js
の開始時に呼び出す配置する必要がありますか
ありがとうございました!
このテクニックは将来的なものであるとは期待できません。 'express @ 4.0.0'は内部的にどのように機能するのかを完全に変えるかもしれないし、あなたが知っているすべてが' connect'を落とす可能性があります。また、プロジェクトの依存関係に 'connect'(' express'で使われているのと同じバージョン)をインクルードすると、この手法はうまくいきません。 –
@ GauthamBadhrinathan私はすぐに接続することを予期していません:)しかし、接続は簡単にファイルの場所やその中にあるものを変更することができます - IMHOははるかに大きな危険です。 このテクニックは、プロジェクトの依存関係に接続を含める場合でも機能しますが、パスはまだ表現するように指定されているため、node.jsが最初に表示されます。 node.jsのドキュメント(ファイルモジュール)セクション: *先頭に '/'または 'が付いていません。/ 'を指定すると、モジュールは「コアモジュール」かnode_modulesフォルダからロードされます* http://nodejs.org/api/all.html#all_file_modules – Leonidaz
はい、それは 'express 'は「コアモジュール」か「node_modules」にあります。しかし、 'connect'がプロジェクトの依存関係として追加された場合、' express/node_modules'ディレクトリ内に 'connect' *というディレクトリが見つかりません。 –