Next.js 프로젝트에서 별도로 구동 중인 백엔드 API 서버의 데이터를 클라이언트 컴포넌트에서 가져오는 방법에 대해 알아봅니다. 이 방식은 일반적인 React 애플리케이션의 데이터 페칭 방식과 동일합니다. 1. 서버 구성 및 준비데이터를 가져오기 전에, 백엔드 서버와 Next.js 서버가 각각 별도의 터미널에서 실행 중이어야 합니다.서버실행 명령어기본 주소백엔드 API(backend 폴더에서) npm starthttp://localhost:8080Next.js(frontend 폴더에서) npm run devhttp://localhost:3000* Next.js 앱의 컴포넌트에서 백엔드 주소 http://localhost:8080/news로 요청을 보낼 것입니다. 2. 클라이언트 컴포넌트에서 데이..
전체 글
Next.js와 Node.js 기반의 풀스택 개발 기술을 깊이 있게 다룹니다. 실무에 바로 적용 가능한 Docker 환경 구축, 클린 코드 작성법, JavaScript 최신 트렌드까지, 현직 개발자의 실전 경험과 심화 분석을 만나보세요. 코드로 증명하는 개발 지식.웹 페이지를 만들다 보면 분명히 CSS 코드를 작성했는데, "왜 내가 원하는 대로 적용이 안 될까?" 하고 답답했던 경험이 있을 겁니다. 여러 스타일이 엉키면서 우선순위 싸움이 벌어지기 때문이죠! 이때 등장하는 궁극의 필살기가 바로 !important 입니다.하지만 이 !important는 강력한 만큼 신중하게 사용해야 하는 옵션입니다. 지금부터 그림과 쉬운 예시로 !important가 무엇인지, 왜 필요한지, 그리고 언제 조심해야 하는지 자세히 알아볼까요? CSS, 왜 원하는 대로 안 될까? (CSS 우선순위)CSS는 여러 규칙이 동시에 적용될 때, 어떤 스타일을 최종적으로 보여줄지 결정하는 우선순위(Specificity) 규칙이 있습니다. 마치 학교에서 반장, 부반장, 조장 등 역할마다 권한이 다른 ..
MUI를 사용하는 유저의 경우, 반응형 웹을 구현하는 방식에는 미디어 쿼리(Media Query)를 JavaScript에서 활용하는 방법과 CSS만을 사용하는 방법이 있습니다. 특히 React 환경에서 useMediaQuery와 같은 훅을 사용하는 방식과 CSS-only 방식을 비교하여 그 차이점을 분석합니다. 1. 렌더링 시점과 사용자 경험분류미디어 쿼리 (예: useMediaQuery)CSS-only 방식 (예: MUI sx prop)코드 예시const isMobile = useMediaQuery(theme.breakpoints.down('sm')); return isMobile ? : ;모바일 데스크탑서버/클라이언트 렌더링서버: 기본값(주로 데스크탑) 렌더링 클라이언트: 실제 화면 크기 감지 후 ..
자바스크립트 애플리케이션에서 데이터 정렬은 필수적인 기능입니다. 이번에는 배열을 정렬하는 sort() 메서드의 기본 사용법부터, 까다로운 숫자 정렬을 완벽하게 처리하는 방법까지 핵심만 살펴보겠습니다.1. sort()의 기본 작동 방식 (문자열)sort() 메서드는 기본적으로 배열의 요소를 문자열(string)로 변환한 후, 유니코드 값 순서대로 정렬합니다. 문자열 배열에 대해서는 기대한 대로 알파벳 순서(오름차순)로 잘 작동합니다.특징: sort() 메서드는 **원본 배열 자체를 변경(mutate)**합니다. 사본을 만들지 않고 바로 원본을 수정한다는 점에 유의해야 합니다.JavaScriptconst owners = ['Jonas', 'Zach', 'Adam', 'Martha'];owners.sort()..
JavaScript에서 데이터를 다루다 보면 배열 안에 또 다른 배열이 들어 있는 **'중첩 배열(Nested Array)'**과 마주치게 됩니다. 이 복잡한 구조를 깔끔하게 하나의 배열로 펼쳐주는 마법 같은 메서드가 바로 **flat()**과 **flatMap()**입니다. ES2019에 도입된 이 두 친구의 핵심 기능을 쉽고 빠르게 파헤쳐 봅시다!1. 중첩 배열을 펼치는 flat() 메서드**flat()**은 이름 그대로 중첩된 배열을 평평하게(Flatten) 만들어주는 역할을 합니다. 복잡하게 얽힌 배열 구조를 단숨에 정리해 주죠.기본 사용법 (1단계 깊이): 인자 없이 사용하면 기본적으로 1단계 깊이의 중첩만 해제합니다. 대부분의 경우 1단계만으로 충분합니다.JavaScript// 예시: 1단계 ..