Các công cụ tạo khuôn mẫu jQuery [đã đóng]


204

Tôi đang tìm kiếm một công cụ mẫu để sử dụng phía khách hàng. Tôi đã thử một vài cái như jsRepeater và jQuery Template. Mặc dù chúng có vẻ hoạt động tốt trong FireFox nhưng tất cả chúng dường như bị hỏng trong IE7 khi hiển thị các bảng HTML.

Tôi cũng đã xem MicrosoftAjaxTemsheet.js (từ http://www.codeplex.com/aspnet/Release/ProjectRelease.aspx?ReleaseId=16766 ) nhưng hóa ra cũng có vấn đề tương tự.

Bất kỳ lời khuyên về các động cơ templating khác để sử dụng?


1
Tôi muốn upvode câu hỏi này hai lần :)
Mark Schultheiss

1
Tôi sẽ kiểm tra các JSView và JSRender rất đẹp (nhưng tiền beta), có vẻ như là một công cụ tạo khuôn mẫu JQuery / UI chính thức tiềm năng (ít nhất đây là những gì lộ trình nói)
Eran Medan

1
JsRender hiện có một ứng cử viên beta công khai: borismoore.com/2012/03/ Khăn
John Papa

Hiện tôi đang sử dụng các mẫu DoT, hiệu suất tốt và Bộ ria mép như ký hiệu
Eran Medan

Câu trả lời:


109

Hãy xem bài viết của Rick Strahl Client Client Templating với jQuery . Anh khám phá jTem mẫu, nhưng sau đó tạo ra một trường hợp tốt hơn cho giải pháp tạo khuôn vi mô của John Resig , thậm chí cải thiện nó một số. So sánh tốt, rất nhiều mẫu.


3
github.com/jquery/jquery-tmpl là bản repo thực tế của plugin tạo khuôn mẫu của Resig.
Alexander Bird

@ Thr4wn, nguồn tại repro là đáng kể sau đó thư viện thảo luận trong các bài viết được liên kết. Cả hai bởi Resig, chắc chắn.
Frank Schwieterman

@Frank "nguồn tại repro là đáng kể sau đó thư viện đã thảo luận trong các bài viết được liên kết" Um huh? Nói gì cơ? Không chắc chắn những gì bạn có ý nghĩa này cả.
Mark Schultheiss

2
@Mark: ý anh là "khác biệt đáng kể so với."
Domenic

Tôi chưa thấy bất kỳ ví dụ nào về các hình thức phức tạp đang được xây dựng với điều này. Có ai đã khám phá những gì nó cần để thêm một hàng, một phần của toàn bộ khuôn mẫu, để chứa một phần tử mới trong biểu mẫu ràng buộc một mảng của đối tượng không? Mẫu sẽ bao gồm tạo khuôn mẫu các chỉ mục phần tử của mảng và có thể được tuần tự hóa đúng cách để POST. Nhưng tôi gặp khó khăn khi nghĩ về tất cả. Mục tiêu là chức năng giống như InfoPath. (Tôi biết về các tính năng infopath hiện có khác nhau và các lựa chọn thay thế infopath.)
Jason Kleban

47

Mới thực hiện một số nghiên cứu về điều này và tôi sẽ sử dụng jquery-tmpl . Tại sao?

  1. Nó được viết bởi John Resig.
  2. Nó sẽ được duy trì bởi nhóm jQuery cốt lõi như là một plugin "chính thức". EDIT: Nhóm jQuery đã không dùng plugin này.
  3. Nó tạo ra sự cân bằng hoàn hảo giữa sự đơn giản và chức năng.
  4. Nó có một cú pháp rất sạch sẽ và cũng nghĩ ra.
  5. Nó mã hóa HTML theo mặc định.
  6. Nó rất mở rộng.

Xem thêm tại đây: http://forum.jquery.com/topic/templating-syntax


+1. Nhưng tôi đã sử dụng Rick Strahl's. Bcoz nó là một cái nhỏ và phục vụ tốt mục đích của tôi.
IsmailS

nó chỉ thông báo rằng đây là bây giờ chính thức Plugin
SERG

20
Thật không may, nó đã bị khấu hao . bất kỳ forker?
OnesimusUnbound

3
Bây giờ, kịch bản đã thay đổi vào năm 2012, ý tôi là, có giải pháp nào tốt hơn để tạo khuôn mẫu bằng cách sử dụng các thư viện được phát triển trên đầu tập lệnh gốc của resig không?
Rajat Gupta

4
@OnesimusUnbound Nó đã được siêu hạt giống bởi JS Render. github.com/BorisMoore/jsrender
Blowsie


17

jQuery Nano :

Công cụ mẫu

Cách sử dụng cơ bản

Giả sử bạn có phản hồi JSON sau đây:

data = {
  user: {
    login: "tomek",
    first_name: "Thomas",
    last_name: "Mazur",
    account: {
      status: "active",
      expires_at: "2009-12-31"
    }
  }
}

bạn có thể làm:

nano("<p>Hello {user.first_name} {user.last_name}! Your account is <strong>{user.account.status}</strong></p>", data)

và bạn có được chuỗi sẵn sàng:

<p>Hello Thomas Mazur! Your account is <strong>active</strong></p>

Trang thử nghiệm...


Điều này không làm các cấu trúc điều khiển (if và vòng lặp)
mahemoff

13

jQuery-tmpl sẽ nằm trong lõi jQuery bắt đầu trong jQuery 1.5:

http://blog.jquery.com/2010/10/04/new-official-jquery-plugins-provide-templating-data-linking-and-globalization/

Tài liệu chính thức có tại đây:

http://api.jquery.com/carget/plugins/tem mẫu /


EDIT: Nó đã bị loại khỏi jQuery 1.5 và bây giờ sẽ được điều phối bởi nhóm UI UI, vì nó sẽ là một phần phụ thuộc của Lưới UI UI sắp tới.

http://blog.jquery.it/2011/04/16/official-plugins-a-change-in-the-roadmap/


11

Không chắc chắn cách nó xử lý vấn đề cụ thể của bạn, nhưng cũng có công cụ mẫu PURE .


bên cạnh những hạn chế của nó, PURE rất dễ sử dụng
Jader Dias

@Jader, hạn chế nào là đau đớn nhất?
Mic

@Mic PURE bị giới hạn bởi thiết kế. Trong các công cụ mẫu phía máy chủ, bạn không cần phải sử dụng HTML hợp lệ, nhưng PURE dựa trên HTML. Nhưng tôi nghĩ rằng có những điều kỳ quặc sẽ cho phép một công cụ mẫu javascript khác mạnh mẽ như các công cụ phía máy chủ.
Jader Dias

@Jader, ok chỉ dành cho HTML. Nhưng tôi đã không hiểu ý bạn là gì bởi những điều kỳ quặc và một động cơ khác.
Mic

@Mic PURE phải được viết lại từ đầu để cho phép một số tính năng được đưa vào. Để cho phép các mẫu HTML không hợp lệ, bạn nên sử dụng scriptcác thẻ có thuộc tính typekhác với text/javascript. Đây là một "cách giải quyết" cho phép HTML không hợp lệ.
Jader Dias

7

Nó phụ thuộc vào cách bạn xác định "tốt nhất", vui lòng xem bài viết của tôi ở đây về chủ đề

Nếu bạn tìm kiếm nhanh nhất , đây là một điểm chuẩn tuyệt vời , có vẻ như DoT chiến thắng và bỏ lại những người khác

Nếu bạn đang tìm kiếm plugin JQuery chính thức nhất , đây là những gì tôi tìm ra

Phần I: Mẫu JQuery

Trình cắm mẫu JQuery beta, tạm thời chính thứchttp://api.jquery.com/carget/plugins/tem mẫu /

Nhưng rõ ràng, cách đây không lâu, người ta đã quyết định giữ nó trong bản Beta ...

Lưu ý: Nhóm jQuery đã quyết định không đưa plugin này qua bản beta. Nó không còn được tích cực phát triển hoặc duy trì. Các tài liệu vẫn ở đây cho đến thời điểm hiện tại (để tham khảo) cho đến khi một plugin mẫu thay thế phù hợp đã sẵn sàng.

Phần II: Bước tiếp theo

Các lộ trình mới dường như nhằm mục đích cho một bộ mới của plugin, JSRender (không phụ thuộc vào DOM và thậm chí JQuery công cụ rendering mẫu) và JSViews đó có một số dữ liệu thoải mái ràng buộc và quan sát / quan sát mô hình thực hiện

Đây là bài viết về chủ đề này

http://www.borismoore.com/2011/10/jquery-temsheet-and-jsview-roadmap.html

Và đây là nguồn mới nhất

Các nguồn lực khác

Lưu ý rằng nó vẫn chưa ở phiên bản beta và chỉ là một mục bản đồ đường, nhưng có vẻ như là một ứng cử viên tốt để trở thành tiện ích mở rộng JQuery / JQueryUI chính thức cho các mẫu và liên kết UI


4

Chỉ là kẻ ngốc ^^

// LighTest TPL
$.tpl = function(tpl, val) {
    for (var p in val)
        tpl = tpl.replace(new RegExp('({'+p+'})', 'g'), val[p] || '');
    return tpl;
};
// Routine...
var dataObj = [{id:1, title:'toto'}, {id:2, title:'tutu'}],
    tplHtml = '<div>N°{id} - {title}</div>',
    newHtml    = '';
$.each(dataObj, function(i, val) {
     newHtml += $.tpl(tplHtml, val);
});
var $newHtml = $(newHtml).appendTo('body');

http://jsfiddle.net/molokoloco/w8xSx/ ;)


3

Đây không phải là jsquery cụ thể, nhưng đây là một thư viện tạo khuôn mẫu dựa trên JS được phát hành bởi google dưới dạng nguồn mở:

http://code.google.com.vn/p/google-jstemplate/

Điều này cho phép sử dụng các phần tử DOM làm mẫu và được cấp lại (trong đó đầu ra của kết xuất mẫu vẫn là một mẫu có thể được kết xuất lại với một mô hình dữ liệu khác).


2

Những người khác đã chỉ jquery-tmpl, và tôi đã nêu lên những câu trả lời. Nhưng hãy chắc chắn để có một cái nhìn vào dĩa github.

Có những sửa chữa quan trọng ngoài kia và các tính năng thú vị quá. http://github.com/jquery/jquery-tmpl/network


1
Bất kỳ ngã ba cụ thể để xem xét để sửa chữa?
Kevin Hakanson

TBH, nó hơi lộn xộn ... Tôi đã tìm đến github.com/appendto/jquery-tmpl sau khi quét nhanh các thay đổi và xem xét thực tế rằng appendto là một công ty. YMMV
Yann

jquery-tmpl đã được gấp lại trong bản phân phối 1.4.3 chính thức.
Yann


1

Nếu bạn đang làm việc trong .NET Framework 2.0 / 3.5, bạn nên xem JBST như được triển khai bởi http://JsonFx.net . Nó có một giải pháp tạo khuôn mẫu phía máy khách có cú pháp JSP / ASP quen thuộc nhưng được biên dịch trước tại thời điểm xây dựng cho các mẫu có khả năng lưu trữ bộ đệm nhỏ gọn mà không cần phải phân tích cú pháp khi chạy. Nó hoạt động tốt với jQuery và các thư viện JavaScript khác vì bản thân các mẫu được biên dịch thành JavaScript thuần.



1

Đối với công việc rất nhẹ, jquery-tmpl là đủ, nhưng trong một số trường hợp, dữ liệu phải biết cách định dạng chính nó (điều xấu!).

Nếu bạn đang tìm kiếm một plugin tạo khuôn mẫu đầy đủ tính năng hơn, tôi sẽ đề xuất Orange-J . Nó được lấy cảm hứng từ Freemarker. Nó hỗ trợ if, other, vòng lặp trên các đối tượng & mảng, javascript nội tuyến, bao gồm các mẫu trong các mẫu và có các tùy chọn định dạng tuyệt vời cho đầu ra (maxlen, wordboundary, htmlentity, v.v.).

Oh, và cú pháp dễ dàng.


0

Bạn có thể muốn nghĩ một chút về cách bạn muốn thiết kế mẫu của bạn.

Một vấn đề với nhiều giải pháp mẫu được liệt kê (jQote, jquery-tmpl, jTem mẫu) là chúng yêu cầu bạn chèn non-HTML vào HTML, điều này có thể gây khó khăn khi làm việc với các công cụ HTML hoặc trong quá trình phát triển với các nhà thiết kế HTML . Cá nhân tôi không thích cảm giác của phương pháp đó, mặc dù nó có ưu và nhược điểm.

Có một lớp tiếp cận mẫu khác sử dụng HTML thông thường, nhưng cho phép bạn chỉ ra các ràng buộc dữ liệu với các thuộc tính phần tử, các lớp CSS hoặc ánh xạ bên ngoài.

Knockout là một ví dụ điển hình cho phương pháp này, nhưng tôi đã không sử dụng nó cho bản thân mình nên tôi để nó để bỏ phiếu để quyết định xem người khác có thích hay không. Ít nhất cho đến khi tôi có thời gian để chơi với nó nhiều hơn.

PURE được liệt kê như một câu trả lời khác là một ví dụ khác của phương pháp này.

Để tham khảo, bạn cũng có thể xem chain.js , nhưng dường như nó không được cập nhật nhiều kể từ khi phát hành ban đầu. Để biết thêm thông tin về nó, hãy xem http://javascriptly.com/2008/08/a-better-javascript-template-engine/ .


0

Dropbox sử dụng công cụ mẫu của John Resig trên trang web. Họ đã sửa đổi một chút, bạn có thể kiểm tra tệp js này của dropbox. Tìm kiếm trong tệp này cho tmpl và bạn sẽ mã của công cụ mẫu.

Cảm ơn. Hy vọng nó sẽ hữu ích cho một ai đó.


0

Tôi hiện đang sử dụng khung tạo khuôn mẫu đa HTML. Khung này giúp việc nhập dữ liệu templated trong DOM của bạn dễ dàng hơn rất nhiều. Ngoài ra mô hình MVC tuyệt vời.

http://www.enfusion-framework.org/ (xem các mẫu!)


-1

Ngoài ra còn có một bản viết lại của PURE bằng beebole - các mẫu html thuần túy của jquery - https://github.com/mpapis/jquery-pure-temsheet

Nó sẽ cho phép kết xuất tự động nhiều hơn chủ yếu bằng cách sử dụng các bộ chọn jquery, điều quan trọng hơn là nó không yêu cầu đưa những thứ ưa thích vào HTML.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.