개인 사이드 프로젝트에 사용하던 nodejs 기반 서버 프레임워크를 다시 만들었다.
큰 이유가 있는건 아니다.
기존 사이드 프로젝트에만 사용하는거라고 해도 업데이트할때마다 몇 개씩 하자가 생길정도로 안정성이 떨어졌었다.
버그 고칠때마다 너무 힘들어서 처음부터 탄탄하게 만들자해서 만들게 되었다.
목표는
- 가볍고
- 빠르고
- 버그가 없으면 된다.
어릴때부터 제대로 정신교육이 안된 상태로 코딩해서 '안되면 다시하지'라는 마인드가 있었는데 이 마인드를 고치기도 할 겸 최대한 테스트코드를 작성하면서 만들었다. (나름 30개정도의 테스트를 구현함)
#구상
기존 서버 프레임워크를 다시 만드는 것이기 때문에 최대한 기존 기능을 살리면서 업그레이드하는 식으로 진행했다.
번들러 선택
가장 큰 고민은 타입스크립트를 로드하기 위한 번들러를 선택하는 것이였다.
얼마전에 rolldown이라는 번들러가 나왔다. esbuild 쓸까 rolldown 쓸까 내가 만든 번들러 (swc기반)를 쓸까
굳이 특징을 나열해보자면
| 이름 | 특징 | 총평 |
|---|---|---|
| rolldown | 새로나옴. 써보고 싶음. 왠만한 번들러보다 빠르다는데 솔직히 잘 모르겠음. | 흠... |
| esbuild | 아는 맛이 무서운 법. 체감상 가장 빠름. | 음... |
| serpack (자체 번들러) | 내가 만들어서 내 입맛대로 바꿀 수 있다는 장점이 있지만 굳이.. | 이건 아닌듯 |
(webpack이랑 rollup같은 자바스크립트 기반 번들러는 위에 번들러에 비해 너무 느려서 생각도 안함)
얼마전에 알았는데 rspack이라는 webpack 대체 번들러도 나왔다고 함
이 중에서 가장 써보고 싶은 rolldown으로 선택했다.
Web standard?
사전조사하던 중 요즘 서버 프레임워크들은 web standard를 준수한다라고 해서 궁금해서 찾아봤는데 이게 edge?에서도 구동될 수 있게 해준다는데, 지식이 없어서 pass
프레임워크 vs 라이브러리
프레임워크는 별도의 코드를 작성하지 않아도 서버를 시작할 수 있다는 장점이 있지만 조금만 커스텀할려고 해도 여러 제약이 생기는 문제가 있지만, 내가 만드는 것이므로 내가 그때그때 수정할 수 있기 때문에 프레임워크로 선택
페이지 라우터 구상
최대한 간결하면서도 멋있게 구상했다.
import { defineRouter } from 'dobs';
export default defineRouter((req, res) => {
res.send('Example');
});#사용
이번꺼는 좀 제대로 만들어서 CLI를 이용해서 템플릿을 다운로드할 수 있다.
yarn create dobs그리고 소스코드도 github에 올려놨다.
#여담
조금 관련없는 이야기지만, 블로그 테마를 업데이트했다.
블랙에서 화이트로 바꾸고 메인화면에 포스트카드도 조금 만졌는데 깔끔하고 더 이쁜 것 같다.
| After | Before |
|---|---|
![]() | ![]() |
그리고 원래 글만 싸고 갈려고 했는데 이 웹사이트를 돌리는 프레임워크의 라우터쪽에서 약간 발견하지 못한 버그를 찾아서 고치느라 2시간걸릴거 4시간정도 걸린 것 같다. (원래 글쓰는거에 재능이 없어서 좀 오래걸림)
또 npm 로그아웃이 됐는데, 아무리 재전송을 해도 otp가 도착을 안해서 로그인을 못하고 있다.
마지막으로 구글 콘솔에 아무리 사이트맵을 등록해도 계속 실패한다. 기분이 좋지 않다.

