Node フレームワーク Sails.js の新しいコピーを解凍しました。Express 3 上に構築されています。 /config/routes.js ファイルには次のコメントがあります。
/**
* (1) Core middleware
*
* Middleware included with `app.use` is run first, before the router
*/
/**
* (2) Static routes
*
* This object routes static URLs to handler functions--
* In most cases, these functions are actions inside of your controllers.
* For convenience, you can also connect routes directly to views or external URLs.
*
*/
module.exports.routes = { ...
同じ構成フォルダーに、is_ajax.js というファイルを作成しました。
// Only run through API on ajax calls.
module.exports.isAjax = function(req, res, next){
if (req.headers['x-requested-with']) {
// Allow sails to process routing
return next();
} else {
// Load main template file
// ...
}
};
私の意図した目的は、非 Ajax GET リクエストがすべて同じテンプレート ファイルをロードするようにして、CanJS アプリケーションが URL に基づいてアプリケーションの状態を設定できるようにすることです (したがって、私の JavaScript アプリケーションは適切にブックマーク可能です)。
そのスクリプトをミドルウェアとして実行したいと思います。 この場合、他のルーティングの前に is_ajax.js スクリプトを実行するために app.use() を使用する方法を教えてください。
のようなものだと思います
var express = require('express');
var app = express();
app.use( require('./is_ajax') );
上記を実行した場合にのみ、expressモジュールが見つからないことがわかります。Express が Sails の node_modules 内のモジュールであることを確認しました。それをロードするための別の構文はありますか? 帆の横にエクスプレスの 2 番目のコピーをインストールする必要はありません。元の Sails/Express アプリ インスタンスにアクセスする方法はありますか?