2012-01-16 45 views
6

Tôi đang cố gắng lấy công cụ khuôn mẫu để làm việc với express.js. Nỗ lực ban đầu của tôi là:Công cụ tạo mẫu tùy chỉnh Express.js (tấm)

app.register('.html', { 
    compile: function (str, options) { 
     var template = new plate.Template(str); 
     return function(locals) { 
      return template.render(locals, function(err, data) { 
       return data; 
      }); 
     } 
    } 
}); 

Tôi thấy rằng vấn đề là template.render không trả lại bất kỳ thứ gì (chưa xác định) nhưng chuyển dữ liệu đến gọi lại. Tôi không chắc chắn làm thế nào để làm cho nó hoạt động trong trường hợp này như Express hy vọng các chức năng biên dịch để trả về một hàm trả về trực tiếp một mẫu được trả lại khi được gọi.

Tôi đã suy nghĩ có lẽ tôi có thể sử dụng lời hứa để giải quyết vấn đề này nhưng không thành công ở đó vì mã nhanh không mong đợi một lời hứa sẽ được trả lại. Im không quá tốc độ trên những lời hứa vì vậy tôi có thể chỉ được làm việc đó sai:

app.register('.html', { 
    compile: function (str, options) { 
     var promise = new Promise(); 
     var template = new plate.Template(str); 
     return function(locals) { 
      template.render(locals, function(err, data) { 
       promise.resolve(data); 
      }); 
      return promise; 
     } 
    } 
}); 

Dưới đây là một ví dụ về việc thực hiện tùy chỉnh mà không hoạt động. Sự khác biệt được rằng nhấn mạnh các mẫu template() chức năng trực tiếp trả về chuỗi render như vậy:

app.register('.html', { 
    compile: function (str, options) { 
     var template = _.template(str); 
     return function (locals) { 
      return template(locals); 
     }; 
    } 
}); 

Tôi thực sự muốn sử dụng tấm mẫu kể từ khi {% khối%} thẻ là rất tuyệt vời. Bất kỳ trợ giúp được đánh giá cao.

tài liệu thích hợp:

plate's github docs

express.js app.register docs

+0

Tác giả của đĩa nhanh chóng thêm bản vá vào dự án để làm cho nó tương thích với tốc độ cao sau khi tôi hỏi điều này. [email protected]+ có thay đổi và bạn có thể xem chi tiết triển khai [tại đây] (https://github.com/chrisdickinson/plate/wiki/Getting-Started---In-Node) – joshontheweb

+1

Bạn nên thêm câu trả lời vào câu hỏi này và sau đó chấp nhận nó nếu đó là sự thật! – tjarratt

Trả lời

5

Các tác giả của tấm kịp thời bổ sung thêm một bản vá cho dự án để làm cho nó tương thích với tốc sau khi tôi hỏi này. [email protected]+ có thay đổi và bạn có thể xem chi tiết triển khai here

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