전체 글 (23) 썸네일형 리스트형 [모던 자바스크립트 Deep Dive] 13장 스코프 한 주에 최소 한 장! 밀리지 말자… 13장 레츠 고 스코프란? : 식별자(변수 이름, 함수 이름, 클래스 이름 등)이 유효한 범위. 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위. : 변수는 자신이 선언된 위치에 의해 스코프가 결정된다. 스코프의 종류 전역 : 코드의 가장 바깥 영역을 전역이라고 하고, 전역에서 변수를 선언하면 전역 스코프를 갖는 전역 변수가 된다. 코드 어디서든지 참조할 수 있다. 지역 : 함수 몸체 내부를 말한다. 지역에서 선언된 지역 변수는 자신의 지역 스코프와 하위 스코프에서 유효하다. inner 함수 안에 변수 x를 선언하고 전역에도 이름이 같은 변수 x가 존재할 때 inner함수 안에서 x를 참조하면 inner에서 선언된 지역변수 x를 참조하게 된다. 자바스크립트 엔진.. [React Native] react-native-keychain 사용하기 React Native로 작업하고 있는 프로젝트에서 토큰 저장방식을 바꿔보려고 한다. 사실 앱 제작은 처음이라 웹에서 구현했던 것 처럼 토큰을 관리할 때 local storage를 사용하면 되는 줄 알았다. 그래서 local storage와 같은 역할을 할 수 있는 async-storage 라이브러리를 사용해 userName, token등 필요한 데이터들을 저장해서 관리하고 있었다. 그러다가 웹과 마찬가지로 interceptor를 만들어 토큰 갱신로직을 추가하려고 앱의 토큰 관리 방법을 찾아보다보니 토큰은 async-storage에 저장하는 것을 지양하고 좀 더 안전한 저장소를 써야 한다는 글들을 많이 보게 되었다. 우선 React Native의 공식문서를 읽어보자 https://reactnative.d.. [Next.js] Next.js 14에서 페이지 이동 감지하기 소켓 채팅방 구현을 여전히 진행중인데 반영해야 하는 요구사항이 추가되었다!! 서버에서 접속 유저들의 상태를 메모리의 객체로 관리하면서 접속한 유저가 방을 나갔을 때, 특히 접속 인원이 모두 방을 떠나거나/게임이 종료되어 메모리 삭제를 해야할 때 확실하게 메시지를 보내주어야 하는 것이다. 따라서, 1. 유저가 대기방 페이지를 벗어나면 '/leave'로 메시지를 보내 전체 접속 유저가 현재 방에서 떠난다는 신호를 보내주고, 2. 마지막 유저 마저 대기방 페이지를 떠나는 것은 방이 삭제되는 것으로 처리해 '/end'로 메시지를 보낸다. const disconnect = () => { console.log('Disconnecting from WebSocket'); if (userStatuses.length ==.. [React / Next.js + Zustand] StompJS로 채팅 구현하기 (2) - 실시간 채팅 방 상태 관리하기 지난 포스팅에서 채팅방을 구현하기 위한 stomp 웹소켓 연결 과정을 다뤘었다. 이번에는 백엔드에서 개발한 웹 소켓 서버에 맞춰 유저 입장, 채팅, 게임 시작 준비 상태 받기를 구현해 볼 것이다. 1. 소켓에 연결이 되면 `/sub/rooms/${roomId}` 엔드포인트를 subscribe하고, `/pub/rooms/${roomId}/join`로 publish를 한 번 보내서 접속이 되었다는 신호를 보내준다. 서버는 이런 식으로 해당 채팅 방에 새로운 유저가 들어올 때마다 접속한 유저 리스트를 메시지로 보내줄 것이다. 2. 업데이트 된 유저 리스트를 받을 때 마다 화면도 업데이트 시켜준다. 3. 채팅으로 메시지를 받으면 해당 메시지를 보낸 유저프로필 위로 말풍선을 띄운다. 완성되어야하는 페이지의 모습... [모던 자바스크립트 Deep Dive] 11장 원시 값과 객체의 비교 12장을 먼저 읽긴 했지만 보다 보니 내가 자바스크립트의 원시 값, 객체 타입에 대해서도 잘 모르는 것 같아 다시 11장으로 돌아오게 됐다. ㅎㅎ 자바스크립트가 제공하는 데이터 7가지(number, string, boolean, null, undefined, symbol, object) 타입은 크게 원시타입, 객체타입으로 구분한다. 원시 타입과 객체 타입의 차이 원시 타입의 값은 변경 불가능한 값이고, 객체 타입의 값은 변경 가능한 값이다. 원시 값을 변수에 할당하면 변수에는 실제 값이 저장되고, 객체를 변수에 할당하면 변수에는 참조 값이 저장된다. 값에 의한 전달 - 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달 / 참조에 의한 전달 - 객체를 가리키는 변수를 다른 변수에.. [React / Next.js] StompJS로 채팅 구현하기 (1) - 웹 소켓 연결 실시간 채팅을 구현하기위해 웹 소켓을 이용해 볼 것이다! 웹소켓이란? 웹 브라우저와 서버 간의 양방향 통신을 가능하게 하는 프로토콜이다. HTTP 프로토콜과 달리 웹소켓은 단일 TCP연결을 통해 지속적인 양방향 통신을 할 수 있다. HTTP 프로토콜과 더 비교을 해보자면... HTTP프로토콜은 기본적으로 클라이언트 - 서버 모델을 따르며, 요청 - 응답 방식으로 동작한다. 클라이언트가 서버에 요청을 보내면 서버가 그에 대한 응답을 반환하는 식이고, 클라이언트가 서버의 데이터 변경 사항을 실시간으로 확인하려면 주기적으로 요청을 보내야 한다. 반면에, 웹소켓은 클라이언트와 서버 간에 단일 TCP 연결을 유지하면서 양방향(전이중 full-duplex)으로 데이터를 실시간으로 주고 받을 수 있다. 이 연결은 열.. [모던 자바스크립트 Deep Dive] 12장 함수 한 학기 목표를 “매주 를 읽고 공부해서 기록하기” 로 정해 보았다. 앞서 9장까지 천천히 읽긴 했지만, 사실 궁금한 부분을 먼저 찾아서 읽는 게 더 공부가 잘되니까! 목차를 쭉 읽어보며 11장 객체를 볼까 하다가 “12.7 다양한 함수의 형태”에 끌려 12장을 보기로 결정했다. 먼저 함수의… 개념 : 재료를 투입받아 제품을 생산하는 기계와 같은 것 : 일련의 과정을 statement로 구현하고 코드블록으로 감싸서 하나의 실행 단위로 정의한 것 : 함수 호출 시 받는 입력을 인수, 함수에서 입력을 전달받는 변수를 매개변수, 출력은 반환 값 솔직히 이렇게만 보면 이미 아는 개념인데.. 뒤에 내용이 뭐가 이렇게 많은거지? 계속 읽어보자… 왜 함수를 사용하는가? : 코드의 재사용성 - 몇 번이든 호출 가능하다.. Next.js에서 Axios Interceptor 작성하기 (feat. Zustand, localStorage) Axios Interceptor 란? HTTP 요청이나 응답을 가로채고 수정할 수 있는 중간 단계를 의미합니다. 이를 통해 전역적으로 요청과 응답을 처리하거나 특정 요청이나 응답에 대해 특별한 로직을 적용할 수 있습니다. Interceptor를 사용하면 다양한 용도로 활용할 수 있으며, 예를 들어 토큰을 자동으로 추가하거나 에러를 처리하는 등의 작업을 수행할 수 있습니다. 이를 통해 코드의 중복을 줄이고 유지보수성을 향상시킬 수 있습니다. Axios 공식 문서도 참고해보자 ↓ https://www.npmjs.com/package/axios/v/1.4.0#interceptors axios Promise based HTTP client for the browser and node.js. Latest vers.. 이전 1 2 3 다음 목록 더보기