2012-02-21 31 views
8

sự khác biệt giữa là gì:Sự khác nhau giữa biên dịch(), phân tích cú pháp(), và render() trong mustache.js

Mustache.compile(), Mustache.parse(), và Mustache.render()

trong mustache.js phiên bản mới 0.5. 0, và có lẽ cho điểm thưởng bạn có thể cho chúng tôi biết sự khác biệt giữa phân tích cú pháp và biên dịch nói chung là gì.

+1

Sử dụng nguồn, Luke. – Tomalak

+14

Đọc nguồn, tôi có, nhưng vẫn thấy sự khác biệt, tôi không thể. – alnafie

Trả lời

15

EDIT

Với một API change introduced in version 0.8.0, phương pháp compile() đã được tích hợp vào parse(). Biên dịch các mẫu không còn cần thiết.


Mustache.parse()

Cú pháp phân tích mẫu và tạo ra một chức năng cơ thể hoạt Javascript (một chuỗi) từ nó. Trong quá trình đó, nó thông báo về bất kỳ lỗi cú pháp nào gặp phải trong mẫu.

Mustache.compile()

Sử dụng chức năng cơ thể trở về từ một thành công parse() để tạo ra một hàm JavaScript thực tế. Hàm được tạo được đặt trong bộ nhớ cache để sử dụng lại.

Mustache.render()

Mất chức năng thích hợp cho một mẫu nhất định (một trong đó được tạo ra bởi compile()) và áp dụng nó vào dữ liệu thực tế. Điều này tạo ra kết quả có nghĩa là được hiển thị trên màn hình.

+0

Cảm ơn Tomalak! Tôi có thể thấy cách biên dịch trước khi dựng hình sẽ có ý nghĩa đôi khi đối với hiệu suất có thể ?, nhưng tôi không thể nghĩ ra một tình huống nào có ý nghĩa khi sử dụng phân tích cú pháp. Bạn có thể cho một ví dụ mà nó sẽ? – alnafie

+0

@alnafie Việc phân tích cú pháp luôn là bước đầu tiên trong việc chuyển đổi một chuỗi tùy ý (một chuỗi xảy ra tuân thủ cú pháp Mustache) thành một thứ mà một máy tính có thể hoạt động. Đó chính là điều xảy ra với các tệp mã nguồn JavaScript của bạn khi chúng được trình duyệt đọc. Nếu không phân tích cú pháp đầu vào bạn cho nó, không máy tính nào có thể làm được gì cả. moustache.js biên dịch khuôn mẫu thành một hàm JavaScript được thiết kế để làm chính xác những gì khuôn mẫu nói, và không có gì khác. Cuối cùng, điều này sẽ chạy nhanh hơn rất nhiều so với việc giải thích mẫu mỗi khi bạn gọi ("render") nó. – Tomalak

+0

Việc phơi bày một giai đoạn phân tích cú pháp cũng cho phép điều gì đó có ý nghĩa để gắn vào một memcache và sử dụng ở giao diện người dùng của bạn. –

1

Chỉ cần một mẹo Mustache.parse(template) là tùy chọn và tăng tốc sử dụng mẫu sau này. Điều này rất hữu ích khi bạn muốn sử dụng lại mẫu của mình bằng một tập dữ liệu (lớn). Nếu đây không phải là trường hợp một cuộc gọi đến Mustache.render(), tạo ra kết quả cuối cùng, là đủ.

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