OTW for FE

Node.js를 잘 쓰는 9가지 원칙

2024. 10. 4.

Node.js를 잘 쓰는 9가지 원칙

Platformatic HQ
9 Principles for Doing Node.js Right in Enterprise Environments

Node.js라고 한정지었지만 이 원칙은 JS 전반에 적용되기 때문에 꼭 봤으면 좋겠습니다. 원칙이라 되어있기에 어떻게 단계적으로 진행할지는 적혀있지 않습니다. 하지만 모두가 납득할만한 원칙들이기 때문에 항상 생각하면서 제품의 진행방향을 설정해야겠습니다.

조건문의 복잡함을 푸는 방법

Component Composition is great btw | TkDodo's blog
Component composition is one of the best parts of React, and I think we should take more time to break our components into manageable parts before littering one component with conditional renderings.

조건문의 복잡함(여기서는 조건부 렌더링)을 푸는 방법으로 조기 반환(early return)을 제시하는 글입니다. 요구사항을 잘 분석하여 조건부 렌더링을 남발하는 것을 막자는 글입니다. 경우에 따라서 조기 반환보다 분리, 혹은 격리가 나을 수도 있으므로 여기서 제시하는 분해, 그리고 분석이 가장 중요하겠네요.

content-visibility로 가상화 대신하기

Improving rendering performance with CSS content-visibility | Read the Tea Leaves
Recently I got an interesting performance bug on emoji-picker-element: I'm on a fedi instance with 19k custom emojis […] and when I open the emoji picker […], the page freezes for like a full second at least and overall performance stutters for a while after that. If you're not familiar with Mastodon or the Fediverse,…

Virtualization 대신에 content-visibility을 사용해서 성능 최적화를 진행한 간단한 후기입니다. 가상화는 UI 라이브러리/프레임워크에 종속된 라이브러리를 찾아 사용해야 하기 때문에 잘 사용해야 하는데, content-visibility라는 표준을 사용해보는 것도 나쁘지 않아보이네요.

AbortController 마스터하기

Don't Sleep on AbortController - kettanaito.com
Learn how to make anything abortable in JavaScript.

많이 사용하지 않는 AbortControllerfetch API 호출 중간에 중단하는 일 외에 어느 곳에 사용할 수 있는지를 소개하는 글입니다.

React에서 URL 다루기

How to control a React component with the URL

React에서 많이 실수하는 부분 중 하나가 URL을 useState와 함께 다루게 되어서 경우에 따라 불일치가 생길 수도 있다는 부분입니다. 이외에도 React에서, 혹은 다른 UI 라이브러리를 사용할 때 Single of truth를 항상 기억하면서 코드를 작성해야 한다는 교훈을 제공합니다.

브라우저는 꽤나 많은 기능을 제공한다

</> htmx ~ You Can't Build Interactive Web Apps Except as Single Page Applications... And Other Myths
htmx gives you access to AJAX, CSS Transitions, WebSockets and Server Sent Events directly in HTML, using attributes, so you can build modern user interfaces with the simplicity and power of hypertext htmx is small (~14k min.gz’d), dependency-free, extendable, IE11 compatible & has reduced code base sizes by 67% when compared with react

SPA 기반 프레임워크를 꼭 사용해야 한다는 주장들을 여러 브라우저 표준 API를 기반으로 반박하는 글입니다. 물론 MPA 프레임워크들을 사용해야 한다고 하는 것은 아니고 여기서 제공하는 기술들을 한 번 볼만하다고 생각해서 가져왔습니다. 대표적으로 Service Worker를 잘 사용할 수 있는 workbox와 이전에 소개했던 Speculation Rules API도 있습니다.

압축에 대한 고민

How Discord Reduced Websocket Traffic by 40%
How we rolled out zstandard and other improvements across our gateway cluster to reduce the amount of bandwidth that’s used by our clients.

Websocket 트래픽을 낮추기 위한 대한 고민과 해결한 과정을 적은 글입니다. 압축 라이브러리를 통한 페이로드 압축, 트래픽을 줄이기 위한 패시브 세션과 일반 세션 구분같은 여러가지 기술을 옅볼 수 있습니다.

JavaScript에서 타입 기반 린트의 현재

Why Typed Linting Needs TypeScript Today | Goldblog
Typed linting is powerful but requires a full type checker to function well. Today, that means TypeScript. This is why we haven't found a suitable replacement yet.

TypeScript 기반 린터의 생태계들의 고충을 모두 설명하는 글입니다. swc와 esbuild처럼 트랜스파일러가 안정화되어 나오지 않는 이유, 그리고 typescript-eslint는 어떤 노력을 하는지 엿볼 수 있습니다.

라이브러리나 기술 살펴보기

How I Built My Blog • Josh W. Comeau
I recently launched a brand new version of this blog, and in this post, I share how it’s built! We’ll examine the tech stack and see how all of the pieces fit together, as well as dig into some of the details to see how they work.
What's New in Express.js v5.0
A detailed look at the key changes and improvements in Express v5.0 and how to migrate your app
New in Chrome 129  |  Blog  |  Chrome for Developers
Chrome 129 is rolling out now! You can yield in long tasks - to improve performance, you can animate elements with intrinsic sizes, there are some changes to anchor positioning syntax, and there's plenty more. Pete LePage has all the details about what's new for developers in Chrome 129.

첫 글은 블로그에 적용된 라이브러리나 기술을 살펴보면서 소개하는 글입니다. 가볍게 이런 라이브러리가 있구나 살펴보기 좋습니다. 두번째 글은 express.js 5가 어떤 것이 바뀌었는지 살펴보는 글입니다. 세번째 글은 Chrome 129버전에 새로운 것이 무엇이 있는지 확인하는 글입니다. 이전에 소개했던 interpolate-size가 눈에 띄네요.

세상 이치가 그래

The Frontend Treadmill - These Yaks Ain’t Gonna Shave Themselves
A lot of frontend teams are very convinced that rewriting their frontend will lead to the promised land. And I am the bearer of bad tidings. If you are building a product that you hope has longevity, your frontend framework is the least interesting technical decision for you to make. And all of the time you spend arguing about it is wasted energy. I will die on this hill.

새로운 기술이나 인기있는 기술을 배우지 말고 핵심 웹 기술을 배우라는 글입니다. 하지만 여기서 중요하게 생각하는 것은 모든 문제에 해답이 될 수 없다는 글입니다. 저는 새로운 기술이나 인기 있는 기술이 없는 요구에 기반해서 만들어졌을 수도 있지만, 대부분은 요구에 따라서 생겼고, 새로운 기술이라고 하지만, 이전에 있던 요구사항에서 크게 달라지지 않는다는 생각을 합니다. 새로운 기술을 모니터링하는 것은 필요하다고 생각합니다. 2014년에 시작된 React로 만들어진 웹사이트가 지금은 꽤 많은 것처럼요. 하지만 기반, 핵심 지식을 배우는 것 또한 중요합니다. 핵심 지식을 기반으로 많은 기술들이 생기니까요. 비율을 조절하면서 계속 공부해보길 추천드립니다.

간단한 UX 경험 올리기

Sanding UI - Jim Nielsen’s Blog
Writing about the big beautiful mess that is making things for the world wide web.

marginpadding의 차이에서 오는 UX 경험을 소개하는 글입니다. 이전에 소개했던 상호작용 범위 더 좋게하기와 비슷한 글이네요.