본 저장소는 웹 어플리케이션 동작 원리를 전달하고자 간단한 할 일 관리 어플리케이션을 두 가지 방법으로 구현해놓은 코드를 포함하고 있습니다.
작은 기능을 추가해보는 활동을 통해, 많은 코드 중 각 부분들의 역할 및 실행 위치, 실행 시점등을 이해하는 것을 목표로 합니다.
todos_app/__init__.py
- Flask app 정의
todos_app/database.py
- 데이터베이스 연결 및 초기화
todos_app/todo_repository.py
- 데이터베이스의 todos 테이블에 접근
todos_app/todo.py
- 할 일 항목을 나타내는 클래스
todos_app/todos_html/blueprint.py
- HTML 내장 기능만 활용해서 할 일 관리 어플리케이션을 구현
- 템플릿 위치:
todos_app/templates/todos_html/
todos_app/todos_js/blueprint.py
- JavaScript, DOM API를 활용해서 할 일 관리 어플리케이션을 구현
- 템플릿 위치:
todos_app/templates/todos_js/
GitHub Codespaces 실행 시 자동으로 서버가 실행되고 브라우저 창이 뜨면서 웹사이트에 접속됩니다.
직접 서버를 실행시키고 싶으시면, 아래 명령을 GitHub Codespaces 터미널에서 실행해주세요.
flask --debug run
- 터미널에 308 상태코드가 출력되며 페이지에 접속되지 않는 경우, 주소 끝에 슬래시(/)를 붙여주세요. 관련 StackOverflow 글
- 템플릿: HTML 중간중간에 Python 값을 넣어서 HTML 문서를 완성키기는 기능
- 템플릿으로 문서를 생성하는 Python 코드는 Python 서버에서 실행된다.
- 매 요청마다 웹 서버가 문서를 새로 생성해서 보여준다.
- 매 요청마다 문서를 새로 생성하기 때문에, 구현이 단순하다.
- 상호작용을 할 때마다 웹 브라우저 상에서 페이지 새로고침을 필요로 하기 때문에, 응답성이 나쁘다.
- 웹 브라우저에서 실행되는 JavaScript 를 통해 문서를 생성 및 조작하는 방식
- JavaScript 측에서 서버에 요청을 보내, 필요한 데이터를 받는다.
- 이후 DOM API를 통해 해당 데이터로부터 문서를 생성하거나 조작해서 내용을 표시한다.
- 상호작용을 할 때마다 페이지 새로고침을 할 필요가 없어서, 응답성이 좋다.
- 필요한 데이터를 받아와서, 필요한 부분만 DOM API를 통해서 조작해야 하기 때문에, 구현이 복잡하다.