html이 뭔가.
intro
- 현재 연구하고 있는 부분을 프로그램으로 구현해야 할 필요성이 생겼습니다. 그 과정에서 web framework인 django를 사용해보려고 하는데, 그전에, html이 무엇인지 등에 대해서 좀 정리를 해봐야 할 것 같다는 생각이 들었어요.
html은 무엇인가?
- html은 hyper-text markup language의 약자인데, 그냥 제가 지금 쓰고 있는 마크다운과 같은 방식이라고 생각하셔도 무방합니다.
- 일반적인 워드에서는 글을 죽죽 내용만 써내려가고, 스타일은 따로 구분되어 있는 반면, html과 같은 마크업 언어에서는 글의 내용과 스타일이 함께 표현이 되는 것이죠.
<tag>
를 사용해서 해당 글의 형식을 지정해줍니다. - 웹에서 쓰고, 브라우저에서 읽는 글에 대해서는 내용과 형식을 포함한 문서를 html이라고 생각하시면 됩니다.
사용자에게 html은 어떻게 보여지는가?
- 앞서 html이 글과 형식을 함께 담고 있는 문서라고 말씀드렸습니다. 대략 예를 들면 다음처럼 표시되죠.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Hello world!</title>
</head>
<body>
</body>
</html>
- 하지만 우리가 해당 문서를 웹 브라우저에서 읽으면, 저 내용이 그대로 표현되는 것이 아니라, 렌더링되어서 표현되죠.
- 사용자가 웹 브라우저에서 특정 uri를 주소창에 침
- uri에 해당하는 서버로부터 html 문서(+css 등)를 가져옴
- 브라우저에 설치되어 있는 rendering engine에서 html문서를 트리구조로 파싱
- html 내의 태그들이 nested 구조로 되어 있기 때문에(tag in tag in tag) 이를 분리해주는 것이 필요함
- 파싱된 트리를 중심으로 문서를 브라우저에 그려줌
- 대략 이런 순서로 진행된다고 생각하시면 됩니다.
렌더링 엔진 다툼
- ‘웹 브라우저’는 매우 중요합니다. 제 개인적인 생각일 수 있지만, 예전에 OS보다 웹 브라우저에서 도미넌스를 가져가는 게 매우 중요하다는 생각이 들어요. 앞서 말한 html을 렌더링해주는 엔진이 웹브라우저의 핵심이기도 하고요.
- 따라서, 당연히도 이 웹엔진간의 다툼도 있는 것 같아요.
- 파이어폭스는 ‘Gecko’라는 렌더링엔진을 쓰고, 크롬/사파리 등은 ‘Webkit’이라는 렌더링엔진을 쓴다고 합니다. 물론, 여기서도 구글과 애플은 서로 fork해서 서로 다른 형태의 렌더링엔진을 쓴다고 보는 게 더 적합할 것 같네요.
wrap-up
- 결론적으로 html 문서를 우리가 만들 때는, 그냥 만들면 되는 것 같습니다. 물론 html5의 권고안을 고려해서 만드는 것이 좋겠지만, html의 아주 특수한 태그들을 사용하지 않는 한은, 어차피 저기에 모두 포함될 것이고요.
- 그냥, html 문서를 잘 작성하면 될것 같습니다.
- 또한, flask든 django든 웹 프레임웤을 사용해서 만들면, 알아서 응답해줄테니 별 문제는 없을 것 같고요.
댓글남기기