MPA, SPA
- MPA : 멀티 페이지 어플리케이션(여러개의 HTML 파일)
- 장점 : 아키텍처가 간단하여 초급자가 쉽게 개발할 수 있다.
- 단점 : 사용자 경험이 떨어진다. 매 페이지 요청마다 새로고침(리로딩)이 발생한다. 서버 렌더링에 따른 부하가 발생한다.
- SPA : 싱글 페이지 어플리케이션(단 하나의 HTML)
- 장점 : 자연스러운 사용자 경험, 반복되는 패턴을 컴포넌트로 만들어 재사용이 가능하다.
- 단점 : 초급자가 많은 프로젝트의 경우 도입이 힘들다.
아키텍쳐와 MTV 패턴
아키텍쳐
- 모놀리식 : 백엔드와 프론트엔드가 하나의 서버에서 하나의 아키텍쳐에서 개발
- 마이크로식 : 백엔드와 프론트엔드가 다른 서버에서 다른 아키텍쳐로 개발
MTV 패턴
-
Django
- Model
- DB에 저장되는 데이터를 정의 및 관리
- ORM으로 DB 조작
- Template
- 프론트엔드 화면을 정의
- 백엔드 데이터를 템플릿에 주입하여(템플릿 문법) 표현 가능
- View
- 클라이언트 요청을 처리하고, 모델과 템플릿을 연결
- 모델에서 데이터를 가져와 템플릿에 전달
- 사용자 인증, 폼처리 등의 작업 수행
- 비즈니스 로직 구현
-
Spring
- Model
- Django의 Model과 유사
- DB에 매핑되는 도메인 객체 정의
- View
- Controller
FE 프레임워크와 결합
-
Django + React (대세, 스타트업은 거의 공식과 유사)
-
Django + View
-
Django + tailwind : 디자인대로 개발 가능. 클래스를 외워야 함
-
Django + Bootstrap : 빠르게 개발 가능. 커스터마이징 힘듬
모델과 DB의 관계
- 1:1
- 1:N
- models.ForeignKey()의 인자로 N을 넣음
- N:M
- models.ManyToManyField()의 인자로 둘중 하나를 넣음
URL 라우팅
from django.urls import path, include
from django.conf.urls import url
from blog import views
urlpatterns = [
path('a/', include('a.urls')),
path('b/', include('b.urls')),
path('c/', include('c.urls')),
path('d/', include('d.urls')),
path('e/', views.index),
url(r'^book/(?P<book_name>\w+)/$', views.bookinfo),
]
위 코드처럼 정규표현식으로도 표현이 가능하지만 보통은 사용하지 않는다.
FBV, CBV
FBV
함수 기반으로 뷰를 구성한다. 간단한 기능을 만들 때 사용한다.
CBV
클래스 기반으로 뷰를 구성한다. 제네릭 뷰도 클래스 뷰에 속한다.
실무에서는 섞어서 사용하며 보통 CBV를 사용한다.
DRF(Django Rest Framework)
JSON 형식으로 데이터를 직렬화하여 클라이언트와 서버 간에 통신을 진행한다.