2015-06-07 16 views
7

Framework: node.js/express.js/Jadenode.js/Jade - Làm thế nào để biên dịch trước các tập tin ngọc và lưu nó?

Câu hỏi: trong env sản xuất, khi một tệp tin ngọc bích được hiển thị bằng cách thể hiện, bộ đệm của ngọc bích sẽ hiển thị trong tương lai nhanh hơn.

Khi tôi bắt đầu ứng dụng Node.js, làm thế nào tôi có thể pre-biên dịch (hoặc) pre-render (như hâm lại) tất cả các file ngọc bích vì vậy nó đã có trong bộ nhớ cache khi yêu cầu bắt đầu đi vào ...

Tôi có thể sử dụng một đệ quy thư mục, tôi chỉ cần biết làm thế nào để biên dịch trước (hoặc) trước khi render.

Điều này có khả thi không?

Trả lời

6

Jade có mẫu pre-biên dịch và bộ nhớ đệm được xây dựng trong.

http://jade-lang.com/api/

Đơn giản chỉ cần xác định cache: true tùy chọn để jade.compileFile, và lặp qua tất cả các file mẫu của bạn.

var options = {cache: true}; 

// iterate/recurse over your jade template files and compile them 
jade.compileFile('./templates/foo.jade', options); 


// Jade will load the compiled templates from cache (the file path is the key) 
jade.renderFile('./templates/foo.jade'); 
+1

nơi để viết mã này? –

+0

Bất cứ nơi nào bạn thích ... bạn có thể gọi 'jade.renderFile' trực tiếp từ một lộ trình nhanh, nhưng tôi nghi ngờ nếu bạn sử dụng ngọc bích như một công cụ xem, nó sẽ tận dụng lợi thế của bộ nhớ đệm. –

1

Nếu bạn không sử dụng bất kỳ thông số, bạn có thể biên dịch mẫu ngọc trực tiếp sang HTML với grunt hoặc ngụm và làm cho nó xem cho sửa đổi tập tin

Hãy thử nó từ dòng lệnh: jade view/map-beacons.jade -D

Nếu bạn cần sử dụng các thông số, tôi sẽ sử dụng một cái gì đó giống như trong câu trả lời của Andrew Lavers.

compileFile trả về một chức năng mà bạn có thể sử dụng để vượt qua trong các thông số tức là fn({ myJsVar: 'someValue' })

Ngoài ra còn có một tùy chọn của khách hàng trong các dòng lệnh nhưng tôi đã không tìm thấy bất kỳ sử dụng cho nó: jade view/map-beacons.jade -cD

0

tôi làm giải pháp này, mã này bên ngoài http.createServer chức năng

let cache_index=jade.renderFile('index.jade'); 

và khi quay trở lại xem

res.statusCode = 200; 
res.setHeader('Content-Type', 'text/html');  
res.end(cache_index); 

khi sử dụng giải pháp này chỉ máy chủ trở lại 1ms nhưng không có giải pháp chỉ số máy chủ trở lại giữa 150ms đến 400ms

kết quả:

Ảnh 1 với bộ nhớ cache enter image description here

Ảnh 2 mà không cần bộ nhớ cache enter image description here

Các vấn đề liên quan