자바스크립트 공부
[이벤트]
mouseover, mouseout
mouseenter, mouseleave
전자는 캡처링, 버블링 자동
후자는 jquery 이벤트, 버블링 캡처링 안함.
keydown
keyup
사이
keypress 라는 애가 있음
뭐가 눌렸는지 볼 때 사용
이벤트, jquery에서 remove, removeAttribute 해서 이벤트를 지울 수도 있음
MVC 패턴을 지키려면
HTML 에 이벤트 할당하기 보다는
ELEM.onclick = function(){
};
이런 식으로 쓰는게 좋음.
왜냐면 click 이벤트를 바꾸게 되면 html 이랑 다 바꿔야 하니까.
- addEventListener 이런 애들 안쓰는 이유는 jQuery에선 얼마든지 onclick 이벤트 몇개씩 추가 가능하기 때문
- stopPropagation : 버블링 막아줌
- stopImmediatePropagation : 다른 이벤트의 버블링도 막아주고 딱 걔만 실행하고 싶을 때
- data-action
이런식으로 쓰는 경우가 있는데
이는 id로 할당하는 경우엔 한계가 있으므로 다른 data라는 애를 사용하여 행동들을 관리한다는 것이다.
- data-counter == dataset.counter
이렇게 쓰기도 한다
- 커스텀 이벤트 거의 쓸일 없음 ㅋ
- key 이벤트를 통해서 단툭키 실행도 가능하게 한다.
- 애니메이션에 필요한 부분이 있다 하면 그냥 jquery 쓰자.
드래그 앤 드랍도 jquery
- 노드도 객체 기반이다 당연하지 js였으니.
- 포커스에 맞게 동작하지 않는 경우
포커스가 발생전에 따른 동작 발생할 수도 있음
- submit
onsubmit에 대해서 이벤트 발생시킬 수 있는데…
요즘은 form 태그 자체를 잘 안 씀
[문서와 리소스 로딩]
문서의 생명주기
문서가 동작하기까지 단계들이 있는데
무언가 동작의 시점을 설정할 수 있다.
<script> 태그 안에 구현
[기타]
옵저버 패턴이란 게 있음
selection 과 range
에디터 쓸 때.
마우스가 현재 선택된 영역에 뭘 삽입, 수정, 씌우고 입히고 뭐 그런거
타이머 걸 때 javascript의 타이머는 정확하진 않다.
DB 와 동기화 시키는데 언제 동기화 시킬거냐.
- popup window.open
윈도우 오픈 시키고 그 객체를 저장해두면
그 객체의 함수와 프로퍼티 혹은 그 윈도우의 콘텐츠도 수정할 수 있다.
- document.domain
도메인간에 통신이 가능한데, 다 있어야 함. 하나라도 없으면 먹통이 됨.
프레임이로 만든 경우 주소창은 안바뀌고, 안에 콘텐츠가 바뀔 수 있다.
- 서버사이드에 파일 저장하고 불러올 수 있는데
그 때 쓰는게 blob
- http 에러.
지금 applyjinhak.com 잘못 들어가면 새로운 페이지로 redirect 가 됨.
- 실시간 통신이 필요한 애들
채팅
코인거래
ajax로 하면 당연히 랙걸리지
그럼 어떻게 하냐
long polling
한번 request 하고 안 끊음
그런데 중간중간 계속 response만 받음
- 소켓방식
브라우저에서 지원해주는 웹소켓이 생김
ws
80 포트 사용
wss > HTTPS
웹소켓이라는 프로토콜이 있음
open
message
error
close
이거는 request는 하나임
안끊기고 그냥 쭉 가는 거임
- 쿠키
브라우저에 데이터 저장
서버, 클라이언트가 주고받을 수 있는 유일한 매개체
우리 회사는 모든 쿠키를 암호화해서 씀.
document.cookie 에 접근 가능
pims 결제, 환불 쪽에서 쓰고 있다. (4kb를 넘을 수 없다.) - 정규 표현식이라는 애들이 있는데 사이트에서 확인해서 해석할 것.
- localStorage
db가 필요 없고
그 도메인 안에서 저장하는 것이다.
- sessionStorage
얘는 그 페이지에서만 저장
- IndexedDB & WebSQL
요즘은 IndexedDB 쓰고 있다.
원서쪽에서 AU 애들을 한꺼번에 보여주는 부분에서 사용했음
- 베지어 곡선의 실생활 : 스크롤 속도
[VUE]
DEVTOOLS 쓰지 말기
- CDN으로 가져올 수 있음
- INPUT의 V- 시작하는 속성으로 그 값을 그대로 가져오게 된다.
- 컴포넌트 : 커스텀 태그
VUE 템플릿 <=> HTML 태그
상호 바인딩 가능
뷰-부트스트랩이 있음 (bootstrap-vue)
여기서이라는 태그를 쓰는데 이런거를 컴포넌트로 만들어주는 것임
vue-bootstrap.js 까지 써야 동작하는 것임
4.v 을 써야함.
- 한페이지 내에서 여러개의 뷰 객체를 써도 된다.
- 뷰에서는
{{}}
안에 데이터를 입력하면 바인딩이 되는데
v-show 를 속성으로 써서 처음부터 안그려지게 할 수 있다.
- 생명 주기라는게 있고 그 시점에 제어 가능
mounted 시점에 대부분 데이터 초기화 시켜준다.
- v-once는 한번만 바인딩
- 뷰에서는 외부 오브젝트를 못쓰는 경우 많다.
그럴 때는 해당 오브젝트 기능을 제공하는 뷰 미들웨어가 있는지 찾아볼것
- v-if 를 통해 if문 가능
- v-on: 통해 이벤트 발생 약어 @ 씀
- v-bind 통해 데이터 바인딩 가능 약어 : 씀
- computed 속성
변수를 받자마자 그 변수를 조작해서 곧바로 출력해주게끔 만들어줄 수 있다,
- watch 속성
만약 기존에 있는 속성이 있다고 한다면 그 속성의 변화가 있을 때 다른 액션을 취할 수 있다
두개가 비슷한듯 다르다.
- v-bind:class = “{active : isActive}”
isActive가 true면 class에 active 추가 falsy면 추가 안햄
- v-for 를 통해 반복할 수 있는데
object key,value 순회하면서 찍어줄 수 있다.
- v-for, v-if 같이 쓰지 말고 밖에 뺄 것