2010-09-22 29 views
6

Tôi đang đánh giá http://github.com/janl/mustache.jsCó điều gì tôi không thể làm với bộ ria mép không?

và tôi đang nghĩ về cách nó sẽ hoạt động chung theo thời gian. Nếu tôi chỉ xây dựng một vật thể khổng lồ, thì có phải ria mép đủ để biến đổi nó thành bất kỳ dạng HTML nào không?

Vì vậy, câu hỏi của tôi là. Có thứ gì mà bộ ria mép không thể làm được không?

(Suy nghĩ của tôi là nó chỉ là chuyển đổi cây từ JSON sang HTML, nhưng tôi không chắc chắn làm thế nào để xác nhận rằng hoặc đạt được đủ sự tự tin để đặt cược chống lại nó)

tiếp tục làm rõ

Giả sử rằng tất cả những gì tôi có là một vật thể khổng lồ và sau đó tôi đưa ra một mẫu ria mép trong một lần lặp; là có bất cứ điều gì trong HTML mà không thể được thể hiện trong bộ ria mép thông qua ngôn ngữ của nó.

+1

Tôi bỏ phiếu cho wiki cộng đồng. – vol7ron

+3

Với tên tôi mong bạn có thể làm cho phụ nữ thét lên và ném một quả bóng chày trung bình. – NickHeidke

Trả lời

8

Vì Mustache chỉ là một ngôn ngữ mẫu trong JavaScript, bạn có thể làm bất cứ điều gì bạn có thể làm trong JavaScript, và JavaScript là Turing hoàn thành. Vì vậy, không, không có gì là bạn không thể làm trong Mustache; trong thực tế, không có gì bạn có thể làm trong Mustache mà bạn không thể tự làm trong JavaScript, nó chỉ làm cho một số thứ thuận tiện hơn.

Khi đánh giá một cái gì đó như thế này, thay vì xác định những gì nó có thể và không thể làm, nó là hữu ích hơn để hỏi "nó làm cho những điều mà tôi cần phải làm dễ dàng" và "nó làm cho những sai lầm tôi muốn tránh khó thực hiện. " Ví dụ:

Ví dụ, một cách để đánh giá nó là liệu nó có giúp tránh được các cuộc tấn công cross-site scripting (XSS) hay không. Theo tài liệu "mustache.js không thoát khỏi tất cả các giá trị khi sử dụng cú pháp ria mép tiêu chuẩn kép", do đó, có vẻ như nó làm tốt công việc giúp ngăn chặn các loại tấn công này.

Để thực hiện công việc đánh giá nó tốt hơn, bạn sẽ cần phải cung cấp thêm chi tiết về những yêu cầu của bạn. Bạn đang cố làm gì vậy? Bạn cần tích hợp những gì?

chỉnh sửa

Ngay cả sau khi làm rõ của bạn, nó vẫn không hoàn toàn rõ ràng những gì bạn đang tìm kiếm. Thậm chí hạn chế bản thân để mở rộng một mẫu Mustache đơn lẻ với một khung nhìn duy nhất làm đầu vào, bạn có thể tạo ra bất kỳ chuỗi tùy ý nào, và do đó bất kỳ HTML tùy ý nào bằng cách chỉ cho chuỗi đó là đầu vào.

Nếu bạn hỏi liệu bạn có thể thực hiện bất kỳ tính toán tùy ý nào cho mẫu và chế độ xem để hiển thị hay không, thì câu trả lời đó cũng có, vì Mustache cho phép bạn gọi hàm trong mẫu của mình và các chức năng đó được viết trong Javascript, đó là Turing hoàn thành.

Nhưng cả hai đều là những câu trả lời nhỏ; bạn có thể tạo ra bất kỳ đầu ra nào bằng cách cung cấp đầu vào đó, hoặc bạn có thể thực hiện bất kỳ phép tính nào bằng cách sử dụng phần thứ tự cao hơn. Như tôi đã nói trước đây, những gì có thể làm với nó là ít thú vị hơn những gì là dễ dàng để làm với nó, và những gì sai lầm là cứng để thực hiện với nó.

Tôi giả sử một điểm yếu, đó có thể là loại bạn đang tìm kiếm, là nếu bạn cần nhiều quyền lực hơn bản thân hệ thống Mustache cung cấp, bạn cần chuyển các chức năng đó như một phần của khung nhìn. Vì vậy, bạn cần phải conflate đối tượng đang được hiển thị với mã sẽ được sử dụng để hiển thị nó.Và nếu bạn loại bỏ khả năng gọi Javascript từ các khung nhìn được truyền vào các mẫu, thì bạn sẽ hạn chế nghiêm trọng những gì bạn có thể làm. Với thực tế là các đối tượng này được gọi là "quan điểm", có vẻ như là do thiết kế mà bạn trộn lẫn trong logic trình bày với chúng; điều này rất khác với các hệ thống mẫu mà bạn cho phép mẫu trích xuất các giá trị trực tiếp từ các đối tượng mô hình của bạn.

3

Có, có rất nhiều điều bạn không thể làm trong bộ ria mép. Ria mép đơn giản hơn một số hệ thống mẫu đầy đủ tính năng khác (như là một trong Django). Mustache là một hệ thống mẫu rất tối thiểu khuyến khích bạn (thông qua việc thiếu các tính năng) để triển khai các mẫu "ít logic". Điều này có nghĩa là một số xử lý mà bạn có thể thực hiện trong các hệ thống mẫu khác phải được thực hiện bằng mã để sửa đổi dữ liệu được gửi tới mẫu.

Đó không phải là hệ thống mẫu không tốt, nó chỉ là một hệ thống tối thiểu nhằm mục đích đơn giản và nhanh chóng.

Vì vậy, tôi sẽ nói rằng câu trả lời cho câu hỏi này là: "Có, có những điều bạn không thể làm trong Mustache (so với một số hệ thống mẫu khác)".

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