일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 로드마크
- 유사배열
- localtunnel
- 이벤트 루프
- fetch 취소
- 매클로태스크
- 호출 스택
- 비동기 작업
- 자바스크립트
- Call stack
- 실행 컨택스트
- 호이스팅
- debounce
- 함수형
- 웹팩
- 렉시컬 환경
- 마이크로태스크
- pushstate
- relatedTarget
- JavaScript
- 이터러블
- 번들러
- AbortController
- 로컬터널
- hoisting
- 넘블
- webpack
- Lexical environment
- 화살표 함수
- 클론코딩
- Today
- Total
목록분류 전체보기 (41)
내가 보려고 만든 개발 공부 일지
웹 개발을 할때 내가 작업한 결과를 바로바로 확인하는 곳이 localhost 이다. 포트번호는 주로 8080, 리액트라면 3000 일것이다. 근데 내가 작업중인 화면을 다른 누군가에게 보여줘야할 일이 생길 수 있다. 그치만 아직 개발중이고 배포된 상태도 아니니 외부에서 접속할 URL 도 없다. 근데 이를 가능하게 해주는 기술이 있는데 바로 localtunnel 이다. localtunnel 은 내 로컬 환경을 외부에서 접속해 볼 수 있는 주소를 만들어주는 녀석이다. Node.js 패키지이기 때문에 npm 으로 설치해서 사용할 수 있다. 사용법 ) 1. cmd 창을열고 아래 명령어를 입력. npm install -g localtunnel : localtunnel 을 전역 설치해준다. 2. 설치가 완료되면 아..
webpack 이 뭐고 왜쓰는지에 대해 간단히 적어봅니다. 웹팩은 웹개발을 도와주는 많은 기능들을 가지고 있는 자바스크립트 모듈 번들러이다. 기본적으로 import, export 를 통해 서로 의존관계에 있는 html, js, img, css 같은 모든 리소스들을(= 모듈) 모두 찾아서 연결해주고 하나의 파일로 만들어준다. 웹팩을 쓰지 않고 그냥 import 구문을 쓰게되면 브라우져에서 실행 시 에러가 난다. 브라우저가 import, export 를 못알아먹기 때문인데, 그래서 스크립트 태그에 이런식으로 타입=모듈 을 명시해줘서 '이 스크립트는 모듈이다' 하고 브라우저에게 알려줘야 import export 를 쓸 수 있다. 그치만 웹팩을 사용하면 파일들을 하나의 결과물 파일로 만들어주기 때문에 위처럼 일..
React 에서 페이지 전환할때 사용하는 react-router 는 history.push 를 통해 마치 SSR 처럼 브라우저 주소를 바꿔주고 동시에 Root 엘리먼트의 내용물도 바꿔준다. 이걸 순수 JS 로 구현하고자 한다면 history.pushState 를 사용하면 된다. History.pushState 는 페이지 이동 없이 주소만 바꿔준다. (브라우저의 뒤로가가 버튼이 활성화 된다.) 브라우저 페이지를 이동하게 되면 window.onpopstate 라는 이벤트가 발생하게 되는데, pushState 를 했을때는 popstate 이벤트가 발생하지않고, 뒤 / 앞으로 가기를 클릭 했을때 popstate 이벤트가 발생하게 된다. 즉, pushState 와 popstate 둘을 이용하여 SPA 의 페이지 ..
앱이 커질수록 상태변수도 많아질 것이고, 일일이 갱신해주는 코드도 많아져서 상태관리가 힘들고 소스가 난잡해질 것이다. 이런 상황에서 useReducer 는 상태들을 한곳에 모아놓고 관리할 수 있게 해주는 훅이다. 예제 ) const initialState = { userInfo : ~ , userList : ~ }; function reducer(state, action){ ---> C switch(action.type){ case 'CHANGE_INPUT': return { ...state, userInfo : { ...state.userInfo, [action.name] : action.value } }; default: break; } } function App(){ const [state, dis..