Bài 01: Smarty là gì

Smarty Engine 04/02/2017 07:00 2005
Smarty là một hệ thống tạo mẫu web (web template system) được viết trên nền PHP. Smarty được giới thiệu như là một công cụ cho việc chia nhỏ các quá trình thiết kế trang web. Đây là một trong những chiến lược thiết kế cho các ứng dụng web hiện đại.

Smarty

1. Hiểu một cách đơn giản:

Smarty là một template engine. Tiếp tục "Template engine là gì: Cũng hiểu một cách đơn giản nó là một "ngôn ngữ" trình bày dữ liệu, giúp phân tách code ra khỏi mã nguồn html". Smarty giúp cho người lập trình web tách được phần code PHP và mã HTML một cách riêng rẽ. Giúp cho việc chỉnh sửa, nâng cấp, bảo trì một cách dễ dàng. Smarty đóng vai trò là một ngôn ngữ trung gian cầu nối giao tiếp giúp code PHP và mã nguồn HTML hiểu được nhau.

2. Một cách phức tạp.

Smarty được xây dựng trên kiến trúc 3 tầng.

1. Presentation Logic Layer : Nơi đặt bố cục Website , trình diễn dữ liệu được lấy ra từ Business Logic Layer:

+CSS

+Image

+JavaScript

+XML

+RSS

2. Business Logic Layer : Các Nghiệp Vụ trên hệ Thống

3. Data Access Layer : Các Class tương tác với Database

Presentation Logic Layer <=> Business Logic Layer <=> Data Access Layer

Smarty cung cấp các Smarty tag. Các tag này được nằm trong các mẫu (template) HTML. Các tag này sẽ được xử lý và chèn vào với các code khác nhau. Nó là các chỉ thị cho Smarty và được bao đóng bới tag mở và tag khóa. Những chỉ thị này có thể là biến, và được định nghĩa bởi dấu dollar ($), các phương thức hoặc các luồng điều khiển. Smarty cho phép các lập trình viên có thể tự định nghĩa các phương thức và truy cập sử dụng các Smarty tags.

Ví dụ:

// Hiển thị một biến
{$name}, {$smarty.now}

// Hàm 
{for}, {include}

// Smarty tag
{php} // Some code{/php}
Hoặc
{literal} // Some code {/literal}

Smarty là kết quả của việc tối ưu hóa và phân luồng công việc. Trong việc xây dựng mỗi ứng dụng web thì luôn phân chia thành 2 mảng là người thiết kế và người lập trình. Smarty cho phép người phát triển phân chia công việc một cách rõ ràng bằng cách chia nhỏ chúng ở điểm đầu cuối (back-end). Smarty hỗ trợ một vài ngôn ngữ lập trình bậc cao, bao gồm:

  • Điều khiển luồng dữ liệu, foreach
  • If, elseif, else
  • Biến thay đổi
  • Người dùng tạo chức năng

Bên cạnh đó, thì một trong những chức năng nổi bật của các Template Engine là hệ thống tạo mẫu cho phép thay đổi từ mẫu tới mẫu. Thông thường khi lập trình PHP bạn hay viết lẫn cả phần HTML với mã lệnh PHP trên một trang. Điều này sẽ dẫn đến rất rối nhất là khi bảo trì. Bạn là người viết ra và cũng là người bảo trì thì không sao nhưng nếu bạn viết ra sau đó người khác bảo trì. Chắc họ nhìn vào code của bạn họ sẽ ngất mất vì quá rối.

Mặt khác khi làm nhiều trang web có chức năng như nhau. Chỉ khác giao diện nên nếu lập trình theo kiểu như vậy bạn phải viết lại hoàn toàn mã nguồn. Ngoài ra muốn code được bạn phải chờ người thiết kế giao diện cho bạn sau đó cắt ra file HTML... rồi mới code... Tất cả những điều này sẽ làm giảm năng xuất công việc của bạn đi rất nhiều. Smarty đã giải quyết được các vấn đề nêu trên. Dưới đây là một số ưu điểm của Smarty:

  • Tốc độ load trang rất nhanh (do tạo được cache)
  • Code ứng dụng của bạn trở lên trong sáng, mạch lạc và dễ bảo trì hơn rất nhiều (do tách biệt phần code và templates).
  • Hiệu quả công việc đạt tối đa (Người thiết kế và người lập trình làm việc hoàn toàn độc lập. Thay đổi giao diện website nhanh chóng...)

3. Tổng kết.

Có khá nhiều ý kiến và thắc mắc có nên sử dụng một Template engine trong một ứng dụng web hay không?. Thì theo tôi nghĩ nếu bạn tự phát triển một web nhỏ nhỏ thì không cần. Còn nếu làm một CMS tầm cỡ, có nhiều template, nhiều người phát triển thì Template engine là sự lựa chọn tuyệt vời. Đôi khi việc có sử dụng hay không sử dụng nó còn phụ thuộc vào ý kiến cá nhân của từng người phát triển ứng dụng. Có cũng được và không có cũng không sao nhưng làm sao để mọi việc trở nên dễ dàng hơn thì cần một quá trình trải nghiệm.

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.