{// examples >the goal is the same with each methodology >we have data.txt >it contains key-value pairs ¤its generated with this script { @begin=sh@ #!/bin/bash # generator.sh OUTPUT="data.txt" while true; do rm $OUTPUT for i in {0..7}; do (tr -dc A-Za-z0-9 > $OUTPUT done sleep 5 done @end=sh@ } >each website will attempt to display the contents of data.txt } Static: >completely handwritten >old school >fast both server and client side >there are no rapidly changing elements as every modification is manual >works very well for small sites consistent in content { // static.html @begin=html@Example webpage
dYcoNjAe 15810 aey3hj9V 30474 w50EXL8K 9688 gt3qgccG 21265 z63cbqAt 29301 uchA1fn8 1941 YRxi9MrI 31986 AMqnWWNZ 16368 @end=html@ >since its all manual, the values are hardcoded >was a chore just to create the example } Dynamic: >created at request >a (markup) generator must be used {php} { // dynamic.php @begin=php@Example webpage
@end=php@ >the file is actually opened and read >the websites content is guaranteed to correspond to data.txt's contents } Prerendered: >a dynamic is eval-ed before being deployed >at runtime the pregenerated version is being shipped >hybrid of static and dynamic >often also called static for simplicity >less typing than with static >contents might get out of the date >often used when the pages do not require updating, but all use the same template {every page needs the same header added} { // dynamic.php @begin=php@Example webpage
@end=php@ // its rendered to disk $ php dynamic.php > prerendered.html // prerendered.html is shipped } Live: >the website is blank by default, the content is appended by communicating with the serve in the background >uses websockets >stateful connection >can update the contents without refreshing the page >most reliable regarding data freshness >requires by far the most work relative to the other methods >requires writting js, for this reason alone, it's cancer { // Socks server using python #!/bin/python # sockets.py import asyncio import websockets import json async def send_data(ws): while True: j = {} with open('data.txt', 'r') as f: for line in f: key, value = map(str.strip, line.split(':', 1)) j[key] = value await ws.send(json.dumps(j, indent=4)) await asyncio.sleep(2) asyncio.get_event_loop().run_until_complete(websockets.serve(send_data, 'localhost', 8765)) asyncio.get_event_loop().run_forever() // Socks client using Javascript nested into the webpage @begin=html@Example webpage
@end=html@ >looks cool, i know }