Я только что распаковал новую копию рамок узла Sails.js. Он построен на Экспрессе 3. В /config/routes.js файла этот комментарий:Как использовать настраиваемое промежуточное программное обеспечение маршрута с Sails.js? (ExpressJS)
/**
* (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 приложение правильно закладки-состоянии).
Я хотел бы запустить этот скрипт как промежуточное ПО. Может кто-нибудь, пожалуйста, покажите мне, как использовать app.use() в этом случае, чтобы скрипт is_ajax.js выполнялся перед другой маршрутизацией?
Я предполагаю, что это что-то вроде
var express = require('express');
var app = express();
app.use(require('./is_ajax'));
Только тогда, когда я выше, он говорит мне, что он не может найти экспресс-модуль. Я проверил, что экспресс является модулем в узлах узла Sails. Есть ли другой синтаксис для его загрузки? Я бы предпочел не устанавливать вторую копию экспресс вместе с парусами. Есть ли способ получить доступ к оригинальному экземпляру приложения Sails/Express?
Thx.(+1), но я не думаю, что буду писать это так - thx для дополнительной стрелы в нашем колчане. – Cody