웹 서비스 개발에서 SPA 등 새로운 트렌드로 인해 클라이언트단에서 Javascript로 작성하는 코드의 양도 늘어나게 되었다. 이렇게 되면서 코드의 유지와 보수를 위해 모듈화를 하여 관리하게 되었는데 Javascript는 자체에서 모듈을 지원하는 시스템이 없기 때문에 이러한 한계를 극복하고자 활용하게 된 도구 중 하나가 바로 이 Webpack이다.
또한, 내가 작성한 코드가 지원되지 않는 브라우저와의 호환성을 위해, 코드의 빠른 컴파일을 위해, 많은 라이브러리들을 각각 추가해주는 불편함을 해소하기 위해 사용한다.
크게 모듈 loader와 plugin으로 구성된다.
모듈(image, js, jsx, css, sass..)을 입력받아서 다른 형태로 수정후에 JavaScript로 변환한다. 예를 들어 ES6문법으로 짜여진 코드를 ES5 문법으로 변환한다.
주로 번들된 결과에 대한 후속 처리를 담당하며, loader처럼 모듈의 내용은 수정이 불가능하다. 예를 들어 html에 bundle.js를 추가하거나 /dist 디렉토리에 clear, bundle 파일을 압축한다.
MVC패턴은 디자인패턴 중 하나이다. 디자인 패턴이란 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리한 특정한 규약과 같은 것을 말한다.
애플리케이션의 정보, 데이터를 나타낸다. 데이터베이스, 상수, 초기화값, 변수 등을 뜻한다. 또한 이러한 정보들의 가공을 책임지는 컴포넌트이다.
이 모델은 다음과 같은 규칙을 가지는데,
입력 텍스트, 체크박스 등과 같이 사용자 인터페이스 요소를 나타낸다. 이는 데이터 입력 및 출력을 담당하며 데이터를 기반으로 사용자들이 볼 수 있는 화면이다.
다음과 같은 규칙을 갖는다.
데이터와 사용자인터페이스 요소들을 잇는 다리 역할을 한다. 즉, 사용자가 데이터를 클릭하고 수정하는 것에 대한 이벤트 등을 처리하는 부분이다.
다음과 같은 규칙을 가진다.
view : 메인 페이지 컴포넌트별로 나눈다. 이벤트를 등록하고 렌더링을 처리한다.
model : 각 모듈들의 상태관리
controller: 위의 둘을 잇는 중간 다리 역할 (이벤트 발생시 상태 업데이트 하고 뷰 변경하는 식)
이런 식으로 ?
자주 쓰는 scss 구문을 mixin으로 처리하여 한줄로 만들거나, 함수처럼 변수를 넣어 사용함으로써 가독성을 높이고 편리함을 가져다 준다.
나는 주로 이렇게 사용하였다.
@mixin flex-center {
display: flex;
justify-content: center;
align-items: center;
}
@mixin border($radius) {
border: 1px solid $gray4;
border-radius: $radius;
box-sizing: border-box;
}