The first time i tried to Geodata into the web was quite cumbersome because i just started programming and knew nothing of Web Development. I opted for a hosted solution which could be integrated easily in every Website with an iframe.
There are many such services and the Esri servers are by far not the best. Services like Carto or Mapbox offer a Geodata Hosting environment with a UI streamlined for non-coding users. Additionally Map Styling Editors are quite elaborate and allow for every kind of (aesthetical) adjustment. Mapbox also convinces with beautiful Basemaps of their own making.
Here i opted for the bare minimum, styling-wise, and also didnt refine the data very much. I am currently in the process of publishing the thesis as a monography which led to massively improved paper maps but reworking the webhosted data us currently not part of the plan.
Another way is to host your own infrastructure. My current employer maintains an instance of Geonode for its own purposes, see example below
Once one has taken the step into actually writing code one has a few choices. Leaflet is considered the most accessible library for Webmapping. To build a very basic map only very few lines of code are needed.
Below you find an example i built for a Freelance Job – a website accompanying an exhibition about an early-modern city wall surrounding Berlin
There is certain styling, certain customisation of default elements like the controls and the popup boxes and some interactivity. The checkboxes in the lower left activate overlays of georeferenced digitised paper maps hosted on a tile server here.
Leaflet clearly provides enough tools to built a nice presentation but reaches its limits with complex interactions.
OpenLayers on the other hand is loaded with functions but more complex to handle. Consider the following example:
It generates a hillshade from a DEM. Meaning it takes a Digital Elevation Model (DEM) and calculates the shadowfall given a certain position of the sun. The parameters to define the suns position are linked to the 3 sliders and the calculation is updated whenever on of the sliders is used.
Quite elaborated geoprocessing yet completely client-sided. Impressive. Anyway this not my own code but one of the official examples.