Đối với hầu hết các thư viện javascript khuôn mẫu, khuôn mẫu xảy ra trong hai giai đoạn.
- Vượt qua một chuỗi (thường chứa HTML) vào chức năng "biên dịch" của công cụ mẫu. Điều này trả về cho bạn một "chức năng mẫu", bạn có thể thực thi. Điều này chỉ cần xảy ra một lần cho mỗi mẫu cho toàn bộ thời gian của ứng dụng của bạn.
- Hiển thị mẫu thành đầu ra (thường là HTML) bằng cách gọi hàm mẫu được biên dịch và cung cấp "ngữ cảnh" dữ liệu sẽ có sẵn cho mẫu. Điều này có thể được thực hiện nhiều lần với dữ liệu ngữ cảnh khác nhau để xuất HTML khác nhau.
.
//Compile your template string into a function
//Happens 1 time only then you can cache the function
var templateFunction = _.template("<p>Your <%- part %> is so <%- description %></p>");
//Generate your output HTML with varying sets of data.
var html1 = templateFunction({part: "nose", description: "big"});
//html1 has "<p>Your nose is so big</p>";
var html2 = templateFunction({part: "cat", description: "fat"});
//html2 has "<p>Your cat is so fat</p>";
Đây là ý tưởng cơ bản tương tự cho các mẫu gạch dưới, JST, ngọc bích và hầu hết các công cụ tạo khuôn mẫu khác. "Dữ liệu ngữ cảnh" là cách mẫu của bạn có quyền truy cập vào mô hình của bạn. Nếu bạn muốn, bạn có thể cho phép truy cập trực tiếp vào mô hình cơ bản bằng cách cung cấp ngữ cảnh như: {model: myModel};
. Sau đó, trong mẫu của bạn, bạn có thể làm một cái gì đó như <%= model.get("displayName") %>
.
Nguồn
2012-03-19 13:33:58
Bạn có thể cung cấp một số chi tiết/đoạn mã cho biết mã nào không hoạt động không? – rfunduk