Smart Duck

Angular wat een ramp

Angular is een framework om webapplicaties te ontwikkelen. De afgelopen 8 maanden heb ik hier mee leren werken. In dit stukje belicht ik waarom ik Angular liever niet meer voor een volgende applicatie zou inzetten.

Typescript
Typescript is een nieuwe "taal" die je moet leren om een Angular project te bouwen. Het lijkt er op of men wil proberen een statische manier van programmeren in javascript te krijgen. Een hopeloze poging javascript aantrekkelijk te maken voor C# ontwikkelaars. Typscript wordt door een parser weer in javascript vertaald. Deze parser zorgt er, tijdens ontwikkelen, voor dat het even duurt voordat je na een aanpassing de wijziging op je webpagina ziet. Een verandering in javascript zie je direct na een refresh van je webpagina. Niet alle editors ondersteunen typescript. Je bent aangewezen op Atom met plugin, Visual Studio Code of WebStorm. Niet alle browsers ondersteunen typescript debugging.

Package hel
Met de package manager npm kun je van allerlei modules aan je project toevoegen. Kijk hier mee uit. Ik heb bij de migratie van Angular 2 naar 4 best veel moeten herschrijven. Zo kan het zijn dat een package niet langer wordt doorontwikkeld. Of de ontwikkelaar heeft wijzigingen aangebracht die er voor zorgen dat je website niet meer werkt. Bijvoorbeeld bij Angular Material tags en modules beginnen in eens met <mat.. en Mat.. i.p.v. <md.. en Md.. . De documentatie bij veel packages is ronduit slecht. Zo moet je er vaak zelf achter zien te komen dat je afhankelijkheden (Modules) nodig hebt. Er is een complete wildgroei van packages op o.a. npmjs en github waar niet meer uit te komen is.

Overgecompliceerd
Door een brei aan technieken (modules, directives, routes, observables, nodejs, npm, ng) is het een complex raamwerk. Overgecompliceerd naar mijn idee. Je bent vrij lang bezig om Angular onder de knie te krijgen. Een framework zou werk uit handen moeten nemen, niet complexer moeten maken.

Conclusie
Voor de ontwikkeling ben je afhankelijk van Chrome als browser en debugger. Gezien Chrome een groot privacy lek is (Google) is dit een grote min. Javascript is prima te doorgronden en te structureren, typescript is een overbodig verzinsel. Structuur in je projecten kun je zelf ook aanbrengen daar heb je Angular niet voor nodig. En als je eenmaal alles een beetje door hebt in Angular ben je niet productiever dan wanneer je alleen javascript zou gebruiken. Dus als je snel websites wilt ontwikkelen laat Angular dan links liggen.

Programmeerkeuken

Ik programmeer bijna dagelijks in C# met Visual Studio. Prima taal en ontwikkelomgeving. Python en PHP hebben met name als programmeertaal voor mijn hobbyprojecten de voorkeur.

Vergelijk Microsoft met een 3 sterren restaurant. De meeste koks in zo'n restaurant hebben een blinkende hi-tech keuken(Visual Studio en tools) met veel ingredienten beschikbaar(keur van libs en functionaliteit). Hiermee maken ze veel gangen, ingewikkelde gerechten (applicatie lagen). Alleen het eindresultaat is het net niet, food voor status en snobs. Ze lijken meer bezig te zijn met "kijk eens wat ik kan" in plaats van een lekker gerecht te maken. Op weg naar huis verlang je naar een friet speciaal....

Met een editor zoals Atom of Geany en een taal als Python of PHP heb je, een rommelige keuken, een aantal goede basisingredienten tot je beschikking die je heerlijk bij elkaar kunt gooien en als resultaat heb je een heerlijke hap zoals bij de Turk of bij de Chinees. Een geweldig broodje donner of hap bami met babi pangang, lekker veel, buik goed vol en met een voldaan gevoel naar huis.

Frameworks

Frameworks worden te pas en te onpas gebruikt. Er lijkt wel een soort wildgroei van allerlei raamwerken te zijn voor de programmeur. Frameworks om sites te bouwen, denk aan Symphony voor PHP, Ruby on Rails, Django en template engines zoals Smarty. En op javascript gebaseerde frameworks zoals React en Angular. Ik ben hier op terug aan het komen en in eerste instantie not to framework.

Een framework lijkt in eerste instantie vaak een geweldige tool en bereik je in korte tijd een leuk resultaat. Echter moet je je er van bewust zijn dat het framework wat je toepast niet het eeuwige leven heeft. Je bent afhankelijk van de ontwikkelaars van het framework dat je toepast. De makers van deze frameworks en engines hebben een bepaald doel voor ogen gehad wat voor hun blijkbaar werkte en die filosofie moet ook werken voor jouw team en projecten. Sommige frameworks hebben daarnaast een best hoge leercurve. Kijk bijvoorbeeld naar Angular (2 en hoger). Je bent daar best een tijdje mee bezig voordat je alle facetten van het framework door hebt en productief bent. Je leert er eigenlijk een taal en werkwijze bij.

Nog even over template engines waarvan Smarty een mooi voorbeeld is. Niet echt een framework maar kan wel in dezelfde 'categorie' meegenomen worden. Je hebt PHP, een prima taal om dynamische websites te bouwen. Je maakt een HTML pagina en plaats op bepaalde plekken dynamisch informatie met PHP. Dus de HTML pagina kun je zien als template die je vult met een scripting taal PHP. Waarom dan Smarty (een template engine) gebruiken? Je hebt al een template engine en dat is je PHP. Met PHP maar ook in andere scripttalen kun je prima een scheiding maken tussen inhoud, opmaak en dynamische elementen. Template engines zijn in mijn ogen dan ook kul.

Mijn advies is, bij kleine projecten not to framework. Creeer je eigen structuur in welke taal je ook prettig vind. Met een framework voeg je onnodig complexiteit toe en dat is voor kleine websites overkill. Bij grote complexe projecten kan een framework voordeel bieden. Het dwingt jou en/of je team in een bepaalde structuur te werken. Hiermee kun je gemakkelijker afdwingen dat iedere ontwikkelaar op de zelfde manier nieuwe onderdelen in het project bouwt. Kies dan wel voor een framework dat zich al min of meer bewezen heeft in de laatste jaren en waar actief aan wordt ontwikkeld zodat je ook de komende jaren op het gekozen framework kunt bouwen.

Home