인터페이스 및 디자인
소개
프런트엔드 개발, 즉 브라우저에서 시각적으로 처리되는 부분은 ui 폴더 안에서 이루어집니다.
기본적으로 이 폴더에는 ReactJS와 Ant.Design 및 Less로 개발된 개발 환경이 있으며, Vite를 사용하여 컴파일됩니다.
기본 환경이 이러한 기술들로 구성되어 있지만, 오늘날 널리 사용되기 때문일 뿐 이러한 기술로 제한되지는 않습니다.
VueJS, MaterialUI, Sass, Bootstrap, TypeScript 등 다른 기술을 사용하려면 📂 ui 폴더 안의 📂 package.json 및 📂 vite.config.js 설정을 원하는 기술에 맞게 변경하면 됩니다.
통합 및 중앙 집중식 터미널에 대해 더 알아보세요.
사전 요구 사항
시작하기 전에 Bun이 설치되어 있는지 확인하는 것이 중요합니다.
Bun 설치 방법을 확인하세요.
사용 인터페이스가 어떻게 동작하는지 더 잘 이해하려면 다음을 권장합니다:
서비스 확장
📂 server/services/근로자.js에 근로자 서비스를 Visual Studio Code를 통해 생성한 후, 이 서비스는 다음 주소에서 JSON 정보를 제공합니다:
다음 단계는 이 서비스를 확장하여 브라우저 인터페이스에 데이터를 표시하는 것입니다.
이 데이터를 표로 그리고 그래프로 표시해 보겠습니다.
데모 애플리케이션이 열려 있는 Visual Studio Code 또는 다른 텍스트 편집기가 있다고 가정합니다.
편집기에서 다음 파일을 여세요:
📂 ui/src/containers/DashboardContainer/index.jsx
기존 코드를 변경해 보겠습니다.
state 준비하기
DashboardContainer 컴포넌트의 function 시작 부분에 해당 state 정의가 있습니다.
다음과 같이 근로자 데이터를 저장할 새 항목을 추가하세요:
// 👇 아래에 새 코드 줄을 추가하세요:
const [근로자, set근로자] = useState([]);
const [불러오는중, set불러오는중] = useState(false);
즉, 새 상태 줄 const [근로자, set근로자] = useState([]);를 추가합니다.
근로자불러오기 함수 만들기
아래쪽에 근로자불러오기라는 함수가 있는 것을 확인할 수 있습니다. 이 함수는 현재 대시보드에 표시되는 근로자 데이터를 가져옵니다.
이 함수는 근로자 데이터를 불러오는 데 사용됩니다.
아래 코드를 삽입하세요:
/**
*** 🚀 근로자 데이터를 불러옵니다.
*** 다음 서비스 실행을 통해:
** http://localhost:9000/services/근로자
*/
const 근로자불러오기 = () => {
set근로자([]);
set불러오는중(true);
_service({
url: intl.locale.indexOf('ko') == 0 ? '/services/근로자' : '/services/workers',
success: (response) => {
set근로자(response.json);
set불러오는중(false);
},
fail: (e) => {
set불러오는중(false);
console.error('근로자 서비스에 실패했습니다.', e);
message.error(intl.formatMessage({ id: `${messages}.loading_error` }));
}
});
};
위 코드는 근로자 데이터를 ReactJS 컴포넌트의 _state_로 전달합니다. 이는 근로자 서비스를 실행하여 JSON으로 데이터를 받은 뒤 set근로자 실행을 통해 해당 데이터를 _state_에 저장하는 방식입니다.
최종 코드는 다음과 같은 구조가 되어야 합니다:
useEffect(() => {
...
}, []);
const 근로자불러오기 = () => {
...
}
return (
...
);
여기서
...는 각 블록 안에서 생략된 여러 코드 줄입니다.
useEffect 훅 실행하기
이제 컴포넌트가 "마운트"될 때 useEffect 훅을 실행해야 합니다. 이 훅은 컴포넌트가 브라우저의 시각적 화면에 구성될 때 실행됩니다.
이를 위해 조금 위쪽에서 useEffect 훅 안에 근로자불러오기(); 코드 줄을 다음과 같이 추가하면 됩니다:
useEffect(() => {
근로자불러오기();
}, []);
이 새 코드 줄은 앞서 생성한 http://localhost:9000/services/근로자 서비스를 실행하는 함수를 호출하여 JSON으로 데이터를 가져오고, 이를 컴포넌트의 state(상태)에 저장하여 return(화면)에서 표시되도록 합니다.
컴파일
파일을 저장하면, Netuno가 실행 중인 터미널에 ui의 새 컴파일 결과가 나타납니다. 이때 ReactJS + Vite 컴파일 결과의 새 줄들이 표시됩니다.
터미널에서 예상되는 출력은 다음과 유사해야 합니다:
> ui@1.0.0 watch netuno/apps/데모/ui
> bunx --bun vite build --watch
vite v7.1.2 building for production...
watching for file changes...
(!) outDir netuno/apps/데모/public is not inside project root and will not be emptied.
Use --emptyOutDir to override.
build started...
transforming...
✓ 4008 modules transformed.
rendering chunks...
computing gzip size...
../public/scripts/ui.js 1,433.96 kB │ gzip: 421.89 kB
built in 2128ms.
컴파일 중 오류가 있으면 터미널에 문제에 대한 안내가 표시됩니다.
지금까지 근로자 서비스를 사용해 얻은 데이터를 DashboardContainer 컴포넌트의 state에 저장하여 return에서 사용할 수 있도록 했습니다.
데이터 표시
이제 사용자가 브라우저에서 보는 인터페이스에 데이터를 시각적으로 표시해야 합니다.
브라우저에 데이터를 표시하려면 ReactJS에서 컴포넌트의 시각적 측면을 처리하는 return을 변경해야 합니다.
DashboardContainer 코드 끝에서 return ( ... );를 찾을 수 있습니다.
근로자 관련 데이터를 표시할 DataVisualization 컴포넌트를 하나 더 포함하도록 코드 한 줄만 추가하여 변경해 보겠습니다. 코드는 다음과 같아야 합니다:
// 🔍 기존 코드에서 다음을 찾으세요:
return (
<div ref={ref}>
{ 불러오는중 == false ?
<DataVisualization data={근로자} />
: <Spin/>
}
<ListServices />
</div>
);
아래 줄만 추가해야 한다는 점에 유의하세요:
<DataVisualization data={근로자} />
이렇게 하면 DataVisualization은 근로자 서비스를 통해 JSON으로 가져와 state에 저장된 데이터를 받게 됩니다.
최종 컴파일
지금까지 수행한 모든 변경 사항이 반영된 파일을 저장하세요.
터미널 출력에 오류가 없는지 확인하세요.
이제 브라우저에서 페이지를 새로 고치면 최종 결과를 볼 수 있습니다. 또는 아래 링크를 클릭하세요:
대시보드가 비어 있으면 코드에 오류가 있다는 뜻입니다.
개발자 도구의 브라우저 콘솔에서 오류가 있는지 확인하세요.
더 알아보기 👇
ReactJS 빠른 소개: