# Webdevelopment

Webdevelopment is een verzamelnaam die wordt gebruikt voor alles wat met het realiseren van een website te maken heeft. Hieronder wordt onder andere verstaan: webdesign, client-side en server-side-programmeren en beheer van webservers.

## Wysiwyg

HTML-code wordt gebruikt om een webpagina in te delen en op te maken (positioneren van tekstgedeelten en afbeeldingen, kleuren, lettertypen e.d.). De meeste ontwikkelaars schrijven het liefst de HTML-code zelf. Hierdoor heeft de ontwikkelaar meer controle over het resultaat. Daarnaast schrijft een ervaren programmeur deze code vrijwel net zo snel als dat een ander de pagina bouwt in een wysiwyg-editor.
Andere programmeurs geven de voorkeur om de code niet zelf te schrijven, maar dit over te laten aan een zogenaamde wysiwyg-editor. Hiermee stel je de pagina samen op een manier die te vergelijken is met het maken van een pagina in een tekstverwerker (zoals LibreOffice Writer of Microsoft Word). De onderliggende code wordt door de applicatie automatisch gegenereerd. Bekende HTML-wysiwygeditors zijn Microsoft Expression Web, Microsoft SharePoint Designer en Adobe Dreamweaver. Een veelgehoorde kritiek op wysiwyg-editors is dat ze onnodig ingewikkeld coderen, wat twee nadelen heeft: de code is nauwelijks leesbaar voor de ontwikkelaar en het heeft aanzienlijk grotere bestanden tot gevolg, wat de download van pagina's vertraagt voor websitebezoekers.
Veel wysiwyg-editors hebben ook een mogelijkheid om de HTML-code te bekijken en eventueel aan te passen.

## Statische en dynamische websites

Als je één of meer pagina's hebt met een stuk tekst en eventueel een paar plaatjes, kan je al spreken van een website. Een dergelijke website noem je een statische website omdat het niets anders doet dan een statische tekst en eventuele plaatjes tonen. Maar zodra je wilt dat een bezoeker zich op je website kan aanmelden (bijvoorbeeld voor een forum), of dat er actuele informatie uit derde bronnen wordt getoond, dan is het nodig dat de website haar gegevens kan opslaan in een database. Dan spreek je van een dynamische website. De inhoud van de website wordt namelijk actief/dynamisch samengesteld met gegevens uit een database. Om deze handelingen te automatiseren wordt er gebruikgemaakt van een programmeertaal en programmacode, die beschrijft welke handelingen de computer of server moet uitvoeren. Programmeertalen zijn onder te verdelen in twee hoofdgroepen: client-side en server-side talen. Statische websites maken (tijdens hun interactie met de bezoeker) enkel gebruik van client-side programmacode, terwijl dynamische websites daarvoor ook server-side talen (kunnen) gebruiken. Er zijn ontwikkelingen die dit strikte onderscheid vertroebelen, waaronder de opkomst van de JAMstack.

## Client-side scripting

Een client-side script is een script dat door de browser van de websitebezoeker wordt uitgevoerd. Hiervoor zijn verschillende scripttalen beschikbaar, zoals VBScript en JScript. Meestal werken sites met JavaScript, omdat alle browsertypen JavaScript ondersteunen. VBScript bijvoorbeeld wordt alleen ondersteund door Internet Explorer en niet door Mozilla Firefox.
Client-side scripting wordt veel gebruikt in combinatie met DHTML (Dynamic HTML). Denk hierbij aan het kopiëren of juist verbergen van een tekstveld als dit nodig is, maar ook het controleren of je in een aanmeldingsformulier alle gegevens hebt ingevuld. Op een goed doordachte website zul je nooit beveiligingskritische functies vinden die door een client-side script moeten worden uitgevoerd.

## Server-side scripting

Server-side script is een script dat niet door de browser, maar door de webserver wordt uitgevoerd. Deze voert de handelingen uit die in het script zijn beschreven, waaronder bijvoorbeeld het aanroepen van een database, en stelt aan de hand hiervan een HTML-bestand samen. Dit bestand wordt vervolgens naar de client (de browser van de websitebezoeker) gestuurd. De client ziet dus nooit het server-side script, omdat dit cruciale informatie kan bevatten, zoals databasewachtwoorden.
De populairste talen voor server-side scripting zijn ASP, ASP.NET en PHP. ASP.NET is de opvolger van ASP (Active Server Pages), beide van Microsoft. Hoewel ASP door (vooral kleinere) bedrijven nog af en toe wordt gebruikt, is opvolger ASP.NET de populairste van de twee. Tot 2008 gaven vooral grotere IT-bedrijven de voorkeur aan deze taal, vooral vanwege de object-georiënteerde eigenschappen, die het eenvoudiger maakt om grote complexe systemen te bouwen en te onderhouden. Sinds de introductie van PHP versie 5 maken steeds meer grote IT-bedrijven de overstap naar PHP omdat de nieuwe versie zich richt op object-georiënteerde programmatuur en complexe structuren. PHP (PHP Hypertext Preprocessor) is vanaf de stabiele versie 3 populair geweest onder amateurs en kleinere webbedrijven. Dit komt vooral omdat de taal redelijk eenvoudig van structuur is en daardoor vrij snel te leren is. Andere voordelen van PHP zijn, dat het door de manier waarop het script wordt uitgevoerd, deze websites erg snel laden. Ook zijn de investeringskosten laag omdat PHP een opensourceproject is en daarom gratis gebruikt mag worden. PHP kan zeer goed draaien op een pc of server onder Windows, maar is eigenlijk bedoeld om te worden gebruikt in een LAMP-configuratie. Dat is de combinatie van vier opensourceprojecten: een Linuxbesturingssysteem met een Apache-webserver, een MySQL-database en PHP-scriptondersteuning.
Naast de genoemde scripttalen zijn er ook nog minder gebruikte talen, zoals Perl, ColdFusion, Python en Ruby.

## Contentmanagementsystemen

De laatste jaren worden kant en klare contentmanagementsystemen steeds populairder. Naast verschillende professionele commerciële systemen, zijn er verschillende opensource-systemen beschikbaar zoals XOOPS, Joomla!, WordPress, TYPO3 en Drupal. Hiermee is het mogelijk om een actieve website te bouwen zonder één regel script te hoeven schrijven. In deze systemen kan men aan de hand van kant en klare templates en allerlei vooraf in te vullen instellingen een complete website configureren. Wel vergt het flink wat tijd, energie en inzicht om thuis te raken in zo'n systeem.