Seia.js - 경량 Next.js 프레임워크를 만들었습니다.
https://github.com/abiriadev/seia
근 20일 가까이를 이 프로젝트에 할애한 것 같습니다...
무엇을 만들었나?
Seia.js는 Vite 툴체인을 사용해 리액트 서버 컴포넌트(이하 RSC)를 지원하는 초경량 SSR 프레임워크입니다.
직관적으로 비유하면, Vite를 사용하는 작은 Next.js라고 할 수 있겠습니다.
제작 동기
아시는 분들은 아시겠지만 React 18부터 RSC가 시험적으로 도입되었음에도, RSC를 완전히 지원하는 상용 프레임워크는 거의 Next.js가 유일합니다.
하지만, Next.js는 여전히 Webpack 생태계에 의존하며(아시다시피 최근에 turbopack이라는 webpack 호환 번들러도 만들었죠), 작은 프로젝트에는 과도하게 덩치가 큰 프레임워크임이 틀림없습니다. 얼마전 v13 breaking changes로 욕도 많이 먹었고... 무엇보다 개인적으로는 현업에서 자주 사용하면서 opinionated framework라는 점이 불편했었던 것 같네요.
왜 Vite인가?
Vite는 써보신 분들은 아시겠지만 빠른 HMR과 강력한 rollup 생태계로 단시간에 개발 환경을 바꿔버린 툴체인으로, 요즘 CRA는 Vite로 넘어갔다고 해도 과언이 아닙니다.
그런 상황에서 모르시는 분들도 많겠지만 Vite는 내장 SSR 기능도 지원하고, 이걸 사용하면 Webpack 종속성을 버릴 수 있지 않을까! 하는 생각이 들었습니다.
또한, Vite 기반의 프레임워크를 만든다면 기존의 Vite 기반 SPA 프로젝트들도 쉽게 마이그레이션 할 수 있다는 장점이 있겠죠.
Seia.js는 왜 마이크로-프레임워크인가요?
Seia.js는 Next.js와 달리 특정한 데이터 패칭, 캐싱, 라우팅 툴링을 강제하지 않습니다.
Next.js의 page router에서 app router로 바꾸느라 다들 고생하셨던 경험이 있으실 겁니다.
Seia.js는 단순히 RSC와 관련된 부분만을 담당하며, 나머지 라우팅, 데이터 패칭 등등은 React-router 등 여러분이 늘 사용하던 스택을 쉽게 사용할 수 있게 합니다.
"Do one thing, Do well"인 것이죠.
추후 할 일
사실 아직 굉장히 많은 작업이 남아있고, 구체적으로 react 생태계 적응 테스트, 네비게이션 RSC payload 요청 구현, 라우팅 프레임워크 테스트, 클라이언트 번들 분할 개선 등등이 있습니다... 진짜 많네요;;
도와주세요!
대충 읽으시면서 느끼셨겠지만, 일반적으로 한국에서 나올 만한 규모의 프로젝트가 아닙니다. (제 입으로 말하기도 뭣하지만;;)
제가 원하는 목표를 이루기 위해선 정말 많은 기여가 필요하고, 정말 많은 도움이 필요합니다.
꼭 금전적인 도움이 아니더라도, 여러분의 도움은 정말 큰 힘이 됩니다.
우선 공유를 도와주세요. 더 많은 사용자가 생기고 더 많은 이슈가 보고될 수 있도록 주변의 개발자, 커뮤니티 등에 널리 소개해 주세요!
그리고 해당 프로젝트가 마음에 드셨다면, 꼭 스타를 남겨주세요. GitHub Star를 많이 받을수록 GitHub Trends에 진입하기 수월해지며, 이는 해당 프로젝트가 전 세계에 알려지는 데 정말 큰 도움이 됩니다!
마지막으로... 그... 나는 좀 실력이 되는 것 같다! 하시는 분들은 기여를 부탁드리겠습니다...
직장까지 병행하면서 혼자서 작업하는 게 상당히 지치네요.
참, 궁금하신 점이 있다면 아래에 댓글로 물어보시면 가능한 한 답변드리겠습니다!
여튼, 저는 다시 작업하러 돌아가겠습니다...!
좋은 밤 되세요!