export
로 함수와 변수를 파일 밖으로 내보낼 수 있다.
=> import
로 받아온다.
물론, 이것을 사용하기 위해서는 <script>
에 type="module"
을 넣어줘야 한다.
export
와 default export
는 같은 모듈에서 사용해도 에러는 발생하지 않는다. 그러나, 실무에서는 사용하지 않는다.
강사님은 DOM API를 전부 Wrapping하셨다.
DomcontentLoaded
vs load
이벤트
=> DomcontentLoaded
는 로딩 성능 향상에 유리하다. 그러나, load
는 이미지 파일 같은 외부 자원들에 대한 정보가 필요할 때, 적절한 이벤트!!
npx lite-server --baseDir 1-vanilla/
=> lite-server
라는 모듈을 실행시켜라. 1-vanilla
폴더를 기준으로!! 만약, 해당 옵션이 없으면, 현재 폴더를 기준으로 lite-server
가 돌아간다.
throw
=> 에러 처리 or 예외 처리시 사용함.
=> throw
는 콘솔 로그와 다르게, 이후의 코드는 실행되지 않는다. 즉, 현재 함수는 실행이 중지된다.
React같은 프레임워크가 없으면, 바닐라JS로 모든 Views를 구현해야 한다.
export
와 import
를 사용해서, 코드의 재사용성을 극대화시킬 수 있다는 것을 배웠다.
- form 태그 찾는 법
document.forms;
로form
태그들을 조회할 수 있다.
ex)
document.forms[1];
document.forms['add-item'];
=> add-item은 ID 이다
form
태그는 2가지 일을 발생 시킨다.
submit
이벤트를 발사한다.
=> 그래서form
태그 안의 버튼은'click'
이 아니라,'submit'
으로 잡아야 한다.- 모든 페이지가 새로고침이 일어난다.
=> 브라우저에는 form태그의 submit 이벤트를 처리할 때,
기본 동작이 서버로 페이지 요청을 다시하는 거다.
그래서, 다시 응답된 페이지를 브라우져가 다시 렌더링하고 있어서
화면이 리프레시 되는 것이다.
MVC 패턴 중 View
를 담당하는 기능들을 app.js
라는 하나의 파일에 모든 코드를 넣어놓는 것보다, Views
라는 폴더 안에 기능 별로 js파일
을 넣어놓은 게 훨씬 가독성 면에서 좋다. => 나중에 다른 개발자가 나의 코드를 보더라도, 파일 이름만 봐도 이 파일이 무슨 기능을 담당하는지 알 수 있기 때문이다. => 즉, 유지보수 측면에서도 좋다.
검색 결과를 찾는 코드가 필자가 구현한 코드보다 더 좋은 것같아서 첨부한다.
// storage 객체 안의 productData 배열의 filter()로 해서 찾는다.
// 그리고 includes()를 사용해서, 해당 결과가 있는지 없는지 T/F로 return 해준다.
search(keyword) {
this.searchKeyword = keyword;
this.searchResult = this.storage.productData.filter((product)
=> product.name.includes(keyword)
)
}
Views
라는 폴더에서 기능별로 js파일들을 나눠놨다.