![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 58 Pomógł: 0 Dołączył: 8.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Do dziś po prostu ustawiam zmienne i includuje szablon, który może wyglądać mniej więcej tak:
Tak więc mam oddzieloną prezentację od kodu. Bardzo proszę o wyjaśnienie mi, na czym skorzystam decydując się na zastosowanie Smarty? Interesuje mnie głównie wydajność. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Na wydajności NIE zyskasz.
Smarty służy do podniesienia wygody pracy z szablonami, łatwiejszej kontroli tego co się dzieje z designem, oraz jakie dane do niego trafiają, oraz ułatwia tworzenie Cache. Dzięki temu znacznie łatwiejsze jest odnalezienie wszystkich miejsc, w którym masz kod HTML, przeprowadzenie korekt na nim, a nawet, przynajmniej czasem, edycja wyglądu strony w programach WYSIWG. Dzięki temu uzyskujesz też pełne rozdzielenie kodu HTML od php. -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Przenoszę z Przedszkola na Hydepark.
P.S. Cytat Tak więc mam oddzieloną prezentację od kodu. To nie jest żadne oddzielenie logiki od wyglądu.To jest zaszycie wyglądu w logice. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Przykłady;
- W twojej metodzie przed każdym apostrofem musisz umieszczać backslash. Czy to jest wygodne? - tworząc nową pętle po tablicy musisz tworzyć nowe zmienne pamietać o indexach etc. Przy uzyciu parsera szablonow nie ma tego problemu, wiekszosc dziwnego kodu generuje parser. ...i wiele wiele innych -------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Przedstawiony przez Ciebie przykład jest bardzo trywialny. Czasem jest potrzeba załadowania danych w specyficzny sposób, który spowoduje już problem w oddzieleniu logiki aplikacji od kodu html w Twoim rozwiązaniu. Np. generowanie formularzy, wstawianie warunków do szablonu, operacje na ciągach znaków etc.
-------------------- Sygnatura niezgodna z regulaminem.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 25.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam !
Smarty ma sporo zalet, ale wg. mnie jeszcze więcej wad: - dosyć powolny - niezbyt łatwo rozszerzalny - wymaga od użytkownika opanowania nowej składni. O ile 2 i 3 powód można w pewnym sensie pominąć, to pierwszy co do szybkość, jak dla mnie w pełni przekreśla Smarty. Pozdrawiam Darektbg -------------------- skocz.org - system skracania linków
|
|
|
![]() ![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) ![]() ![]() |
Witam ! Smarty ma sporo zalet, ale wg. mnie jeszcze więcej wad: - dosyć powolny - niezbyt łatwo rozszerzalny - wymaga od użytkownika opanowania nowej składni. O ile 2 i 3 powód można w pewnym sensie pominąć, to pierwszy co do szybkość, jak dla mnie w pełni przekreśla Smarty. Pozdrawiam Darektbg Wolny ? No chyba jaja se robisz ? Nie wiem ile pracujesz ze smarty ale ja go uzywam chyba juz od ponad 2 lat ? chociaz nie wiem dokladnie. Jak na razie nie moge stwierdzic ze jest wolny. Jest właśnie dość wydajny, a do tego podaje do reki narzedzie zwane cache, co przyspiesza i to duzo bardziej niz by ci sie wydawało. Co do zalet ? Jeden kod logiczny i zupelnie rozne szablony i nie mowie tylko o html, ale mozesz stworzyc xml, wap, xul i co ci sie zyw nie podoba. Na upartego jak stworzysz odpowiednie szablony oraz pluginy z filtrami to i pdf'a wygenerujesz (jako tako). Opanowanie nowej składni .... hmmm no tutaj to nie wiem co odpowiedziec. Załapałem ja w jakies 15-30 minut. Nie rozszerzalny? no tego to juz nie skomentuje bo bzdur nie powinno sie komentowac. -------------------- Warsztat: Linux: PHP, MySQL, Apache, NetBeans, C++, Qt-Creator
Użytkownik, słowo którego specjaliści IT używają, gdy chcą powiedzieć idiota Zarządzaj swoim budżetem domowym |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 416 Pomógł: 0 Dołączył: 8.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
Zgoda, nauka skladni smarty nie stanowy problemu, jednak czy tak na prawde jest to potrzebne? Smarty robia sie klopotliwe kiedy zagniezdzasz w nich kod js lub css. Sklaniam sie ostatnio ku rozwiazaniom stosowanym w Symfony i CI, czyli uzycie skladni alternatywnej.
Systemem o podobnym interfejsie do Smarty jest Savant ktory opiera sie wlasnie na skladni alternatywnej. Brakuje mu tylko mechanizmu cache'owania. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Kod Smarty robia sie klopotliwe kiedy zagniezdzasz w nich kod js lub css. no nie wydaje mi sie wystarczy go upchnac w odpowiednie znaczniki i po sprawie -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 25.09.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam !
Wolny ? No chyba jaja se robisz ? Wolny w porównaniu np. z systemem Savant Smarty przy jednoczesnej liczbie zapytań - 100 i szablonie skompilowanym wcześniej generuje w ciągu sekundy 16,76 strony zaś savant 24,81. Specjalnie podałem wynik dla szablonu skompilowanego wcześniej, a wiadomo czas się zwiększa w przypadku szablonu nie skompilowanego wcześniej. Pozdrawiam Darektbg -------------------- skocz.org - system skracania linków
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 416 Pomógł: 0 Dołączył: 8.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
Kod Smarty robia sie klopotliwe kiedy zagniezdzasz w nich kod js lub css. no nie wydaje mi sie wystarczy go upchnac w odpowiednie znaczniki i po sprawie komplikuje sie gdy odwolujesz sie w kodzie js do zmiennych wygenerowanych przez Smarty. W zasadzie caly problem rozbija sie o skladnie Smarty. Bo sama idea, interfejs, cache itp. jest swietnie przemsyslane. Ale czy potrzebny jest do tego minijezyk, ktory jest nastepnie parsowany i tak przez php? Zwlaszcza ze ten minijezyk duzo nie wnosi. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Cytat Zwlaszcza ze ten minijezyk duzo nie wnosi. Dla mnie kazdorazowe pisanie zamiast jest delikatnie mowiac wkurzajace... Ten post edytował NuLL 21.12.2006, 01:05:30 -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 416 Pomógł: 0 Dołączył: 8.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
Jasne Null, tu sie zgodze, ale zazwyczaj mozna uzywac short_tagow, a
juz nie jest takie zle. Jak pisalem wczesniej - ja sie do Smarty zrazilem strasznie po przejsciach ze Smarty+JS. Tak samo jakies niescislosci byly przy dostepie do danych z wielowymiarowych tablic asocjacyjnych, gdzie kluczem jednej tablicy byla wartosc innej itp. Ten post edytował ikioloak 21.12.2006, 01:17:54 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
Cytat zazwyczaj mozna uzywac short_tagow Short_tagi nie sa zalecane. Cytat Jak pisalem wczesniej - ja sie do Smarty zrazilem strasznie po przejsciach ze Smarty+JS. Tak samo jakies niescislosci byly przy dostepie do danych z wielowymiarowych tablic asocjacyjnych, gdzie kluczem jednej tablicy byla wartosc innej itp. Powiem jak szczerze - wyglada to jak bzdura wymyslona podczas pisania tego tekstu. -------------------- Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 416 Pomógł: 0 Dołączył: 8.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
Ok byc moze jest bzdura. Pokaz mi w takim razie w jaki sposob w templatce Smarty zamieszczasz kod JS w ktorym sa znow odwolania do kodu Smarty. Nie uwazam ze sie 'nie da' - bo wiem ze sie da, tylko wg mnie malo elegancko. Wiec pokaz jak ty takie 'bzdurne' problemy rozwiazujesz.
A co do tablic.
Czyli po wyrzuceniu print_r, kolejno arr1 i arr2 Kod Array ( [klucz1] => Array ( [kkklucz1] => wartosc1 ) [klucz2] => wartosc2 [klucz3] => wartosc3 ) Array ( [kklucz1] => klucz1 [kklucz2] => Array ( [klucz2] => wartosc4 [klucz4] => klucz3 ) [kklucz3] => klucz3 ) Jak jaki sposob zapisujesz w Smarty odpowiednik:
Ten post edytował ikioloak 21.12.2006, 10:29:05 |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
zawsze masz dostep do {assign var="..." value=$cos.klucz} ... w ten sposob mozna obejsc twoj problem, to akurat jest jedna z niewielu wad smarty. Mowicie o szybkosci smarty, a zaloze sie ze malo z was pisze systemy ktore musza obslugiwac duzy ruch. Poza tym to tylko wyglad. Zle napisany kod aplikacji, zle zaprojektowany model danych mysle ze jest wazniejszy niz generowanie wygladu z tych danych.
zawsze mozna okroic smarty z niektorych funkcji, wtedy bedzie dzialal szybciej, bo on chyba laduje wszystkie pluginy za kazdym razem jak sie strona wczyta. nie wyobrazam sobie pisania aplikacji webowych bez systemu szablonow jakim jest smarty. Moge w php, ale po co. pisac <? echo "..."; ?> mowicie ze z js sa problemy - bzdura... {literal} <script> function test() { alert( 'test' ); } </script> {/literal} chwyci bez problemu. a to i tak jest kompilowane do kodu php. |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Większość opisanych tutaj problemów, to niuanse, które występują w specyficznych sytuacjach. Sam napotykałem pewne przeciwności podczas użytkowania Smarty, a wykorzystuję go dość intensywnie w swoich projektach. Niemniej jednak da się je zawsze w jakiś sposób rozwiązać, a typowe konstrukcje tworzy się w tym systemie bez problemu.
Fakt, że trzeba poznać składnię Smarty, aby móc z niego korzystać, lecz nie wydaje mi się, żeby był to wielki problem zwłaszcza, że jest ona dość intuicyjna, a manual jest przygotowany dobrze i zawsze można do niego, w razie ewentualnych niepewności, zajrzeć. Nieprawdą jest, że Smarty jest wolne. Jest szybkie i dobrze sprawuje się podczas pracy, o czym przekonałem się na własnej skórze (w jednym ze stworzonych przeze mnie serwisów, mającym niecałe 600 unikalnych wejść na dzień, działa bez problemu). Ten post edytował Speedy 21.12.2006, 13:07:18 -------------------- Sygnatura niezgodna z regulaminem.
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 416 Pomógł: 0 Dołączył: 8.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
Chyba nikogo nikomu przekonac sie nie da. Ze smarty pracowalem dosyc sporo czasu, i mimo ze zdaje sobie sprawe z tego ze nie znam wszystkich ich sztuczek i kruczkow to ostatnio coraz bardziej zauwazam ich wady.
@Ace, akurat twoj przyklad js jest trywialny. Napisalem: Cytat Pokaz mi w takim razie w jaki sposob w templatce Smarty zamieszczasz kod JS w ktorym sa znow odwolania do kodu Smarty. I jak wtedy postepujesz? Kod {literal} <script> function test() { alert( '{/literal}{$zmienna}{literal}' ); } </script> {/literal} Beznadzieja prawda? Czy zmieniasz delimitery? Przyklad z dokumentacji:
Kod Welcome <!--{$name}--> to Smarty i cala przyjemnosc uzywania {$zmienna} umiera. Jak wiec obchodzisz ten problem? Tak, to sa niusanse, tylko czasem na prawde mocno ityrujace. Ten post edytował ikioloak 21.12.2006, 13:37:27 |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Ale jeśli już tak na to patrzeć - znam ludzi, którzy na co dzień używają delimitera {* *} - nadal ładny i szybki, a znaczniki komentowania w smarty zmieniają na podobne do tych, które podałeś.
-------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@ikioloak: dokladnie tak robie, i w niczym mi to nie przeszkadza. Ile masz takich przypadkow gdzie musisz wstawic zmienna w kod js? ile?
wywolanie funkcji przy onclick <a href="..." onclick="funkcja({$intPageId},{$intArticleId});">... w czym problem? problem pojawia sie gdy chcesz w funkcji wstawic zmienna... Ale czemu? Mozesz jap rzeciez globalnie przeniesc, albo jako parametr <script> var liczba = {$intArticleId}; {literal} function robcos() { alert( liczba ); } {/literal} </script> W czym problem? |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 07:44 |