함수형 프로그래밍은 순수 함수(pure function) 를 조합하고 공유 상태(shared state), 변경 가능한 데이터(mutable data) 및 부작용(side-effects) 을 피하여 소프트웨어를 만드는 프로세스입니다. 함수형 프로그래밍은 명령형(imperative) 이 아닌 선언형(declarative) 이며 애플리케이션의 상태는 순수 함수를 통해 전달됩니다.
순수 함수란 함수형 프로그래밍에 필요한 개념으로 아래 조건을 만족하는 함수를 뜻한다.
https://codesandbox.io/s/7wqn2j3wmq
reference
validity.valid = false
가 되고, 어떤 constraint를 어긴 것인지 validity
를 확인하여 알 수 있다.// html
<input id="input" type="number" required />
// console
console.log($("#input").validity);
/* {
valid: false,
valueMissing: true, // #input 에 입력된 값이 없는 경우 valueMissing이 true
customError: false,
...
} */
validity.valid = false
인 경우, CSS pseudo-class :invalid
가 바로 적용된다.
HTML built-in constraints(required, min, max, pattern 등) 외의 조건으로 input이 invalid한 경우에는, setCustomValidity
method를 호출하여 customError
값을 변경하여 validity.valid
값을 변경할 수 있다.
setCustomValidity(message)
message === ""
: customError
가 false
로 된다.message !== ""
: customError
가 true
로 된다.checkValidity
method 를 호출하면, valid
값을 확인하여 valid === false
인 경우 invalid event가 발생하며, valid 값을 반환한다.
reportValidity
method 를 호출하면, valid
값을 확인하여 valid === false
인 경우 invalid event가 발생하며, valid 값을 반환한다.
또한, Form Validation이 실행되어 setCustomValidity
로 설정한 message를 html5 built-in message로 표시한다.(이는 브라우저의 default action으로 형태나 지속시간 등을 제어할 수 없다.)
Reference
import "*.css"
구문을 해석하여, css 를 파싱합니다.<style></style>
로 넣어줍니다.Reference
- 발생한 위치에서 의미있게 처리할 수 있는 문제가 발생하면 바로 처리합니다.
- 발생한 위치에서 의미있게 처리할 수 없는 문제가 발생하면 예외를 일으킵니다(throw).
- 예외를 처리할 수 있는 위치를 찾아서 catch문에서 예외를 처리합니다.
악셀 라우슈마이어 - 자바스크립트를 말하다 14장 예외 처리 p251
예외 처리를 잘못 쓰는 가장 흔한 경우는 정상적인 결과를 처리할 때도 쓰는 것입니다. 예를 들어 파일을 읽는 함수에서 파일을 찾을 수 없는 것은 예외가 아닙니다. 흔히 일어날 수 있는 일이죠. 예외 처리는 예상하지 못한 문제를 처리할 때만 사용되어야 합니다.
더글라스 크록포드 - 자바스크립트는 왜 그 모양일까 14장 예외 - 일상적인 예외 152p
예측할 수 없는 에러가 발생하면 예외를 일으킵니다.
예를 들어 input 태그로부터 입력받은 값이 원하는 타입이 아니거나 정해진 제약조건을 충족시키지 않는 것은 정상적인 결과입니다. 따라서 이는 예외를 일으키지 않고(throw하지 않고), input 의 border 색상을 변경하거나 주의 문구를 표시하는 등 적절한 처리를 수행합니다.
추후 정리
## 3. github pages 배포를 위한 subpath 설정(webpack 설정)
- 함수형 config 작성
- env, argv
- webpack.DefinePlugin 을 통해 상수를 src 내에 전달한다