Computer >> Máy Tính >  >> Lập trình >> Ruby

Động cơ tạo khuôn Ruby:ERB, HAML &Slim

ERB là một công cụ tạo khuôn mẫu.

Công cụ tạo khuôn mẫu cho phép bạn kết hợp HTML và Ruby để bạn có thể tạo các trang web bằng cách sử dụng dữ liệu từ cơ sở dữ liệu của mình.

ERB là công cụ mặc định của Rails để hiển thị các chế độ xem.

Lưu ý:Rails sử dụng một triển khai có tên là erubi thay vì ERB lớp từ thư viện chuẩn Ruby.

Như bạn sẽ tìm hiểu ở phần sau của bài viết này, bạn không cần Rails để sử dụng ERB.

Nhưng trước tiên :

Giới thiệu về cú pháp của ERB, cách sử dụng ERB trong các dự án Ruby của bạn và cách nó so sánh với các công cụ tạo khuôn mẫu khác, như HAML.

Hãy làm điều này!

Hướng dẫn về Ruby nhúng (ERB)

Một mẫu ERB là tệp kết thúc bằng .html.erb hoặc .erb phần mở rộng.

Mọi thứ bạn viết bên trong mẫu ERB đều là HTML.

Trừ khi… bạn sử dụng một thẻ đặc biệt!

Đây là một ví dụ :

Hello <%= name %>!

<%= %> này thẻ sẽ được thay thế bởi công cụ tạo khuôn mẫu bằng cách đánh giá mã Ruby bên trong nó.

Nó giống như phép nội suy chuỗi!

Chú ý dấu bằng trong <%= %> .

Điều đó yêu cầu ERB hiển thị nội dung của thẻ này .

Nếu bạn muốn viết vòng lặp hoặc câu lệnh if trong ERB, bạn muốn bỏ dấu bằng để ERB không hiển thị những thứ bạn không cần.

Bạn thậm chí có thể gặp lỗi nếu không sử dụng đúng thẻ ERB.

Đây là một ví dụ :

<% if @favorite_food == "chocolate" %>
  Are you a chocolate lover? Here are some of our best PREMIUM chocolate bars!
<% else %>
  Here are our top 10 snacks that people bought this month.
<% end %>

Đây là ERB if tuyên bố , giống như một câu lệnh if thông thường của Ruby nhưng được bao bọc xung quanh cú pháp tạo mẫu đặc biệt để nó có thể được đánh giá và thay thế bằng kết quả đầu ra khi trang này được hiển thị cho người dùng.

Đây là vòng lặp ERB :

<% @books.each do |book| %>
  <%= book.title %>
  <%= book.author %>
  
<% end %>

Với một mảng sách, điều này sẽ in mọi cuốn sách có dấu ngắt dòng giữa chúng.

Nếu bạn đang sử dụng Rails, nó sẽ hiển thị mẫu này cho bạn khi bạn gọi hành động controller được liên kết.

Sử dụng ERB Không có Rails

Nếu bạn muốn sử dụng ERB bên ngoài Rails để tạo báo cáo và trang web tĩnh…

Bạn có thể làm điều này :

require 'erb'

Book     = Struct.new(:title, :author)
template = ERB.new(File.read('template.erb'))

template.result_with_hash(books: [Book.new("test"), Book.new("abc")])

Bạn sẽ cần thay thế @books với books trong mẫu của bạn để cái này hoạt động.

Rails sử dụng một thủ thuật lập trình siêu mẫu được gọi là "ràng buộc biến".

Đó là cách Rails chia sẻ các biến phiên bản từ bộ điều khiển với mẫu của bạn. Nhưng nếu bạn định sử dụng ERB mà không có Rails bằng cách sử dụng hàm băm (với result_with_hash phương pháp) là một giải pháp sạch hơn.

Bạn nghĩ gì?

So sánh động cơ tạo khuôn

Bây giờ :

Hãy so sánh các công cụ tạo khuôn mẫu khác nhau.

Bạn có thể truy cập tất cả các công cụ này bằng đá quý Tilt. Tilt là một viên ngọc điều hợp giống như Faraday.

Ví dụ :

require 'tilt'
Tilt::ErubiTemplate.new("test.erb").render

require 'tilt/haml'
Tilt::HamlTemplate.new("test.haml").render

require 'slim'
Slim::Template.new("test.slim").render

Đây là điểm chuẩn giữa các cách triển khai khác nhau :

Comparison:
     erubi:     5786.0 i/s
       ERB:     4438.8 i/s - 1.30x  slower
      Haml:     1340.0 i/s - 4.32x  slower
      Slim:      724.1 i/s - 7.99x  slower

Đây là cú pháp HAML trông giống như:

%head
  %title Ruby Templating Engines
  = 123 * 2
%body
  - foo.each do |bar|
    %p
      This Is Cool

Nó khác với HTML thuần túy, vì vậy bạn cần phải làm quen với nó.

Cô đọng hơn nữa là Cú pháp của Slim :

head
  title Ruby Templating Engines
  = 123 * 2
body
  - foo.each do |bar|
    p
      | This Is Cool

Slim sử dụng ký tự ống dẫn cho các khối nội dung nhiều dòng, trong Haml, bạn không cần điều đó.

Hãy xem so sánh @ cấp kho lưu trữ Github:

REPO SAO LAST_COMMIT LATEST_RELEASE CREATED_DATE
jeremyevans / erubi 255 2019-11-05 14:09:06 2019-09-25 15:44:36 2016-11-10 22:42:44
haml / haml 3461 2019-12-27 10:51:59 2019-08-06 12:01:09 2008-02-11 22:55:26
slim-template / slim 4898 2019-12-15 23:55:23 2018-09-02 23:54:10 2010-09-13 01:32:07

Vậy bạn nên sử dụng cái nào?

Tôi nghĩ đó chủ yếu là sở thích cá nhân.

Nhưng có một điều rõ ràng là :

Chọn một cho một dự án cụ thể và viết tất cả các mẫu của bạn bằng cách sử dụng công cụ đó.

Không trộn và kết hợp.

Tôi thích gắn bó với các mẫu ERB…

Với các đoạn mã trình chỉnh sửa phù hợp và hỗ trợ, bạn không cần phải viết thêm nhiều.

Bạn thậm chí có sẵn bộ chuyển đổi (từ / sang ERB) nếu bạn muốn chuyển sang một công cụ khác.

Tóm tắt

Bạn đã học về công cụ tạo khuôn mẫu trong Ruby!

Vui lòng chia sẻ bài viết này và đăng ký nhận bản tin của tôi nếu bạn chưa có (hơn 9000 người đăng ký) để bạn có thể nhận được nhiều nội dung tuyệt vời hơn như thế này.

Cảm ơn vì đã đọc 🙂