flowerp schreef op maandag 29 januari 2007 @ 00:45:
[...]
Dat weet ik eigenlijk zo net nog niet. Een groot voordeel is natuurlijk dat deze black box wel degelijk support kan hebben voor zeer diverse browsers. Op het moment dat ik, stel, een progressbar op een pagina wil plaatsen dan wil ik op dat moment helemaal niet bezig zijn met een IE versie 5 of 6, of een Firefox zus of Safari zo.
En dus krijg je halfbakken markup die consessies doet naar de least dominor (of erger: bepaalde browser-behavior tot standaard verheft en de rest als minderwaardig beschouwd) of serverside UA-sniffing waarbij browsers uitgesloten of verkeerd behandeld zullen worden. Verder is browser-support niet iets dat vastgelegd dient te worden in een framework, dat is een onacceptabele beperking.
Als ik op de pagina handmatig support voor diverse browsers zou moeten inbouwen, dan leidt dat al snel af van mijn eigenlijke doel m.b.t. die layout.
Daar heb je dan ook een frontend-developer voor wiens taak dat wel is. Als er 1 ding erger is dan generated clientside code dan is het wel clientside code geschreven door een serverside devver

[...]
Bedenk overigens wel dat de beste componenten schrijvers zelf de mensen zijn die juist het meeste direct in HTML hebben gewerkt en daar ook het meest verstand van hebben.
Gezien de beroerde kwaliteit van de generated code van dergelijke componenten zet ik daar mijn vraagtekens bij

Vaak zie je toch dat het inderdaad serverside goed opgezet is, MVC model volgt e.d. maar clientside is het vervolgens wel weer acceptabel dat content, opmaak en behavior met elkaar vermengt zijn?
[...]
Een (goed) component heeft een public API. In deze API staat beschreven welke elementen met CSS te stylen zijn. Bij updates zal dit zeker niet veranderen. Is een verandering toch nodig, dan zie je vaak dat men gewoon een nieuwe component maakt wat ter vervanging dient van de oude. Zo zul je dan bijvoorbeeld een HTMLDataGrid2 krijgen als de public API veranderingen code breekt die een HTMLDataGrid gebruikt.
Dus over een paar jaar zit je met een mengelmoes van HTMLDataGrid 1 t/m 10 en een framework dat voor alle 10 ondersteuning moet blijven bieden? Tsja...
Wanneer jij direct inhakt op de gegenereerde code, dan kan het inderdaad voorkomen dat met een update dingen breken. Feitelijk is dit niet anders dan dat je in bijvoorbeeld Windows ongedocumenteerde functies in je eigen code gaat aanroepen, of dat je in Java d.m.v.reflection waardes van private fields in library classes gaat gebruiken.
Feit is dat dergelijke componenten vaak toch behoorlijk beperkt zijn, zeker als je voor een hippe website of webapp net iets meer wilt.
Nogmaals: ze hebben zeker hun waarde, maar cutting edge moet je er niet van verwachten - en dus is het saai

Helaas is de wereld natuurlijk niet altijd zo perfect. Javascript hacks voor bepaald gedrag is soms nodig, en het direct manipuleren van request parameters is ook niet altijd te voorkomen. Toch denk ik zeker dat deze manier van aanpak zeker een zeer goede stap in de richting is. Er is nog veel voor verbetering vatbaar, maar zowel ASP.NET als Java EE zijn er tenminste mee bezig.
Front-end development (markup, CSS, clientside scripting) is en blijft een apart vak; het is onzin om te denken dat je dat volledig kan vervangen door een aantal componenten. Voor saaie intranet applicaties (homogene browser-omgeving!) is het vaak prima en kan het een hoop tijd besparen, maar voor internet toepassingen is het nog niet eens een klein stapje in de goede richting.
Een goed component heeft naar mijn mening templates voor de clientside code die vrijelijk aan te passen zijn en tevens ook goed beschreven zijn (dus geen 86KB aan obfuscated javascript). Verder moet het idee dat clientside coden makkelijk is en er door een serverside devver wel bij gedaan kan worden ook maar eens naar het land der fabelen verwezen worden. Als je serieus een goede internet applicatie wil neerzetten dan moet de frontend zeker niet de sluitpost zijn...