2010-11-09 33 views
22

Tôi đang cố gắng quyết định giữa Freemarker và Velocity để sử dụng như một công cụ tạo mẫu, bất kỳ ưu điểm/nhược điểm nào bạn thấy liên quan đến mỗi?Freemarker so với Velocity

Bất kỳ lựa chọn thay thế nào tôi nên xem xét thay thế?

+3

Đã được hỏi nhưng câu trả lời này có câu trả lời hay hơn. – Speck

Trả lời

35

Vận tốc và cả nhãn hiệu đều có khả năng. Đừng đau đớn vì lựa chọn. Họ có những ưu tiên khá khác nhau đằng sau thiết kế của họ, vì vậy một khi bạn vượt ra ngoài khuôn mẫu cơ bản, các tính năng của họ khó so sánh. Cú pháp của Velocity đơn giản và khác biệt hơn, cú pháp nặng hơn của Freemarker cho phép chúng hỗ trợ các thư viện JSP. Vận tốc cho tự do hơn và cuối cùng là nhiều tính năng hơn thông qua các dự án bổ sung như VelocityTools. Freemarker cung cấp xử lý khoảng trắng bản địa tốt hơn nhiều, các bản phát hành Velocity gần đây cung cấp các điều khiển nội dung thú vị hơn (#define, #evaluate, # [[khối chữ]] #).

Về hiệu suất, Velocity đã đạt được những thành tựu to lớn trong những năm gần đây, ngoại trừ có lẽ trong phân tích mẫu ban đầu. Nhưng đối với bất kỳ ứng dụng lành mạnh nào có hiệu suất quan trọng, bạn nên có cả hai công cụ được đặt thành các mẫu bộ nhớ cache và chỉ phân tích cú pháp một lần, làm cho vấn đề này ít hơn. Nói chung, bạn sẽ thấy rằng hiệu suất của bạn với một trong hai động cơ phụ thuộc nhiều hơn vào bản chất của các mẫu của bạn hơn là sự khác biệt giữa các công cụ.

StringTemplate cũng đáng kính, mặc dù chúng là MVC nazis và không thể khớp với Velocity hoặc Freemarker cho các đối tượng địa lý.;) Thất vọng tiềm năng của bạn có một chút cao hơn so với một trong các công cụ mẫu phổ biến hơn, trong đó không có khả năng thất vọng nhiều. Chỉ cần lấy một và đi.

+0

** "Đừng đau khổ vì lựa chọn." ** Cũng được viết! – Stephan

8

Tôi thích FreeMarker. Tôi yêu các tài liệu, tôi luôn có thể tìm thấy những gì tôi cần. Nói chung tôi chỉ nghĩ rằng nó là rất mạnh mẽ.

String Template là một giải pháp thay thế khác.

+2

Một lần nữa, so sánh đó đã lỗi thời và chỉ so sánh các tính năng cơ sở, bỏ qua các dự án bổ sung mạnh mẽ khác nhau của Velocity. Nó không có tín dụng cho cộng đồng freemarker rằng họ không cập nhật nó. –

+0

@ Nathan Bubna - Tôi đã không thực sự sử dụng vận tốc trong đôi khi, những gì chính xác là lạc hậu trên so sánh đó? – Andy

+0

Phần lớn nó, nhiều hơn tôi có thể chỉ ra ở đây. Nó dựa trên Velocity 1.2, giống như 9 năm trước. Vận tốc 1.7 đang trong giai đoạn thử nghiệm và sẽ sớm có trận chung kết. Nó cũng dường như ngụ ý rằng những thứ như VelocityTools là "cách giải quyết", mà hầu như không phải là một đánh giá công bằng. –

2

Có một số lengthy comparison trên trang dự án freemarker.

Không bao giờ làm việc với vận tốc, tôi không thể so sánh một cách có ý nghĩa hai, nhưng tôi đã rất hài lòng với freemarker mà tôi thấy không có lý do gì để nhìn xa hơn nó.

+1

So sánh dài đó có lẽ là hợp lệ cho Velocity 1.4, nhưng Velocity đã thêm nhiều kể từ đó. Và sự so sánh đó luôn từ chối thừa nhận sự tồn tại của dự án VelocityTools phổ biến luôn cung cấp nhiều tính năng. –

+1

Hiệu chỉnh, so sánh đó có giá trị cho Velocity 1.2. Phần lớn nó được hỗ trợ trong Velocity bây giờ (mặc dù đôi khi được thực hiện khác nhau), phần lớn phần còn lại được hỗ trợ với VelocityTools. Và một số "so sánh" chỉ là lạ. Vận tốc không cần các hàm độc lập với java, khi chúng ta hỗ trợ các hàm java một cách dễ dàng. –

+0

Liên kết tới "so sánh dài" đã chết – domih

5

Dường như this là tóm tắt khá tốt về so sánh. Mặc dù, nó là một vài năm tuổi.

Từ bài viết:

Tóm lại

Cả Freemarker và Velocity rất mẫu động cơ có khả năng. Vận tốc dường như tận hưởng cơ sở người dùng lớn hơn, có thể do thực tế là nó là một phần của dự án Apache. Như tôi đã từng được hiển thị trong bài viết này, tuy nhiên, FreeMarker là phức tạp hơn và nhanh hơn trong hai. Trong các hoạt động cơ bản cả hai công cụ tạo mẫu là gần như tương tự, cung cấp API mà dễ hiểu.

Cả Velocity và FreeMarker là khá dễ dàng để tích hợp vào ứng dụng và cung cấp hiệu suất tốt trên mẫu nhỏ. Vận tốc làm chậm xuống khi phân tích cú pháp mẫu lớn hơn, mà bạn có thể xem xét khi chọn công cụ mẫu cho dự án của bạn.

0

Freemarker không chạy trên Android. Vì vậy, tôi hiện đang chuyển đổi dự án của tôi thành Velocity để làm cho nó tương thích với các thiết bị di động.