이번 강의에서는 과제리뷰와 NextJS에 대한 설명이 있었습니다.
(해당 게시글은 실제 강의 내용을 그대로 옮겨적은것은 아니며, 주관적인 이해 및 판단으로 요약되어진 글입니다.)
//예시
const result = {
page
}
if(option1){
result.option1:option1;
}
if(option2){
...
}....
=>
const reulst ={
page,
...(option1&&{option1}),
...(option2&&{option2}),
}
Obj를 다루는것이라면 forEach보다는 map등을 사용하여 불변성을 유지할것
useQuery의 select 콜백을 사용하여 원하는 데이터를 계산해서 사용하는것이 더 좋을 수있음
cosnt {data} = useQuery(['todos','all'],()=>{
return data를 뽑아내는 함수()
})
=>
cosnt {data} = useQuery(['todos','all'],()=>{
select : (data)=> data를 처리할 조건 및 식
})
예를 들어 React의 경우 동적 router, 코드스플리팅 같은것을 사용하려면 직접 구현 및 설정 해야함. 하지만 NextJS의 경우에는 따로 구현 및 설정하지 않더라도 알아서 사용하게됨.
즉, 많은 부분이 대신 구현되어있고, 사용자는 프레임워크가 허용하는 한에서 구현에 대한 걱정을 하지 않을 수 있음.
하지만 동시에 자유성이 떨어지게되는게 단점
그럼에도 NextJS는 많은 기능을 대신 해줌으로서 사용가치가 높음
NextJS가 제공하는 기능중 하나인
next/Image의 경우는 아래와 같은 장점이 있음
Image태그의 src속성으로 받은 주소를 조작하여 NextJS 내부 서버 API쪽으로 경로를 조작하여 이미지의 용량 및 사이즈를 최적화
설정시 width와 height 옵션을 필수로 받아 CLS(Cumulative Layout Shift)를 방지
NextJS의 서버내에서 한번 호출된 이미지는 서버 내 캐시에 저장되기 때문에, 많은 사용자가 사용할 경우 우수한 효과를 나타냄
기타 최적화를 위한 기능들
- Compression 기능 자동지원. 렌더링 결과물 및 정적 파일에 대해 gzip압축처리
NextJS에서 지원하는 Data Fetching의 종류는 아래와 같음.
해당 기능들을 사용하였을때, NextJS는 빌드시 아래와 같이 해당 페이지에서 사용된 기능들을 알려줌.
Data Fetching된 값이 서버측에서 작동하며 Pre rendering 되는 이유는 아래와 같습니다.
const ComponentMod = await Promise.resolve().then(() =>
requirePage(pathname, distDir, serverless, isAppPath)
)
...
const { getServerSideProps, getStaticProps, getStaticPaths } = ComponentMod
try {
data = await getServerSideProps({
req: req as IncomingMessage & {
cookies: NextApiRequestCookies
},
res: resOrProxy,
query,
...
})
단순히 React,Next 뿐만 아니라 모든 개발방면에서 활발하게 개발자 커뮤니티 가 존재함. 이러한곳을 통해 문제를 제시하거나, 새로운 기능의 추가 제안 등, 많은것 들을 활발히 토론하고있음.
Reactjs의 경우 개발자들의 의견을 rfcs repo를 따로 만들어 RFC 문건들을 관리중..
RFC(Request for Comments) 문서는 "의견을 요청하는 문서"라는 의미, 실제 구현에 들어가기전에 어떠한 방식으로 구현할것인지 의견을 공유하는 단계.
NextJS에서도 마찬가지로 매우 활발하게 개발자들의 의견이 공유되며 발전되어 왔음.
프론트엔드 개발은 단순 NextJS 뿐만 아니라, 많은 기술적인면에서 최적화와 문제점, 효율성, 의존성 처리 등 많은 부분에서 각자 집중적인 장점을 가지는 새로운 기술들이 빠른속도로 개발중..
이러한 추세를 통해 점점 프론트엔드는 고도화 되어가고있으며, 프론트엔드는 점점 클라이언트 로직만을 관리하게 되지 않을것임
끝난지 거의 2주만에 정리글을 완성하게 됐습니다..
코스가 끝나고 곧 월드컵이 시작되고, 치맥에 취하고, 긴장이 풀리면서 정리가 많이 늦었던것 같습니다.
이번에는 이전과는 다르게 요약 위주로 작성해보았는데, 이전 글 보다는 뭔가 좀 불친절한거 같으면서도, 오히려 나중에 다시 되돌아보기는 더 편할것 같다는 생각이 들었습니다.
음.. 코스가 시작된지는 약 6주, 실제로는 4주 코스였는데 정말 많은걸 배울 수 있었고 만족도 높은 과정이였습니다.
총 6개의 과제물을 통해 실제 코드 실력을 늘릴 수 있었던것은 물론이고, 기존에는 새로운 스택에 대해서 왠지 모를 불안감과, 기존 코드방식에만 고집했었는데
프리온보딩 코스 과정을 통해 새로운 스택에 대한 경험을 할 수 있었고, 또한 이해하는 방식을 배웠습니다.
SSR을 제외하면 그래도 다 어느정도는 알고 있던 개념이라고 생각하고 있었는데, 코스를 진행하며 3시간 코스, 총 8번밖에 안되는 강의시간동안 정말 내가 모르는게 너무 많았구나 라는걸 체감 할 수 있었습니다.
lint와 prettier를 자동화하는 huksy, 식과 문의 사용방법,git action 및 aws를 사용한 자동화.. react가 작동하는 원리 등.. 사실상 강의에서 다뤘던 거의 대부분의 주제를 새롭게 배운듯한 느낌이였습니다.
이전에는 그저 함수 설명 한번 읽어보고 돌아가니까 그저 사용하고 있었다면, 그래도 이제는 어떻게 돌아가는지 이해는 하려고 노력하는 단계인것 같습니다.
이러한 부분을 발전이라 한다면, 첫번째 멘토님이 말씀해주셨던 시야의 확장 을 달성 할 수 있었다고 말할 수 있을것 같습니다.
쉬운 과정은 아니였지만, 되돌이켜 보면 정말 좋은방식의 공부였고, 힘들지만 그만큼 얻어가는 경험을 하였기 때문에, 기회가 있다면 다른 분들에게도 적극 추천해주고 싶은 코스였습니다.