Comment utiliser itinéraire personnalisé middleware avec Sails.js? (ExpressJS)
Je l'ai juste déballé une nouvelle copie du Nœud cadre Sails.js. Il est construit sur Express 3. Dans l' /config/routes.js fichier ce commentaire:
/**
* (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 = { ...
Dans le même dossier config, j'ai créé le fichier appelé 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
//...
}
};
Mon but est de faire de la non-Ajax OBTENIR toutes les demandes de charger le même fichier de modèle donc, mon CanJS application peut définir l'état de l'application en fonction de l'URL (donc mon javascript de l'application est correctement signet-mesure).
Je voudrais lancer ce script en tant que middleware. Quelqu'un peut-il svp me montrer comment utiliser l'app.usage() dans ce cas is_ajax.js script à exécuter avant d'autres routage?
Je suppose que c'est quelque chose comme
var express = require('express');
var app = express();
app.use( require('./is_ajax') );
Que lorsque je fais ci-dessus, il me dit qu'il ne trouve pas le module express. J'ai vérifié que l'express est un module à l'intérieur Voiles " node_modules. Est-il une autre syntaxe pour le chargement? Je préfère ne pas avoir à installer un deuxième exemplaire de l'express aux côtés de voiles. Est-il un moyen d'accéder à l'original Voiles/Express instance de l'application?
OriginalL'auteur Marshall Thompson | 2013-08-31
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les politiques pour atteindre cet objectif. Enregistrer votre
isAjax
fonction isAjax.js en vertu de votre api/dossier de stratégies, et de le modifier pour l'utiliser justemodule.exports
au lieu demodule.exports.isAjax
. Puis dans votre config/policies.js fichier, vous pouvez spécifier les contrôleurs/actions pour appliquer la politique pour exécuterisAjax
pour chaque itinéraire, il suffit de faire:dans ce fichier.
OriginalL'auteur sgress454
J'ai eu le même problème de trouver comment rendre l'utilisation des middlewares.
Elles sont définies dans le
config/policies.js
.Donc, si vous souhaitez utiliser middlewares(aka politiques) comme de vieux style, vous pouvez effectuer les opérations suivantes (cela peut ne pas être la plus belle façon):
Cependant, la vraie sailjs façon est de mettre de telles politiques dans
api/policies/
dossierOriginalL'auteur rishabhmhjn
Pour ajouter compresser middleware de l'express, je trouve ce fil et
voiles-middleware-exemple-question sont très utiles.
npm install express
var exp = require('express')
$app_dir/config/local.js
"l'express:" est obsolète (dans les voiles 0.12.1). utiliser "http:".
OriginalL'auteur TianxiLiu