Nếu bạn đang sử dụng 'bày tỏ mô-đun -handlebars', sau đó những điều sau đây nên làm việc:
// ...
app.set("views", __dirname);
exphbs.ExpressHandlebars.prototype.layoutsDir = 'path/to/directory/';
app.engine('handlebars', exphbs({defaultView: 'name-of-template'}));
// ...
tôi đến điều này bằng cách đào xung quanh trong nguồn của module, nó quay ra rằng dòng này ...
// express-handlebars/lib/express-handlebars.js (line 55 in v1.2.2)
ExpressHandlebars.prototype.layoutsDir = 'views/layouts/';
... là những gì mang lại cho hành vi mặc định luôn tìm kiếm trong '{{bất cứ điều gì mà bạn chỉ định}}/views/layouts /'
Vì vậy, về cơ bản - nếu, có lẽ, bạn có một thư mục khác nhau cấu trúc trong tâm trí hoặc có một số lý do khác để ghi đè lên nó, bạn có thể bằng cách sử dụng dòng trong ví dụ của tôi. Chỉ cần chắc chắn rằng bạn làm điều này trước bạn nhanh chóng exphbs.
Nếu bạn đang sử dụng một số mô-đun khác (tôi không chắc chắn điều gì ở ngoài đó) có khả năng là chúng có một số cài đặt tương tự có thể bị ghi đè bằng một chút jiggery-pokery (chỉ cần chạy 'tìm' trên nội dung tệp cho 'lượt xem/bố cục /'.
lưu ý rằng tôi đang thoát khỏi 'app.set ("views", __dirname);' để giữ mẫu ở bất kỳ đâu trong thư mục máy chủ của tôi và hiển thị chúng như vậy :
res.render("moduleName/templateName");
Sau khi cập nhật lên v2.0.1 trên sẽ không hoạt động, thay vào đó bạn có thể vượt qua các thư mục mặc định trong khi một cuộc tranh cãi như sau:
var hbs = exphbs.create({
layoutsDir: 'app/server/',
...
tôi muốn cảm ơn bạn Heihachi bạn đã đưa lên câu hỏi này, tôi đã được tìm kiếm một cách để tích hợp handlebars w/Express nhưng không thể tìm thấy một ví dụ điển hình, nhìn vào dòng lệnh máy phát nhanh, làm tôi nhớ lại cách sử dụng hbs, và cho tôi một bản demo đơn giản nhưng tốt mà tôi không thể tìm thấy Trực tuyến. Cảm ơn. – Bharat