[Web] Hydration(하이드레이션)
·
CS/Web
SSR을 사용하는 당신이라면 꼭 알아야 할 개념 하이드레이션이란?Hydration(하이드레이션) 이란,서버에서 미리 렌더링된 정적인 HTML에 클라이언트에서 자바스크립트 로직을 덧씌워서 동적으로 만드는 과정입니다.즉,SSR로 HTML을 미리 전달클라이언트에서 이벤트 핸들러, 상태 관리, 로직을 연결그렇게 완성된 것이 "인터랙티브한 웹 앱"이 과정을 하이드레이션이라고 부릅니다.왜 하이드레이션이 필요한가?SPA 방식은 브라우저에서 전체 HTML을 자바스크립트로 생성합니다.하지만 이는 초기 로딩 시간이 길어지고 SEO가 불리하다는 단점이 있죠.그래서 등장한 것이 SSR(Server-Side Rendering):서버에서 HTML을 렌더링 → 빠른 첫 렌더링(FCP)하지만 이 HTML은 정적일 뿐, 버튼 클릭 같..
[React] Code Splitting (코드 스플리팅)
·
JavaScript/React
애플리케이션이 커질수록 성능 저하의 가장 큰 원인은?바로 무분별하게 커진 번들 파일입니다.300kb 이상 JS를 한번에 로딩하고 있다면,지금이 바로 코드 스플리팅을 도입할 시점입니다. 코드 스플리팅이란?Code Splitting은 애플리케이션의 JavaScript 코드를 여러 개의 청크(파일)로 분리해서 로딩하는 기술입니다.모든 코드를 하나의 파일에 모아서 한 번에 불러오는 대신,필요한 코드만 분리해서 나중에 비동기적으로 불러올 수 있게 합니다. 꼭 필요한 코드만 먼저 불러오고, 나머지는 나중에!왜 코드 스플리팅이 필요한가?SPA에서 모든 컴포넌트를 하나의 main.js에 포함하면초기 로딩 시간이 너무 길어짐사용하지도 않는 코드가 로딩되어 낭비 발생사용자 이탈률 증가코드 스플리팅은 번들 크기를 줄여 초기..
[React] Lazy Loading (지연 로딩)
·
JavaScript/React
“앱이 느려졌어요…”이 말을 들어본 적이 있다면, 지금이 바로 Lazy Loading을 도입할 타이밍일지도 모릅니다.Lazy Loading은 사용자에게 꼭 필요한 것만 먼저 보여주고, 나머지는 필요할 때 불러오는 똑똑한 전략입니다.이번 글에서는 그 개념부터, 왜 쓰는지, 어떻게 쓰는지, 주의할 점까지 실무 감각으로 풀어드립니다. Lazy Loading이란?Lazy Loading(지연 로딩)은 애플리케이션이 필요한 리소스를 즉시 불러오지 않고, 사용자가 필요할 때 비로소 로딩하는 전략입니다.브라우저는 초기 페이지 로드 시 필요한 최소한의 파일만 불러오고,사용자가 스크롤하거나 특정 페이지에 접근할 때 나머지 리소스를 비동기로 로딩합니다.중요한 건 ‘사용자 경험’과 ‘성능’입니다.느린 첫 로딩, 무거운 번들 ..
[Web] CSR vs SSR vs SSG
·
CS/Web
세 가지 렌더링 방식의 정의용어설명CSR (Client Side Rendering)HTML, JS, CSS를 받아 브라우저에서 실행하고 화면을 렌더링하는 방식SSR (Server Side Rendering)서버가 HTML을 만들어 클라이언트에 보내고, 클라이언트는 그걸 바로 보여주는 방식SSG (Static Site Generation)빌드 시 HTML을 미리 생성해 서버에 저장하고, 요청 시 정적 파일을 전달하는 방식 동작 원리 비교CSR (Client Side Rendering)초기 요청 시 index.html만 서버에서 받아옴이후 JavaScript가 실행되며 전체 화면 구성데이터는 클라이언트에서 비동기 호출로 가져옴브라우저 요청 → index.html + JS → 브라우저가 JS 실행 → 화면 렌..
[Web] SPA (Single Page Application)
·
CS/Web
현대 웹 개발에서 가장 흔히 사용되는 웹 애플리케이션 아키텍처 중 하나가 바로 SPA(Single Page Application)입니다.React, Vue, Angular 같은 프레임워크를 사용한다면 이미 SPA를 사용하고 있을 가능성이 높습니다. SPA란 무엇인가?SPA는 하나의 HTML 페이지에서 모든 콘텐츠를 렌더링하는 웹 애플리케이션입니다.초기 페이지 로딩 이후, 서버로부터 전체 페이지를 새로 받아오지 않고, JavaScript를 통해 필요한 데이터만 비동기로 가져와서 화면을 갱신합니다.즉, 페이지 간 이동이 있더라도 실제로는 브라우저는 새로고침하지 않으며,내부적으로 DOM만 바뀌고 URL만 변경됩니다 (히스토리 API 활용).SPA의 동작 원리SPA는 브라우저에서 실행되는 JavaScript 어..
[React] Props 지옥에서 벗어나는 법
·
JavaScript/React
React를 사용하다 보면, 아래와 같은 코드를 본 적 있을 겁니다 이렇게 깊게 중첩된 컴포넌트 구조에서 props를 계속 전달해야 하는 상황을 흔히 “props drilling”이라고 부릅니다. 이 문제는 컴포넌트 재사용성 저하, 유지보수성 하락, 복잡성 증가로 이어지며, 개발자의 정신 건강에 매우 안 좋습니다. props 지옥이란?props 지옥 = 여러 컴포넌트 레이어를 거쳐 데이터를 직접 전달해야 하는 상황을 비유적으로 표현한 용어 예시 상황function App() { const user = { name: "Alice" }; return ;}function Parent({ user }) { return ;}function Child({ user }) { re..
[네트워크] 소켓(Socket)
·
CS/네트워크
소켓(Socket)은 오늘날 인터넷을 통한 데이터 송수신을 가능하게 해주는 핵심 기술입니다.웹사이트, 채팅 앱, 온라인 게임, 메신저, 실시간 스트리밍... 이 모든 것들이 소켓 통신 위에 구축되어 있습니다.그런데 막상 소켓을 공부하려고 하면"그냥 통신하는 거 아냐?""HTTP랑 뭐가 달라?""소켓 서버랑 클라이언트는 어떻게 만들지?"혼란스럽기 쉽습니다.이 글에서는 소켓의 근본 개념부터 코드를 통한 실전 이해, 최신 소켓 활용 트렌드까지 아주 꼼꼼히 정리해드립니다. 소켓이란 무엇인가?소켓(Socket)은 네트워크 상의 양 끝점(End Point)을프로그래밍적으로 다루는 인터페이스입니다.더 쉽게 말하면"서로 다른 컴퓨터끼리 데이터를 주고받기 위해 열어놓은 통로."소켓은 운영체제(OS)가 제공하는 기능입니다..
[Electron] Preload 스크립트
·
JavaScript/Electron
Electron을 사용하면서 preload.js를 제대로 이해하고 써야만보안 강화, 안정성 향상, 성능 최적화를 모두 챙길 수 있습니다.하지만 많은 초심자들이 preload를"그냥 있나보다""대충 쓰면 되지"정도로 넘깁니다.그러면 앱이 위험해지고, 유지보수가 어려워지고, 퍼포먼스가 떨어집니다.오늘 이 글에서preload의 역할, 작성법, 보안 설정, 고급 패턴까지처음부터 끝까지 꼼꼼하게 정리해봅시다. Preload란 무엇인가?Preload 스크립트는 렌더러 프로세스가 시작되기 전에 실행되는Node.js 환경의 JavaScript 코드입니다.쉽게 말하면?메인 프로세스가 브라우저 창을 열 때웹 페이지(렌더러)가 로드되기 전에미리 필요한 기능을 준비하는 중간 다리 역할입니다.Electron 공식 정의Prelo..
[Electron] IPC 통신
·
JavaScript/Electron
Electron(일렉트론) 앱을 만들 때, 메인 프로세스와 렌더러 프로세스 간의 통신은 핵심입니다.이 통신을 담당하는 것이 바로 IPC (Inter-Process Communication) 입니다.하지만 ipcRenderer, ipcMain, invoke, send, on, handle, reply 등등메서드가 많고 헷갈려서 겉핥기식으로 넘어가면 반드시 후회하게 됩니다.이 글에서는 개념 → 흐름 → 메서드별 심화까지입문자도 고급 개발자도 이해할 수 있도록 완전히 정리합니다.Electron에서 IPC란?IPC (Inter-Process Communication)는 서로 다른 프로세스 간에 데이터를 주고받는 방법입니다.Electron은 메인 프로세스와 렌더러 프로세스로 나뉘는데,서로 다른 역할을 하기에 자연..
[Flutter] Provider를 이용한 상태관리
·
Dart/Flutter
Flutter에서의 UI는 철저하게 상태(State)에 기반하여 동작합니다.사용자가 버튼을 누르거나, 데이터를 입력하거나, 서버에서 값을 받아오면 UI는 달라져야 하죠.그렇다면 “이 상태를 어떻게 관리할 것인가?”는 앱의 복잡도가 올라갈수록 더 중요해지고, 제대로 설계하지 않으면 유지보수는 지옥이 됩니다.그래서 오늘은 Flutter의 상태 관리 개념을 근본부터 설명하고,그 중에서도 공식적으로 권장되고 가장 많이 사용되는 Provider를 중심으로 구조화, 원리, 예제, 설계 방식까지 모두 정리해봅니다.상태 관리란 무엇인가?상태(state)란 UI의 현재 상태를 표현하는 값입니다. 예를 들어,로그인 여부 (true/false)사용자 이름현재 탭 index서버에서 받아온 리스트 데이터버튼 클릭 여부 등이 상..