2012-06-27 39 views
8

Tôi có 3 tệp: layoutA.jade, layoutB.jade và index.jade. Làm thế nào tôi có thể lập trình thiết lập bố trí mà index.jade sẽ mở rộng?Làm cách nào để bạn tự động đặt bố cục cho mẫu Jade để mở rộng trong Node.js/Express 3.0?

Tôi đã cố gắng sử dụng:

app.set('view options', { layout: false }); 

với:

res.render('index', { title: 'Express', layout: 'layoutB' }); // older 2.x way? 

tôi dường như không thể ghi đè lên bất cứ điều gì thiết lập một cách rõ ràng trong file index.jade. Bỏ qua dòng mở rộng bên trong tệp index.jade cũng không hoạt động.

Trả lời

6

phép nói rằng các tập tin ngọc nằm trong thư mục sau:

+ views 
    + shared 
    - layoutA.jade 
    - layoutB.jade 
    + home 
    - index.jade 

Thêm các thiết lập bố trí theo đúng thứ tự, và chỉ định thư mục quan điểm gốc:

app.set('views', __dirname + '/views'); 
app.set('view engine', 'jade'); 
app.set('view options', { layout: 'shared/layoutA' }); 

Hãy chắc chắn rằng bạn chỉ định đúng thư mục (trong trường hợp này là 'xem'). Ngoài ra, hãy đảm bảo chỉ định bố cục mặc định hợp lệ. Kiểm tra xem thao tác này có hoạt động với trang thử nghiệm trước khi bạn đi sâu hơn không.

Một khi điều đó đang làm việc bạn có thể bố trí mặc định như thế này:

if(someImportantVar) { 
    res.render('home/index', { title: 'Different layout!', layout: 'shared/layoutB' }); 
} else { 
    res.render('home/index', { title: 'Default layout!'}); 
} 
+0

Đúng tôi nếu tôi là sai, nhưng giải pháp này không phải là đúng nữa, phải không? –

+0

@AugustinRiedinger Theo tiêu đề câu hỏi, nó phải chính xác cho Express 3.0. Liệu nó không hoạt động trong phiên bản đó? – JimmyBoh

+0

Tôi không nghĩ rằng sẽ có vấn đề tương thích về 'express 3' vs current' express 4.x' nhưng trên mặt bích: Sử dụng 'pug 2.0', tôi có thể nói rằng tham số' view options' không được sử dụng nữa (hoặc tôi rất vui được sai). Đã trải qua rất nhiều tìm kiếm để đạt được bố cục năng động trong ngọc/pug mà không thành công, vì vậy câu trả lời này đã gây phiền toái cho tôi, mặc dù không sai. –

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