A. 필수 (Essential)
B. 적극 권장 (Strongly Recommended)
C. 권장 (Recommended)
D. 주의 필요 (Use With Caution)
HTML과 JS에 대한 제안은 하지 않는다
세미콜론, 쉼표(trailing commas) 등
속성값을 위해 '' / "" 등
이 규칙은 오류를 예방하는데 도움을 주기에 반드시 학습하고 준수하자
예외도 있긴 하지만 매우 드물고 JS와 Vue에 대한 전문지식이 있어야 해결 가능
root 컴포넌트인 App과 <transition>, <component> 등 Vue에서 제공되는 빌트인 컴포넌트를 제외하고 컴포넌트 이름은 항상 합성어를 사용
모든 HTML 요소의 이름은 한 단어이기에 합성어를 사용하는 것은 기존 그리고 향후 HTML 요소와의 충돌을 방지


컴포넌트의 data는 반드시 함수여야 한다.
컴포넌트 (new Vue를 제외한 모든 곳)의 data 프로퍼티 값은 반드시 객체(Object)를 반환하는 함수


Prop은 가능한 상세하게 정의
적어도 타입은 명시되도록 가능한 상세하게 정의








플러그인, mixin 등에서 커스텀 사용자 private 프로퍼티에는 항상 접두사 $_를 사용하라
다른 사람의 코드와 충돌을 피하려면 named scope를 포함하라


이 규칙은 대부분의 프로젝트에서 가독성 그리고 개발자 경험을 향상 시키는 것으로 발견
해당 규칙을 위반해도 코드는 실행되지만, 위반은 드물어야 좋다.










Order of words in component names
Self-closing components
Component name casing intemplates
Component name casing in JS/JSX
Full-word component names
Multi-attribute elements
Simple expressions in templates
Simple computed properties
Quoted attribute values
Directive shorthands
동일하게 좋은 여러가지 옵션이 존재하는 경우, 일관성을 보장하기 위해 임의의 선택 가능
이 규칙은 각각 수용 가능한 옵션을 설명하고 기본 선택을 제안
좋은 이유가 있다면 자유롭게 선택 가능
Component / instance options order
Element attribute order
Empty lines in component/instance options
Single-file component top-level element order
이 규칙은 잠재적 위험 요소를 인식시켜 주고 언제 그리고 왜 피해야 되는지 설명해줌
v-if / v-else-if/ v-else without key
Element selectors wit scoped
Implicit parent-child communication
Non-flux state management
치킨 주문하기
세탁기에 빨래 넣고 돌리기
로봇 청소기 돌리기
걸레질 하기
쓰레기 버리고 오기

이벤트를 처리하는 Call Stack이 하나
즉시 처리하지 못하는 이벤트들을 (Web API)로 보내서 처리
처리된 이벤트들은 처리된 순서대로 (Task queue)에 저장
Call Stack이 공백이 되면 (Event Loop)가 대기 줄 에서 가장 오래된 이벤트를 Call Stack으로 보냄


비 동기식 JavaScript와 XML
서버와 통신을 하기 위해 XMLHttpRequest 객체 활용
JSON, XML, HTML 그리고 일반 텍스트 형식등을 포함한 다양한 포맷을 주고 받을 수 있다.
페이지 전체를 새로고침 하지 않더라도 수행되는 비동기성(일부분만 업데이트 가능)

JavaScript Object
서버와 상호작용하기 위해 사용
전체 페이지의 새로고침 없이도 URL로부터 데이터를 받아올 수 있다.
사용자의 작업을 방해하지 않고 페이지의 일부를 업데이트 할 수 있음
AJAX 프로그래밍에 주로 사용
XML이라는 이름과는 달리 모든 종류의 데이터를 받아 오는데 사용 가능
http 이외의 프로토콜들 지원 (file, ftp 포함)
대부분의 브라우저에서 지원
Async Callbacks
Promise-Style
비동기 작업을 마치 동기 작업처럼 값을 반환해서 사용 형태
미래의 완료 또는 실패와 그 결과 값을 나타냄
미래의 어떤 상황에 대한 약속
new Promise(function(resolve, reject) {})
resolve(성공 시 사용)
reject(실패 시 사용)

.then(callback)
.catch(callback)
.finally(callback)
체이닝 가능

브라우저와 node.js에서 사용할 수 있는 Promise 기반 HTTP 클라이언트 라이브러리
Vue에서 권고하는 HTTP 통신 라이브러리
특징
CDN : <script src = "https://unpkg.com/axios/dist/axios.min.js"></script
NPM 방식 : npm install axios
axios(config)
axios(url, [, config])
axios.get(url [, config])
axios.delete(url [, data[, config]])
axios.post(url [, data [, config]])
axios.put(url [, data [, config]])