Trước khi tôi hỏi về app.router
tôi nghĩ tôi nên giải thích ít nhất những gì tôi nghĩ sẽ xảy ra khi làm việc với phần mềm trung gian. Để sử dụng phần mềm trung gian, chức năng sử dụng là app.use()
. Khi phần mềm trung gian đang được thực thi, nó sẽ gọi phần mềm trung gian tiếp theo bằng cách sử dụng next()
hoặc làm cho nó để không có thêm phần mềm trung gian nào được gọi. Điều đó có nghĩa là thứ tự mà tôi thực hiện các cuộc gọi phần mềm trung gian của mình rất quan trọng, bởi vì một số phần mềm trung gian phụ thuộc vào phần mềm trung gian khác và một số phần mềm trung gian gần cuối thậm chí có thể không được gọi.
Hôm nay tôi đã làm việc trên ứng dụng của mình và máy chủ của tôi đang chạy ẩn. Tôi muốn thực hiện một số thay đổi và làm mới trang của mình và xem các thay đổi ngay lập tức. Cụ thể, tôi đã thay đổi bố cục của mình. Tôi không thể làm cho nó hoạt động được vì vậy tôi đã tìm kiếm Stack Overflow để tìm câu trả lời và tìm thấy câu hỏi này . Nó nói để chắc chắn rằng express.static()
bên dưới require('stylus')
. Nhưng khi tôi nhìn vào mã của OP, tôi thấy rằng anh ta có app.router
cuộc gọi của anh ta ở cuối cuộc gọi phần mềm trung gian của anh ta, và tôi đã cố gắng tìm hiểu tại sao lại như vậy.
Khi tôi tạo ứng dụng Express.js của mình (phiên bản 3.0.0rc4), tôi đã sử dụng lệnh express app --sessions --css stylus
và trong tệp app.js của mình, mã được thiết lập với app.router
cả trên express.static()
và require('stylus')
các cuộc gọi của tôi. Vì vậy, có vẻ như, nếu nó đã được thiết lập theo cách đó, thì nó sẽ giữ nguyên như vậy.
Sau khi sắp xếp lại mã của tôi để tôi có thể thấy bút stylus của mình thay đổi, nó trông như thế này:
app.configure(function(){
//app.set() calls
//app.use() calls
//...
app.use(app.router);
app.use(require('stylus').middleware(__dirname + '/public'));
app.use(express.static(__dirname + '/public', {maxAge: 31557600000}));
});
app.get('/', routes.index);
app.get('/test', function(req, res){
res.send('Test');
});
Vì vậy, tôi quyết định rằng bước đầu tiên sẽ là tìm hiểu tại sao điều quan trọng là thậm chí phải có app.router
trong mã của tôi. Vì vậy, tôi nhận xét nó, bắt đầu ứng dụng của tôi và điều hướng đến /
. Nó hiển thị trang chỉ mục của tôi tốt. Hmm, có lẽ nó hoạt động được vì tôi đã xuất định tuyến từ tệp tuyến đường của mình (Rout.index). Vì vậy, tiếp theo tôi điều hướng đến /test
và nó hiển thị Kiểm tra trên màn hình. Haha, OK, tôi không có ý tưởng gì app.router
không. Cho dù nó có được bao gồm trong mã của tôi hay không, định tuyến của tôi vẫn ổn. Vì vậy, tôi chắc chắn đang thiếu một cái gì đó.
Vì vậy, đây là câu hỏi của tôi:
Ai đó có thể vui lòng giải thích những gì app.router
không, tầm quan trọng của nó và nơi tôi nên đặt nó trong các cuộc gọi phần mềm trung gian của tôi? Nó cũng sẽ tốt nếu tôi có một lời giải thích ngắn gọn về express.static()
. Theo như tôi có thể nói, express.static()
là một bộ đệm thông tin của tôi và nếu ứng dụng không thể tìm thấy trang được yêu cầu, nó sẽ kiểm tra bộ đệm để xem nó có tồn tại không.