10/10/2018, 11:24

Thời điểm này có nên dùng Smarty?

Mình muốn tách biệt giữa template với code php, nhưng ko muốn dùng 1 số framework hiện nay như zend, ... vì site cũng ko lớn lắm, dùng có vẻ hơi năng.
Mình có tìm hiểu qua về smarty thấy cũng hay, nhưng nhiều người kêu vì load chậm.
Bạn nào đã dùng qua rồi có thể vào đây phân tích giúp mình với. Có nên dùng nó không? Thanks
trunghieuhf viết 13:34 ngày 10/10/2018
bạn nào đã từng dùng qua xin cho ý kiến.
sonnb viết 13:26 ngày 10/10/2018
Mình không đưa ra cho bạn lời khuyên được vì không có dùng nó. Nếu bạn muốn sau này có thể dùng các framework open source như: Drupal, Joomla... Thì nên tìm hiểu vì nó dùng Smarty.

Còn nếu bạn chỉ muốn tự viết code và dùng template engine thì mình khuyên bạn dùng cái này http://phptal.org/ Mình đã tìm đến nó khi cũng có nhu cầu tách HTML và PHP ra như bạn. Sử dụng cái này rất dễ dàng + trực quan. Bạn sẽ làm quen rất nhanh
trunghieuhf viết 13:36 ngày 10/10/2018
Thanks bạn. PHPTAL mình thấy có vẻ phân tách html với php không tốt bằng Smarty, tốc độ thì ko biết thế nào. Bạn có thể cho mình biết thêm 1 số ưu điểm và hạn chế của PHPTAL không?
Mấy framework hiện tại mình thấy đồ sộ, và nhiều modules thừa so với nhu cầu của mình.
Trước mắt mình chỉ cần tách html và php riêng ra để dễ phát triển và nâng cấp.
Onenix viết 13:28 ngày 10/10/2018
@sonnb : Ai bảo với bạn là Joomla và Drupal dùng Smarty vậy ? bạn đã từng xem qua cơ chế tạo template của Joomla chưa ?

@trunghieuhf : Theo mình bạn không nên dùng Smarty.

- Smarty chạy nặng, để render ra HTML nó phải thực thi khá nhiều lệnh cho dù bạn dùng cache đi nữa.
- Để học và sử dụng Smarty gần như bạn phải học thêm một "ngôn ngữ" nữa, vì smarty loại bỏ hoàn toàn PHP ra khỏi template của nó, tại sao phải học thêm một "ngôn ngữ" nữa để làm gì trong khi với PHP ta có thể làm được mọi thứ ?

Nếu trang của bạn làm không lớn, số lượng trang ít thì có thể tự tạo cơ chế template riêng mà sử dụng.

Template chẳng qua là sử dụng str_replace hoặc preg_match hoặc preg_replace để lọc và thay thế các block.

Hoặc nếu bạn thích dùng templale engine thì mình nghĩ bạn nên xem qua Savant

http://phpsavant.com/

Mình thì thường chia thành các block và dùng include('block') hoặc dùng template engine do mình tự code.

Nhìn thấy đống code khủng long của smarty là đã không muốn xài rồi.
trunghieuhf viết 13:28 ngày 10/10/2018
Mình thì cũng mới thử dùng template, thấy rất ưu điểm trong việc chỉnh sửa, nâng cấp code.
Nhưng về tốc độ xử lý có vẻ chậm hơn so với dùng lần php và html. Cho mình hỏi là các trang web hiện nay có thường xây dựng theo cơ chế template ko vậy (web tầm trung và lớn).
Onenix viết 13:30 ngày 10/10/2018
Tất cả các CMS bây giờ đều dùng template, chỉ có một số ít trang nhỏ được code chay có thể coder không dùng template.

Ưu điểm của template thì rõ rồi, ai cũng biết, nhưng hạn chế của template đó là sẽ chậm hơn so với PHP và HTML thường.

Về bản chất template là html thường có nhúng vào các khối hoặc thẻ được định nghĩa theo một phương thức nào đó, khi render nội dung trang các template engine sẽ lọc các thẻ hoặc khối đó ra, phân tích và lấy các thành phần tương ứng với các tham số trong thẻ hoặc khối thay thế vào.

Ví dụ : đối với Joomla thẻ <jdoc:include type="modules" name="position-0" /> sẽ load tất cả các module ở vị trí position-0 và thay thế vào đúng vị trí của đoạn thẻ trên.
trunghieuhf viết 13:26 ngày 10/10/2018
Mình có xem qua một số framework, hoặc mô hình MVC, thì thấy trong html vẫn có mã php.
Như vậy mục đích mình cần hướng tới khi dùng template có phải là giảm thiếu tối đa mã php ở mấy phần xử lý như truy xuất database. Còn mấy lệnh echo, for, ... thì vẫn nên để php ở trong?
Onenix viết 13:40 ngày 10/10/2018
Tất nhiên vẫn có thể cho mã php trong html template, nhưng với smarty thì không cho được mã php vào file .tp.

Thay vì dùng cú pháp for, each, while ... của PHP thì smarty tạo hẳn một bộ cú pháp riêng cho các lệnh này, điều này chính là điểm mình thấy không hay ở smarty.

Mục đích của template cần hướng tới còn tùy thuộc vào đặc thù của từng dạng trang.

Ví dụ các trang như 360plus, blogger.com ... thì template của họ chỉ được chứa html và các thẻ được định nghĩa theo chuẩn template, họ không cho user sử dụng mã PHP trong template vì lý do bảo mật.
trunghieuhf viết 13:27 ngày 10/10/2018
ok, thanks bạn, mình sẽ tìm hiểu thêm.
Bài liên quan
0