Lập trình Liquid template engine có gì hay không tại sao nên dùng ?

Lập trình Liquid template engine có gì hay không tại sao nên dùng ?

Lập trình Liquid template engine có gì hay không tại sao nên dùng ?

Liquid là một ngôn ngữ mẫu mã nguồn mở được tạo bởi Shopify và được viết bằng Ruby. Nó là xương sống của các chủ đề Shopify và được sử dụng để tải nội dung động trên mặt tiền cửa hàng. Liquid đã được sử dụng sản xuất tại Shopify từ năm 2006 và hiện được sử dụng bởi nhiều ứng dụng web được lưu trữ khác.

Tải về tại : https://github.com/Shopify/liquid/archive/master.zip

Hàng trăm trang web nổi tiếng đang dùng nó. sapo,haravan, shopify

Introduction

Liquid là một công cụ mẫu được viết với các yêu cầu rất cụ thể:

  • Nó phải có đánh dấu đẹp và đơn giản. Các công cụ mẫu không tạo ra đánh dấu đẹp mắt sẽ không thú vị khi sử dụng.
  • Nó cần phải không đánh giá và an toàn. Các mẫu lỏng được tạo ra để người dùng có thể chỉnh sửa chúng. Bạn không muốn chạy mã trên máy chủ mà người dùng của bạn đã viết.
  • Nó phải là không trạng thái. Các bước biên dịch và kết xuất phải riêng biệt để việc phân tích cú pháp và biên dịch tốn kém có thể được thực hiện một lần và sau này bạn chỉ có thể kết xuất nó trong một hàm băm với các biến và đối tượng cục bộ.

 

Tại sao bạn nên sử dụng Liquid

  • Bạn muốn cho phép người dùng chỉnh sửa giao diện ứng dụng của mình nhưng không muốn họ chạy mã không an toàn trên máy chủ của bạn.
  • Bạn muốn hiển thị các mẫu trực tiếp từ cơ sở dữ liệu.
  • Bạn thích các công cụ mẫu kiểu smarty (PHP).
  • Bạn cần một công cụ mẫu làm HTML cũng như email.
  • Bạn không thích việc đánh dấu công cụ tạo khuôn mẫu hiện tại của mình.

 

Nó trông như thế nào?

<ul id="products">
  
</ul>

 

How to use Liquid

Install Liquid by adding gem 'liquid' to your gemfile.

Liquid supports a very simple API based around the Liquid::Template class. For standard use you can just pass it the content of a file and call render with a parameters hash.

@template = Liquid::Template.parse("hi ") # Parses and compiles the template
@template.render('name' => 'tobi')                # => "hi tobi"

Chế độ lỗi

Đặt chế độ lỗi của Liquid cho phép bạn chỉ định mức độ bạn muốn diễn giải các mẫu của mình. Thông thường trình phân tích cú pháp rất lỏng lẻo và sẽ chấp nhận hầu hết mọi thứ mà không có lỗi. Thật không may, điều này có thể làm cho nó rất khó gỡ lỗi và có thể dẫn đến hành vi không mong muốn.

Liquid cũng đi kèm với một trình phân tích cú pháp chặt chẽ hơn có thể được sử dụng khi chỉnh sửa các mẫu để đưa ra các thông báo lỗi tốt hơn khi các mẫu không hợp lệ. Bạn có thể bật trình phân tích cú pháp mới này như sau:

Liquid::Template.error_mode = :strict # Raises a SyntaxError when invalid syntax is used
Liquid::Template.error_mode = :warn # Adds errors to template.errors but continues as normal
Liquid::Template.error_mode = :lax # The default mode, accepts almost anything.

If you want to set the error mode only on specific templates you can pass :error_mode as an option to parse:

Liquid::Template.parse(source, :error_mode => :strict)

This is useful for doing things like enabling strict mode only in the theme editor.

It is recommended that you enable :strict or :warn mode on new apps to stop invalid templates from being created. It is also recommended that you use it in the template editors of existing apps to give editors better error messages.

 

Undefined variables and filters

By default, the renderer doesn't raise or in any other way notify you if some variables or filters are missing, i.e. not passed to the render method. You can improve this situation by passing strict_variables: true and/or strict_filters: true options to the render method. When one of these options is set to true, all errors about undefined variables and undefined filters will be stored in errors array of a Liquid::Template instance. Here are some examples:

template = Liquid::Template.parse("   ")
template.render({ 'x' => 1, 'z' => { 'a' => 2 } }, { strict_variables: true })
#=> '1  2 ' # when a variable is undefined, it's rendered as nil
template.errors
#=> [#<Liquid::UndefinedVariable: Liquid error: undefined variable y>, #<Liquid::UndefinedVariable: Liquid error: undefined variable b>]

template = Liquid::Template.parse("")
template.render({ 'x' => 'foo' }, { strict_filters: true })
#=> '' # when at least one filter in the filter chain is undefined, a whole expression is rendered as nil
template.errors
#=> [#<Liquid::UndefinedFilter: Liquid error: undefined filter filter1>]

If you want to raise on a first exception instead of pushing all of them in errors, you can use render! method:

template = Liquid::Template.parse(" ")
template.render!({ 'x' => 1}, { strict_variables: true })
#=> Liquid::UndefinedVariable: Liquid error: undefined variable y

Theo dõi sử dụng

Để giúp theo dõi cách sử dụng của một tính năng hoặc đường dẫn mã trong sản xuất, chúng tôi đã phát hành tính năng theo dõi sử dụng chọn tham gia. Để kích hoạt điều này, chúng tôi cung cấp phương thức Liquid :: Usage.increment trống mà bạn có thể tùy chỉnh theo nhu cầu của mình. Tính năng này rất phù hợp với https://github.com/Shopify/statsd-instrument. Tuy nhiên, việc lựa chọn cách thực hiện là tùy thuộc vào bạn.

Khi bạn đã bật theo dõi việc sử dụng, chúng tôi khuyên bạn nên báo cáo bất kỳ sự kiện nào thông qua Các sự cố trên Github mà hệ thống của bạn có thể đang ghi nhật ký. Rất có thể sự kiện này đã được thêm vào để xem xét việc ngừng sử dụng hoặc cải tiến mã dành riêng cho sự kiện này, vì vậy vui lòng nêu lên bất kỳ mối quan tâm nào.


Tags

admin

Hãy chia sẽ cảm nghĩ của bạn về bài viết trên nhé !

0 Nhận xét

  • Hãy trở thành người đầu tiên viết chia sẽ cảm nghĩ của mình bên dưới nhé!

Thêm Bình luận