2012-02-22 4 views
6

Khi bạn hiển thị jade mẫu nhanh, bạn có thể định cấu hình ứng dụng của mình với 'view options', { layout: true } và các mẫu được hiển thị sẽ tự động được cắm vào địa chỉ body cục bộ của mẫu bố cục.Hiển thị mẫu ngọc bích có bố cục (không có biểu thị)

Tôi đang cố gắng đạt được các tệp kết xuất hành vi tương đương từ node.js, nhưng không có khung hiển thị (tôi chỉ xây dựng các tệp tĩnh như là một phần của đường ống lớn hơn).

Có vẻ như là hai lựa chọn:

  • tải cả hai mẫu chính và cách bố trí, chuyển đổi chức năng, làm cho mẫu đầu tiên và sau đó vượt qua các kết quả cho chức năng bố trí
  • Sử dụng mẫu chuẩn thừa kế và cấu trúc khối, nhưng sau đó tôi đang sử dụng một cách rõ ràng tên khối

là những lựa chọn duy nhất (trong đó, công bằng đủ, vẫn còn tuyệt vời), hoặc tôi đang thiếu một số lừa?


Sửa

Dưới đây là một cắt thô của các tùy chọn đầu tiên trong trường hợp có ai quan tâm:

// Load jade 
var jade = require('jade'); 

// Load actual template text 
var layout = fs.readFileSync('layout-path', 'utf8') 
    tpl = fs.readFileSync('tpl-path', 'utf8'); 

// Compile template rendering function 
layout = jade.compile(layout, { pretty: true, filename: 'layout-path' }); 
tpl = jade.compile(tpl, { pretty: true, filename: 'tpl-path' }); 

// Render jade template, passing in the info 
var output = layout({ body: tpl({ local1: some_var, local2: some_var }) } 

// Write rendered content to file 
fs.writeFileSync('output.html', output); 
+1

Tôi nghĩ Express 3.0 giảm bố cục (như được bật theo mặc định, ít nhất) có lợi cho mẫu thừa kế với các khối được đặt tên, vì vậy có thể điều này có thể giúp bạn trong quyết định của bạn: http://groups.google.com/group/express -js/browse_thread/thread/2ec558510be6d0a4 (và xem thêm bài khai sinh được tạo bởi express.js khi bạn khởi tạo một dự án mới: https://github.com/visionmedia/express/blob/master/bin/express). – mna

+0

@PuerkitoBio Cảm ơn thông tin; đáng chú ý, nhưng câu hỏi thực sự của tôi là * đó là những cách duy nhất để làm điều đó *? Những người đặt những thứ này cùng nhau thường nhúng một đoạn ngắn cho các trường hợp sử dụng phổ biến - Tôi không phải lúc nào cũng đủ thông minh để tìm chúng! –

+0

@AJ. cảm ơn cho đoạn trích. –

Trả lời

3

Tôi tin rằng câu trả lời là "không", bạn sẽ không bỏ lỡ bất kỳ lừa. Hai tùy chọn bạn phác thảo dường như với tôi hai cách đơn giản nhất để sử dụng ngọc bích để tạo tệp của bạn. Tất nhiên cũng có rất nhiều cách tiếp cận phi ngọc. Ví dụ: bạn có thể hợp nhất nội dung theo cách tiếp cận plates, tốt cũ String.replace hoặc chia bố cục thành các tệp phân đoạn chân trang quảng cáo đầu trang riêng lẻ và chỉ ghép chúng vào phần đầu, phần thân, thứ tự chân.

+0

Cảm ơn vì điều đó - và tôi đánh giá cao sự liên kết với khung Flatiron và nhắc nhở rằng đây không phải là vấn đề mới. Đôi khi thật dễ dàng để đánh mất chính mình trong những đám mây :) –