MVC, MVVM 와 같은 단어는 소프트웨어 설계와 관련된 디자인 패턴으로, 소프트웨어 공학에서의 "흔히 사용되는" 설계 패턴을 의미한다.
React에서 사용했던 단방향 데이터 흐름이나, Redux에서 사용한 Flux패턴 역시 일종의 디자인 패턴이다
Model View Controller의 약자로 일련의 소프트웨어가 돌아가는 방식에 대한 하나의 패턴이라고 보면 된다. 특정 라이브러리를 지칭하는것은 아니고 이런 패턴으로 만들어진 여러 라이브러리나 프레임워크가 있다. 어떤 서비스가 돌아가는 방식에대한 아이디어,디자인,패턴이라고 볼 수 있다.
특징은 어떤 서비스가 돌아가기 위해서 여러 과정과 처리들이 필요한데 그런 처리들을 각 기능별로 나눠서 model,controller,view로 나눈다는 특징을 가지고 있다
model
controller
view
이렇게 각 기능에 따라 나눔으로 인해서 프로그래밍을 할때 하나의 코드베이스에서 모든 것을 하는게 아니라 일종의 정돈된 특별히 의도된 코드를 특정 역할에서 할 수 있다 그리고 이것은 코드 가독성, 관리성, 퀄리티 등이 나아지는 효과를 가져다 준다.
Ruby on Rails(Ruby), Express(JS), Laravel(PHP), Backbone(JS), Codeigniter(PHP), Angular(JS), Django(Python), FLask(Python)의 유명한 프레임워크에서 이런 MVC패턴을 사용한다.
ORM(Object Relational Model)은 바로 Model을 기술하는 도구이다. 이를 통해 데이터베이스 세계와 프로그래밍 언어 사이의 개념의 간극을 줄일 수 있다. 더 간단하게 얘기해 보자면 오늘 배워서 사용하게 된 Sequelize는 ORM의 일종으로 Sequelize를 사용하면 자바스크립트코드로 데이터베이스를 다룰 수 있다!
Sequelize는 Node.js에서 사용할 수 있는 ORM이다. 위에서도 언급했듯이 Sequelize를 사용하면 자바스크립트코드로 데이터베이스를 다룰 수 있다
Sequelize CLI 명령어를 사용해 데이터베이스 작업을 할 수 있는 도구이다. 마이그레이션을 할 수 있도록 돕는 툴로, CLI에서 모델을 생성해주거나, 스키마 적용을 할 수 있도록 해준다.
터미널에서 npm install --save-dev sequelize-cli
명령어로 설치할 수 있고
npx sequelize-cli init
명령어를 통해 부스트트래핑을 할 수 있다. init
명령어를 작성하면 config
, models
, migrations
, seeders
파일이 생성된다.
모델을 만들기 위해서는
npx sequelize-cli model:generate --name 모델이름 --attributes 속성이름:타입
명령어로 모델을 만들 수 있다.
주의해야할 점은 모델이름은 단수형으로 작성하면 복수형으로 생성이 된다. 그리고 attributes에서 속성을 여러개 주고자 한다면
--attributes name:string,phonenum:integer
와 같이 컴마(,)뒤에 띄어쓰기를 하면 안된다!
이번 스프린트는 공식문서와의 싸움이었다..