PHP vs AngularJS
dit topic ben ik eigenlijk een beetje in verwarring gebracht.
LEDfan gaf mij een link naar een video over AngularJS en die heb ik inmiddels bekeken. Ik zie dus dat je met een Javascript framework best wel heel toffe dingen kunt doen. En ik zie ook dat AngularJS volgens het MVC principe werkt en dat je met controllers en routes kunt werken. In die zin lijkt het dus eigenlijk wel een beetje op een PHP framework.
Nu de hamvraag ... wanneer gebruik je een PHP framework en wanneer een Javascript framework? Volgens mij kun je met beide technieken een vergelijkbaar resultaat bereiken. Wel lijkt het alsof Javascript wat sneller werkt. Maar ik vraag me nu dus echt af wanneer, voor welk doel je wat gebruikt. Wat zijn de overwegingen? Wat zijn voor- en nadelen? Hangt het van het "type" website af? Ik ben heeeel erg benieuwd ...
In navolging op LEDfan gaf mij een link naar een video over AngularJS en die heb ik inmiddels bekeken. Ik zie dus dat je met een Javascript framework best wel heel toffe dingen kunt doen. En ik zie ook dat AngularJS volgens het MVC principe werkt en dat je met controllers en routes kunt werken. In die zin lijkt het dus eigenlijk wel een beetje op een PHP framework.
Nu de hamvraag ... wanneer gebruik je een PHP framework en wanneer een Javascript framework? Volgens mij kun je met beide technieken een vergelijkbaar resultaat bereiken. Wel lijkt het alsof Javascript wat sneller werkt. Maar ik vraag me nu dus echt af wanneer, voor welk doel je wat gebruikt. Wat zijn de overwegingen? Wat zijn voor- en nadelen? Hangt het van het "type" website af? Ik ben heeeel erg benieuwd ...
Een Javascript-ding moet eerst html-output krijgen (dus het PHP-gedeelte heb je toch wel, via JSON), moet dat verwerken in Javascript en dan nog redereren.
Zo is het argument van 'sneller laden van een pagina' bij mijn gevoel, niet het geval.
Juist dat Javascript is langzamer, voor mijn idee.
Over de snelheid: bij een hele snelle webserver en goede caching, zal dat toch sneller zijn?
Ja, je hoeft je <title>, <head> en <links> niet te downloaden, maar hoe veel tijd kost dat?
Een JSON die "title" en "div" laad is wel sneller/korter, maar moet dan nog verwerkt worden. Hoeveel tijd kost dat?
Bij een snelle Javascript-motor (ala Chrome etc) is dat ook kort.
Persoonlijk: ik zou gewoon blij PHP blijven.
Het is en blijft javascript. Dus wanneer men javascript uitschakelt, dan ben je de functionaliteit kwijt. Beter lijkt me dit te combineren met een server side taal. Bijvoorbeeld php. Het is heel mooi om fancy smoelende dingen te maken voor de gebruiker, maar je mist aan de andere kant een stukje controle die belangrijk is voor de veiligheid.
Persoonlijk zou ik eerst kijken wat ik er mee wil bereiken i.p.v. mij druk maken over snelheid. ;)
Gewijzigd op 04/05/2015 09:25:51 door Bart V B
Ik was ook niet van plan om dat overboord te zetten ;)
Maar ik zie wel dingen die me opvallen. Neem bijvoorbeeld dit voorbeeld. Een inputveld waarin je iets kunt typen. Hoe komt het dat de angular versie veel sneller reageert?
jquery : http://jsfiddle.net/daniellmb/4qxgv/
angular: http://jsfiddle.net/daniellmb/34yVp/
Maar in het algemeen is mijn vraag eigenlijk, WANNEER of WAAROM zou je een website maken met AngularJS? Wat zouden iemands beweegredenen kunnen zijn? Is het een persoonlijke voorkeur?
Wat ik zelf ook wel geinig vind is bijvoorbeeld zoiets. Je kunt in angularjs heel makkelijk een interactief filter maken, zoiets als dit:
http://jsfiddle.net/Onza/cWVrV/
Als je dat in jquery doet, krijg je dit, maar het is wat trager.
http://jsfiddle.net/umaar/t82gZ/
Nu gaat het me echt niet alleen om snelheid overigens, maar het valt me gewoon op. Kun je angular dan ook alleen voor dit soort specifieke toepassingen gebruiken, en niet voor routing e.d.?
Overigens ben je nu nog steeds hele kleine stukjes Angular aan het vergelijken met andere technieken. Ik zou het nog steeds geen Angular noemen. Probeer eens een echte applicatie in Angular te schrijven, met models, views, controllers, etc. Pas dan kun je echt leuk gaan vergelijken.
De belangrijkste vraag die je jezelf moet stellen is: Dynamisch of Statisch? Als je hier statisch op antwoord, wordt Angular alleen maar traag en moet je lekker PHP gaan gebruiken. Als je hier Dynamisch op antwoord is het verstandig te gaan kijken naar JS frameworks (welke hou ik even in het midden, er zijn er velen).
Er zit in het jquery stuk een hoop extra dingen dus qua snelheid is het onlogisch om het te vergelijken.
Voor de goede orde, ik heb het niet zelf geschreven maar even gegoogled ;)
>> De belangrijkste vraag die je jezelf moet stellen is: Dynamisch of Statisch?
Oké, maar even l@llig gezegd, iedere webpagina is natuurlijk in zekere zin dynamisch. Maar ik denk dat je dan doelt op data die "live" direct op het scherm moet worden aangepast, zonder eerst de pagina te herladen?
* edit: kun je een paar voorbeelden geven van wat jij verstaat onder dynamische websites waar je (bijv.) angularjs voor zou kunnen gebruiken? *
>> Er zit in het jquery stuk een hoop extra dingen dus qua snelheid is het onlogisch om het te vergelijken.
Je bedoelt in de voorbeeldscriptjes? Maar dat is dus ook wat ik bedoel. Blijkbaar kun je in angularjs e.e.a. korter schrijven, heb je minder code nodig. Of begrijp ik jouw opmerking verkeerd?
Gewijzigd op 04/05/2015 11:12:37 door Ozzie PHP
Er zit ook nog een fade in en dat is niet het geval bij angular. Of ik begrijp jou snelheid niet kan ook natuurlijk.
De schrijfwijze is wel korter idd.
Dat kan handig zijn. Ik dacht dat jij het had over het renderen.
Dat klopt inderdaad, maar ik heb sowieso het idee dat angular sneller is. Probeer deze maar eens:
jquery : http://jsfiddle.net/daniellmb/4qxgv/
angular: http://jsfiddle.net/daniellmb/34yVp/
Bij angular verschijnt de tekst vrijwel gelijk terwijl je typt, bij jquery duurt het iets langer.
>> De schrijfwijze is wel korter idd.
Ja inderdaad. Dat vind ik zelf wel mooi.
Maar m'n vraag is vooral (en nog steeds) wanneer je angular zou kunnen gebruiken. Stel we nemen deze site. Zou angularjs daar geschikt voor zijn bijvoorbeeld? Ik zit voor mezelf een beetje te "brainstormen" wat zinnig is. AngularJS gaan gebruiken, of gewoon PHP met jQuery. Waar heb je bij het dagelijks gebruik het meeste aan? Wanneer heeft het zin om AngularJS te gebruiken in plaats van PHP met jQuery?
php is een van je favoriete.
Waarom die 2 dan niet combineren?
Ik denk dat dat een hele persoonlijke afweging is. Wat ik vooral als voordeel zie is de schone output code (view)
Ozzie PHP op 04/05/2015 10:25:16:
>> Persoonlijk: ik zou gewoon blij PHP blijven.
Ik was ook niet van plan om dat overboord te zetten ;)
Maar ik zie wel dingen die me opvallen. Neem bijvoorbeeld dit voorbeeld. Een inputveld waarin je iets kunt typen. Hoe komt het dat de angular versie veel sneller reageert?
jquery : http://jsfiddle.net/daniellmb/4qxgv/
angular: http://jsfiddle.net/daniellmb/34yVp/
Maar in het algemeen is mijn vraag eigenlijk, WANNEER of WAAROM zou je een website maken met AngularJS? Wat zouden iemands beweegredenen kunnen zijn? Is het een persoonlijke voorkeur?
Wat ik zelf ook wel geinig vind is bijvoorbeeld zoiets. Je kunt in angularjs heel makkelijk een interactief filter maken, zoiets als dit:
http://jsfiddle.net/Onza/cWVrV/
Als je dat in jquery doet, krijg je dit, maar het is wat trager.
http://jsfiddle.net/umaar/t82gZ/
Nu gaat het me echt niet alleen om snelheid overigens, maar het valt me gewoon op. Kun je angular dan ook alleen voor dit soort specifieke toepassingen gebruiken, en niet voor routing e.d.?
Ik was ook niet van plan om dat overboord te zetten ;)
Maar ik zie wel dingen die me opvallen. Neem bijvoorbeeld dit voorbeeld. Een inputveld waarin je iets kunt typen. Hoe komt het dat de angular versie veel sneller reageert?
jquery : http://jsfiddle.net/daniellmb/4qxgv/
angular: http://jsfiddle.net/daniellmb/34yVp/
Maar in het algemeen is mijn vraag eigenlijk, WANNEER of WAAROM zou je een website maken met AngularJS? Wat zouden iemands beweegredenen kunnen zijn? Is het een persoonlijke voorkeur?
Wat ik zelf ook wel geinig vind is bijvoorbeeld zoiets. Je kunt in angularjs heel makkelijk een interactief filter maken, zoiets als dit:
http://jsfiddle.net/Onza/cWVrV/
Als je dat in jquery doet, krijg je dit, maar het is wat trager.
http://jsfiddle.net/umaar/t82gZ/
Nu gaat het me echt niet alleen om snelheid overigens, maar het valt me gewoon op. Kun je angular dan ook alleen voor dit soort specifieke toepassingen gebruiken, en niet voor routing e.d.?
Even als reactie op de 2 fiddles, is niet helemaal eerlijk vergelijken
Je angular filter gebruikt een hide, je jQuery filter een fadeOut. Hoe kort je die fade ook maakt, het gaat niet sneller zijn dan hide.
Als je je fadeOut door hide vervangt gaat het in dit geval gewoon even vlot ;)
En ... ik zou me ook wat meer willen verdiepen aan de interactieve kant. Met php kan ik aardig uit de voeten. Op het gebied van js kan ik nog wel wat slagen maken. Maar ik zit dus te denken om me wat te gaan "specialiseren" (heel groot woord) in AngularJS of jQuery, zodat ik dat wat beter onder de knie krijg. Maar ik vraag me dan dus af, waar ik het meeste aan ga hebben.
Ik heb meerdere projecten van mijzelf omgezet naar angular. wat eerst in PHP geschreven was.
Dan zie je pas waar je het het beste voor kunt gebruiken, en waarvoor andere technieken weer handiger zijn.
Nou, het is ook weer niet zo dat ik tijd teveel heb ;)
>> Ik heb meerdere projecten van mijzelf omgezet naar angular. wat eerst in PHP geschreven was.
Nou, vertel mij dan eens a) waarom je dat hebt gedaan en b) wat jouw bevindingen zijn. Ben je er iets mee opgeschoten?
Op stage werken ze met Angular, om dat snel onder de knie te krijgen en om te zien wat er gaat met angular (en wat niet) heb ik ervoor gekozen om bestaande projecten van mijzelf om te zetten naar angular.
Gewijzigd op 04/05/2015 13:38:10 door Ozzie PHP
Jquery is niet hetzelfde, jquery is een library en angular is een framework om een site mee te bouwen.
Ah oké ... maar wat voor voordelen biedt het? Als je nu een nieuwe site zou gaan bouwen, zou je dan AngularJS gaan gebruiken? Wat kun je ermee wat je bijvoorbeeld voorheen niet kon?
PHP is serverside, Angular is en blijft serverside.
Je kan met Angular je frontend bouwen en besturen en met PHP zou je de data e.d kunnen besturen.
Twitter is een voorbeeld van 1 van de grootste dynamische websites. Bijna alles werkt zonder refresh, het inladen van nieuwe tweets, het posten van tweets, het tonen van retweet counts, etc. Moet je eens voorstellen wat er zou gebeuren als twitter een PHP framework had gebruikt :)
Twitter gebruikt daarom ook FlightJS (een veel leuker JS framework ;)).
Voor PHPhulp zou het niet zoveel toevoegen om een dynamische website te zijn (tenzij het een soort chat-forum-systeem wordt). Voor Twitter zou het zijn van een statische website compleet belachelijk zijn.
Je moet dus zelf je afwegingen maken. Zoals ik in het andere topic al had verteld, een webshop kun je dynamisch en statisch maken. Beide werken, maar je zou kunnen zeggen dat de dynamische versie gebruikersvriendelijker is, omdat je niet telkens pagina na pagina aan het laden bent (product, winkelmandje, bestelpagina, success pagina). Daarom zou je daar misschien Angular voor willen gebruiken.
Overigens begin ik me af te vragen hoeveel van wat wij vertellen binnenkomt, want er wordt telkens weer gevraagd om jQuery met Angular te vergelijken terwijl iedereen tot nu toe heeft uitgelegd dat dat niet kan...
Gewijzigd op 04/05/2015 15:30:29 door Wouter J
Maar daar gaat mijn vraag dus over. Wanneer, in welke situatie, gebruik je Angular? Wanneer heb je zo'n javascript framework nodig? Voor wat voor soort websites gebruik je dat normaliter?
Toevoeging op 04/05/2015 15:33:12:
@Wouter, oké ... dat is een duidelijk onderscheid, thanks! En kun je dan ook combineren eigenlijk? Dus wel angular gebruiken, maar de routing gewoon met php doen? Of werkt dat dan weer niet?
Gewijzigd op 04/05/2015 15:33:59 door Ozzie PHP