Jade so với EJS, ưu nhược điểm của mỗi loại là gì và mỗi loại được thiết kế cho mục đích gì?
Có bất kỳ công cụ mẫu tương thích nhanh nào khác tốt không và tại sao?
Jade so với EJS, ưu nhược điểm của mỗi loại là gì và mỗi loại được thiết kế cho mục đích gì?
Có bất kỳ công cụ mẫu tương thích nhanh nào khác tốt không và tại sao?
Câu trả lời:
Tôi đã sử dụng Ngọc trước đây. Điều thú vị về Jade là bạn có cú pháp ngắn hơn có nghĩa là bạn có thể gõ nhanh hơn. Trong block
Jade khá mạnh mẽ có thể giúp tôi rất nhiều khi xử lý mã HTML phức tạp.
Mặt khác, thật khó để thực hiện một số công việc đơn giản trong Jade, chẳng hạn như thêm các lớp vào DIV dựa trên điều kiện if đơn giản. Tôi cần đặt một cái gì đó như thế này
- if (isAdmin)
div.admin.user
- else
div.user
Jade cũng không phân biệt giữa các thẻ và các biến làm cho mã rất khó hiểu (ít nhất là đối với tôi)
a(href='/user/' + user.id)= user.name
Jade cũng không thân thiện với nhà thiết kế. Những người bạn thiết kế của tôi thường cung cấp cho tôi HTML và CSS (Gần đây họ đã chuyển sang LESS nhưng vẫn muốn sử dụng HTML), và vì lý do đó nếu tôi sử dụng Jade, tôi cần chuyển đổi HTML sang Jade. Ngoài ra trong Jade, chúng ta cần sử dụng thụt lề, vì vậy nếu cấu trúc HTML của bạn trở nên phức tạp, mã của bạn sẽ trông rất kinh khủng (đặc biệt là bảng). Đôi khi, tôi thậm chí không biết mình đang ở cấp độ nào
table
thead
tr
td
a
img
tr
td
tbody
tr
td
Gần đây, tôi đã chuyển sang EJS và tôi hài lòng với nó cho đến nay. Nó rất gần với HTML thuần túy và sử dụng cú pháp tương tự như cú pháp của công cụ mẫu giao diện người dùng mà tôi đang sử dụng (Mẫu gạch dưới). Tôi phải nói rằng mọi thứ đều dễ dàng hơn với EJS. Tôi không phải thực hiện tất cả chuyển đổi khi nhận được các mẫu HTML từ người bạn thiết kế của mình. Tất cả những gì tôi phải làm là thay thế các phần động bằng các biến được truyền từ ExpressJS. Những thứ khiến tôi phát điên khi sử dụng Ngọc được giải quyết trong EJS
<div class="<%= isAdmin? 'admin': '' %> user"></div>
Và tôi có thể biết điều gì là với EJS
<a href="/user/<%= user.id %>"><%= user.name %></a>
Nếu bạn bỏ lỡ cú pháp ngắn của Jade (như tôi), bạn có thể kết hợp Zen-Coding và EJS có thể giúp bạn đẩy nhanh tiến độ nói chung. Về hiệu suất, tôi không thấy bất kỳ sự khác biệt nào
Tuy nhiên, EJS không mạnh bằng Jade, nó không có khối theo mặc định (anh chàng này đã triển khai tính năng khối cho EJS https://github.com/RandomEtc/ejs-locals )
Vì vậy, nó hoàn toàn phụ thuộc vào bạn để chọn bất cứ điều gì làm cho bạn thoải mái. Nhưng nếu bạn định sử dụng một công cụ mẫu khác cho giao diện người dùng như tôi, sẽ tốt hơn nếu bạn sử dụng cùng một thứ cho cả hai bên
Cập nhật ngày 16 tháng 12 năm 2013: Gần đây, tôi đã chuyển từ EJS sang Swig (có khái niệm tương tự như của Jinja2 trong thế giới Python). Lý do chính là thiếu khối trong EJS ngay cả khi có sự trợ giúp của ejs-locals
. Swig cũng đang sử dụng HTML thuần túy cho các mẫu và rất nhiều tính năng thú vị mà một công cụ mẫu phải có, ví dụ như các bộ lọc và thẻ mà EJS không có
Jade
một hoặc hai năm trước. Có lẽ bây giờ nó đang trở nên tốt hơn. Tuy nhiên chuyển loại điểm đầu tiên của tôi, nó sẽ không được dễ dàng để có được xung quanh đó
Tôi sẽ không nói rằng cái nào tốt hơn cái kia. Chúng khác nhau, đó là điều chắc chắn, nhưng "tốt hơn" là một thuật ngữ khá tương đối.
Tôi thích EJS hơn vì tôi nghĩ HTML không quá tệ, thêm vào đó nó cho phép tôi làm việc với những người khác mà họ không cần phải học Jade.
Tuy nhiên, Jade khá sạch sẽ và tạo ra một số mã gọn gàng trong quan điểm của bạn.
Chọn bất cứ thứ gì bạn cảm thấy thoải mái hơn.