Ưu và nhược điểm của cả Jade và EJS cho Node.js templating là gì? [đóng cửa]


118

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ì?

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:


178

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 blockJade 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ó


1
Về việc không biết bạn đang ở cấp độ nào, cần nói rằng ngọc bích có hỗ trợ mới cho nhiều thẻ trên một đường. Từ tài liệu của Jade, 'Để tiết kiệm dung lượng, jade cung cấp cú pháp nội tuyến cho các thẻ lồng nhau.'A: img' tương đương với '<a> <img /> </a>'.
Verdi Erel Ergün

1
Tôi đã thử Jademộ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ân Nguyễn

1
Bạn đã xem html2jade chưa?
beatgammit.

4
Tôi đã làm bạn công cụ đó, nhưng vẫn còn, mỗi khi nhà thiết kế đưa ra một cái gì đó với tôi, tôi cần phải làm chuyển đổi (có nghĩa là gây phiền nhiễu)
Tân Nguyễn

1
Tôi chỉ muốn lưu ý (về điểm đầu tiên của bạn về điều kiện) rằng bạn có thể sử dụng cú pháp bậc ba cho trường hợp sử dụng này. Xem tràn câu hỏi này stack: stackoverflow.com/questions/9488029/...
Rob Gibbons

43

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.

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.