UI를 독립적이고 재사용 가능한 일부분으로 분할하고 각 부분을 개별적으로 다룰 수 있다.
그러면 자연스럽게 앱은 중첩된 Component의 트리로 구성이 됨
Single-File Components(SFC)
<template>
<div class='greeting'>{{ msg }}</div>
</template>
<srcipt setup>
import { ref } from 'vue'
const msg = ref('Hello World!')
</script>
<style scoped>
.greeting {
color: red;
}
</style>
npm create vue@latest
npm run dev
npm init
: Node.js 패키지 관리하겠다고 초기화하는 도구npm install
: 패키지를 설치하는 도구npm install <패키지명>
: 현재 프로젝트에 특정 패키지 추가npm install -g <패키지명>
: 전역 영역에 패키지 추가npm root
: 현재 패키지가 참조하고 있는 패키지 목록(node_module) 확인node_modules:
- Node.js 프로젝트에서 사용되는 외부 패키지들이 저장되는 디렉토리
- 프로젝트의 의존성 모듈을 저장하고 관리하는 공간
- 프로젝트가 실행 될 때 필요한 라이브러리와 패키지들을 포함
- .gitignore에 작성됨
npm audit
: > 보안취약점 ? -> 개발자가 악성 코드를 넣어놓으면, 그대로 노출됨
-> 최소한의 보안 취약점을 검사해주기 위해서 npm에서 제공하는 명령어
TypeScript
JSX
ESLint
vite
package.json
-name
: 프로젝트의 이름
-version
: 프로젝트의 버전
[Major]
.[Minor]
.[Patch]
Major
: 기존 버전과 호환되지 않는 새로운 기능이 추가될 때 버전 업Minor
: 기존 버전과 호환되는 새로운 기능이 추가될 때 버전 업Patch
: 기존 버전과 호환되는 버그 수정 및 기능 개선 시 버전 업private
: true로 설정하면, npm 레지스트리에 해당 프로젝트를 배포할 수 없음
scripts
: 프로젝트에서 실행 할 수 있는 실행 스크립트들을 정의하는 부분
dev
: 개발 서버 실행build
: 배포 할 수 있는 형태로 만들어줌preview
: 배포 했을 때 미리보기dependencies
: 필요한 패키지를 정의
틸드(~)
: 작성된 버전보다 높거나 같고, 다음 마이너 버전보다 낮은 버전 내에서 자동으로 업데이트~3.3.4
=> >=3.3.4
and <3.4.0
캐럿(^)
: 작성된 버전보다 높거나 같고, 다음 메이저 버전보다 낮은 버전 내에서 자동으로 업데이트^3.3.4
=> >=3.3.4
and 4.0.0
package-lock.json
$ npm install
: 실행시 자동으로 생성되는 파일name
,version
은 상황에 맞게 수정npm install
의 동작 과정
1.package.json
파일 검사
package-lock.json
파일 검사의존성 패키지 목록 확인 후 설치
resolved
: 해당 패키지의 다운로드 경로
integrity
: 다운로드 받은 패키지의 무결성을 체크하는 해시값
dev
: 개발 버전의 의존성으로 설치되었는지 여부(true/false)
bin
: 전역적으로 실행 가능한 설치 경로
engines
: 해당 패키지를 사용하기 위해 필요한 Node.js, npm 버전을 명시
optionalDependencies
: 선택적인 의존성을 가진 패키지
- 패키지들의 실제 설치버전, 의존성 관계, 하위 패키지등을 포함하여 패키지 설치에 필요한 모든 정보를 포함
- 패키지들의 정확한 버전을 보장하여, 여러 개발자가 협업하거나 서버 환경에서 일관성 있는 의존성을 유지하는데 도움을 줌
- npm install 명령을 통해 패키지를 설치할 때 명시된 버전과 의존성을 기반으로 설치
- 프로젝트의 메타 정보와 의존성 패키지 목록을 포함
- 프로젝트의 이름, 버전, 작성자, 라이선스 등과 같은 메타정보를 정의
- package-lock.json과 함께 프로젝트의 의존성을 관리하고, 버전 충돌 및 일관성을 유지하는 역할
- 주로 다음 정적 파일을 위치시킴
- 소스코드에서 참조되지 않는
- 항상 같은 이름을 갖는
- import 할 필요 없는
- 항상 root 절대 경로를 사용하여 참조
- public/icon.png -> /icon.png로 참조가능
- 프로젝트의 주요 소스 코드를 포함하는 곳
- 컴포넌트, 스타일, 라우팅 등 프로젝트의 핵심 코드를 관리
모듈의 수가 많아지고 라이브러리 혹은 모듈간의 의존성이 깊어지면서 특정한 곳에서 발생한 문제가 어떤 모듈간의 문제인지 파악하기 어려워짐
복잡하고 깊은 모듈의 의존성 문제를 해결하기 위한 도구 필요