Tôi vừa mới giải nén một bản sao mới của khung Node Sails.js. Nó được xây dựng trên Express 3. Trong tập tin /config/routes.js là bình luận này:Làm thế nào để sử dụng middleware tuyến tùy chỉnh với 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 = { ...
Trong cùng thư mục cấu hình tôi đã tạo tập tin gọi là 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
// ...
}
};
mục đích của tôi là để làm cho phi Ajax GET yêu cầu tất cả các tải các tập tin cùng một mẫu để ứng dụng CanJS tôi có thể thiết lập các trạng thái ứng dụng dựa trên URL (để ứng dụng javascript của tôi là đánh dấu-thể đúng).
Tôi muốn chạy tập lệnh đó làm phần mềm trung gian. Có thể ai đó vui lòng chỉ cho tôi cách sử dụng app.use() trong trường hợp này để chạy tập lệnh is_ajax.js trước khi định tuyến khác không?
Tôi đoán nó là cái gì như
var express = require('express');
var app = express();
app.use(require('./is_ajax'));
Chỉ khi tôi làm các việc trên, nó nói với tôi rằng nó không thể tìm thấy các mô-đun nhanh. Tôi đã xác minh rằng Express là một mô-đun bên trong node_modules của Sails. Có cú pháp khác để tải nó không? Tôi không muốn phải cài đặt một bản sao thứ hai của express cùng với buồm. Có cách nào để truy cập phiên bản ứng dụng Sails/Express gốc không?
Thx.(+1) nhưng tôi không nghĩ rằng tôi sẽ viết nó theo cách đó - thx cho mũi tên thêm trong rung động của chúng tôi mặc dù. – Cody