Jump to content
php.lv forumi

PHP un templeitu sistēmas


briedis
 Share

Recommended Posts

  • Replies 111
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Tēmai ir vairāk ka 10 gadi. Laikam no smartija laikiem notiek karš starp pro un con.

Ir rakstīts ar smarty, blade un citām sistēmām. Pārgāju uz pure PHP, jo:

1) Vienmēr būs kāda klienta prasība, ko nevarēs dabūt ar blade, un jāliek iekšā PHP kods;

2) Viss, ko māk blade, ir pieejams, izsaucot metodes ar pure PHP;

3) Blade ieguvums ir pārāk mazs, lai attaisnotu to, ka ir jāmācās jauna valoda;

4) PHP pats par sevi ir templeitu valoda.

Link to comment
Share on other sites

Blade

Pros:

1) Kods pārskatāmāks, vieglāk uzturams, strukturējams (partials)

2) Līdz minimumam samazināts xss

3) Layouts / Template inheritance

4) Learning curve praktiski neeksistē, 0.5h rtfm un mauc. 

5) Lietot pure php kur vajag / ja vajag

Cons

1) Nav normāli nodrošināta JS nodalīšana, pa modīgo, lapas apakšā (lietot atsevišķu sekciju paršalu JS gadijumā nevar)

2) Nav tādas oficiālas standalone versijas

Link to comment
Share on other sites

Apmēram, jau gadus divus esmu atteicies no jebkāda PHP klienta pusē, sākumā ar javascript GET'ie pildīju saturu. Tagad, React, React-router un Flux veikali - iepakots ar Webpack.

Redzot PHP, kurš apstrādā HTML, man reāli šermuļi metas. Tā ir maģija, kad klienta puse no servera puses ir pilnvērtīgi atdalīta. Reāli, ar abiem vienlaicīgi ir grūtāk un lēnāk strādāt. Pluss, veic izmaiņas klienta pusē, nebaidoties kaut ko sačakarēt servera pusē.

 

Un klients laimīgāks, jo aplikācija strādā ātrāk, imho, kaut vai uz desktopa nomet html failus un viss darbosies tik un tā. Nevis, pie katra klikšķa, lejuplādē vienus un tos pašus failus ar minimālām izmaiņām.

Pēdējā puss gadā laika, no PHP arī atteicos, jo node.js ir daudz ērtāks. 

Link to comment
Share on other sites

No vienas puses, šāda pieeja (HTML - frontend only) ir laba, bet no otras - uz servera HTML uzģenerēt parasti ir ievērojami ātrāk, nekā uz klienta kompja, turklāt servera pusē to visu var iekešot un nav katram klientam katru reizi jārēķina viss pa jaunam; protams, daļēji šo var apiet, izmantojot browser cache un local storage, bet tas vienalga ir katram klientam individuāli.

 

Discuss?

Edited by jurchiks
Link to comment
Share on other sites

> Discuss?
 
Jēga renderēt servera pusē ir divos scenārijos:
 
1) Tava lapa nav dinamiska — tās saturs tiek ielādēts un mainās tikai ejot uz jaunu lapu. Serveris uzrenderē, atgriež atbildi un aizmirst.
 
Šādas lapas ir okay, bet bieži vien gribēsi lai tava lapa ir ar UI/UX kas vairāk atbilst 2016. gadam. Ne visas lapas satur “tekstu un dažas bildītes“. Kā piemērs, Facebook vai Gmail. Tās arī ir “tikai weblapas“, bet būtu neprāts tādas taisīt izmantojot server renderēšanu un abildes agriešanu. Šādām lapām ir bizillions rindas ar JavaScript, kas tāpat visu laiku maina DOM! Beigās sanāks ka tu uzrenderēsi HTML ar template engine A un tad ar savu template engine B, citā valodā, tam pārrakstīsi pāri. Vēl viena lieta ar ko programmētājam ir jācīnas? Waste of time.
 
P.S. Varbūt vēl viens iemesls statiskai lapa būtu SEO, bet nu tas arī ar katru gadu kļūst ar vien mazāk aktuāli.
 
2) Gribi optimizēt lapas ielādi. Lielām applikācijām kas visu dara klienta pusē ir lielāks izmērs — pirmā ielādēte būs lēnāka.
 
Visa renderēšana notiek klientā, bet tu jau daļēji uzrenderē lapu servera pusē. Kamēr klientam tiek sūts JavaScript un pārējie asseti (pirmā ielāde), klients parāda servera uzrenderēto lapas versiju. Kad frontends ir gatavs pieslēgties, tas pārņem kontroli un turpina iesākto. Šajā gadījumā tiek izmantots viens un tas pats template engine un koda duplikācija ir minimāla. Tie paši templeiti un viss pārējais. Šādi dara jau manis minētais Facebook un, starp citu, arī Instagram Android un iOS appas. Tiek izmantots ReactJS, bet, protams, citi framework to arī pieprot.

Edited by daGrevis
Link to comment
Share on other sites

Bija laiks, kad programmas taisīja priekš Desktop. Konceptuāli tas izskatījās līdzīgi, kā tagad apspriestās frontend appas (Desktop appam nevajadzēja pārlādēt katru skatu, skati bija stateful utml). Tad nāca web laiks ar to, kas nu tur bija iespējams tā laika pārlūkos.

 

Tagad viss attīstījies. Var tos pašus 20 un vairāk gadus vecos konceptus attiecināt arī uz webiskām aplikācijām. Buzzzzwordu gan pilns...

 

JS front-end aplikācija jau vairs nav modernāka HTML aplikācija ar servera pusē veidotām statiskajām lapām. Ja pārlūku iespējas senajos laikos pirms 5 un 10 gadiem to ļautu, tad, visticamāk, tad tādas servera pusē ģenerētās lapas varbūt pat nemaz nebūtu radušās. Jo tās bija diezgan lielas mocības sākumā, sevišķi datu ievades ātruma ziņā. Tiem pašiem interneta veikaliem nereti (un vēl tagad varbūt) admin lapas vietā bija desktop apps un šķēpi toreiz tika lauzti par to, kas labāk - admin kā desktop apps vai admin zona weblapā. Un tad vēl – vai admin nodalīts atsevišķi, vai admin režīms, kur klienta lapā parādās rediģēšanas iespējas, bez atsevišķas admin daļas.

 

Citiem vārdiem sakot, interesanti vērot, kā appas attīstās no MS-DOS teksta interfeisa uz Win/Java aplikācijām, tad viss aiznesās uz webu un tagad uz JS / mobile appiem. Paradigmu maiņas katru reizi. Salīdzināt savā starpā tur ir maz ko - atšķiras gan arhitektūra, gan lietojums un vajadzība. Gan jau ka pēc 5 gadiem šodienas top skillus varēs norakstīt un mācīties visu no jauna.

Edited by Mr.Key
Link to comment
Share on other sites

Jā, man arī galvenais punkts par labu servera HTML bija tas, ka sākotnēji atverot lapu vismaz kaut kam ir jāparādās, pirms tiek ajaxiski ielādēts viss pārējais saturs, kurš tā paša Facebook gadījumā ir ļoti daudz un prasa atbilstoši daudz laika.

Protams, HTML manipulācija klienta pusē atbilstoši ajax pieprasījumiem utt ir pavisam normāli, bet vismaz sākotnēji noteikti kaut kādam HTML ir jānāk no servera (un ar to es nedomāju tikai head+body tagus ar css un js tajos, bet gan reāli taustāmu/apskatāmu saturu, tā saucamo above the fold saturu). Un tā, kā tas sākotnējais saturs atšķiras atkarībā no URL...

Man personīgi ļoti nepatīk lapas, kuras atverot 3+ sekundes rādās "Loading...", kamēr ielādējas JS un tas izpildās.

 

Vārdu sakot, ir sweet spot starp "ielādēt visu no servera, klientā neko nerenderēt ar JS" un "no servera ielādēt tikai JS, renderēt visu klientā". Piemēram, kāda interneta veikala kategoriju atverot, headerim, footerim un varbūt kaut kādiem sidebar'iem jau būtu jābūt no servera, bet produktus un atbilstošos filtrus var ielādēt un renderēt caur JS, jo tur tiešām ir daudz repetitive HTML.

Ir ļoti maz tādu lapu, kurām burtiski viss saturs mainās tās lietošanas laikā, tāpēc arī manuprāt nav prātīgi visu renderēt caur JS, ja tas pēc tam netiks mainīts. Šis attiecas uz gandrīz visu lapu headeriem un footeriem.

Edited by jurchiks
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share


×
×
  • Create New...