JSer.info #659 - Node.js v20.6.0가 출시되었습니다
.env
빌드인 지원, import.meta.resolve
플래그 없이 이용 가능, module.register()
API 추가되었습니다.
Loader의 load
hook이 CommonJS 지원되며, 비권장 기능 require.extensions
없어도 CommonJS 작업할 수 있도록 custom loader 작성할 수 있는 변경도 있습니다.
단, v20.6.0에서는 loader 변경으로 Babel 등이 동작하지 않게 되어, v20.6.1에서 수정될 예정입니다.
- [v20.6] CJS runs repeatedly when there are circular dependencies when loaded by ESM · Issue #49497 · nodejs/node
- esm: fix loading of (recursive) CJS modules from ESM by aduh95 · Pull Request #49500 · nodejs/node
Design Trade-offs in Bundler: The Rationale Behind Creating Rspack · web-infra-dev/wg · Discussion #1에는, Rspack 개발 목적이나 webpack/parcel/esbuild/rollup 등 bundler 아키텍처에 대해 설명하고 있습니다.
각 bundler에는 장단점이 있지만, esbuild와 Rollup의 장점을 흡수해서 Rust버전으로 작성한 점에 대해 언급합니다.
플러그인 API나 JavaScript 이외 언어를 다루는 필요성부터, webpack 아키텍처와 닮은 것이 필요한 것을 깨닫고, webpack 호환 아키텍처를 선택한 것에 대해서도 작성되었습니다.
각 bundler 아키텍처, Rspack의 현 과제, 앞으로 방향성에 대해서도 언급합니다.
To support JSer.info
- 😘 Recommend JSer.info to your friends!
- ❤️ Support @azu on GitHub Sponsors/JSer.info Sponsors
- 🐦 Follow @jser_info on X(Twitter)
헤드라인
nitrogql 1.0 release | nitrogql blog
nitrogql.vercel.app/blog/release-1.0
GraphQL에서 클라이언트 코드 생성과 GraphQL 쿼리의 자료형 체크를 하는 nitrogql 1.0 출시.
Node v20.6.0 (Current) | Node.js
nodejs.org/ja/blog/release/v20.6.0
Node.js v20.6.0 출시.
.env
빌트인 지원, import.meta.resolve
플러그 없이 이용 가능, module.register()
API 추가.
Loader의 load
hook가 CommonJS 지원, 비권장 require.extensions
사용 없이도 CommonJS 처리할 수 있는 custom loader 작성할 수 있도록
Release v4.0.0 · actions/checkout
github.com/actions/checkout/releases/tag/v4.0.0
actions/checkout v4.0.0 출시.
Node.js 20 이용 가능, show-progress
옵션 추가
읽을거리
Design Trade-offs in Bundler: The Rationale Behind Creating Rspack · web-infra-dev/wg · Discussion #1
github.com/web-infra-dev/wg/discussions/1
Rspack 개발 목적이나 webpack/parcel/esbuild/rollup 등 bundler 아키텍처에 대하여.
webpack에는 디버그나 성능 문제가 있었고, Vite/Rollup도 대규모 프로젝트에서 성능에 빌드 환경 차이 문제가 있었으며, esbuild는 플러그인 문제성이 있었음.
Rollup는 ESM 한정으로 일급시민이기에, Rspack는 webpack와 Parcel과 같이 언어에 의존하지 않는 것을 목표로 함.
각 bundler 플러그인 API 설계 복잡성, AST 재이용과 성능 문제, Tree Shaking를 AST 기반으로 하는 경우의 과제에 대해서도 언급.
또한, 앞으로 Rspack가 지향하는 방향으로 간단히 사용, 디버그 하기 쉽게, 최적화를 webpack과 동급 혹은 그 이상으로, 원격 캐시 등에 대해서도 다룬다.
Mofi - Snappy UIs With WebAssembly and Web Workers
mofi.loud.red/blog/wasm-and-workers
WebAssembly에서 처리를 WebWorker 안에서 함으로, 메인 스레드 블록없이 처리하는 이야기.
CPU 코어 이상 Worker 늘리면 문제가 있기에, 워커 풀을 작성해서 Worker 수를 제어한다. 또한 Worker에서 진행 상황을 메세징하는 방법에 대해서도 다룬다
Faster Vue.js Execution in Firefox - Mozilla Hacks - the Web developer blog
hacks.mozilla.org/2023/09/faster-vue-js-execution-in-firefox/
Vue 등에서 사용하는 Proxy 최적화를 함으로, TodoMVC-Vue 성능이 40% 개선.
Firefox 118 출시 때 이 변경이 포함될 예정.
How we reduced the size of our JavaScript bundles by 33% - Dropbox
dropbox.tech/frontend/how-we-reduced-the-size-of-our-javascript-bundles-by-33-percent
Rollup으로 Code Splitting/Tree Shaking 함으로 bundle 크기를 작게하는 이야기.
한 편 Rollup은 메모리 상에 모든 코드를 갖기에 빌드가 불안정한 점, 세세한 chunk라면 압축률이 그리 좋지 않다는 점에 대해서도 언급된다
웹사이트, 서비스, 문서
Modern.js
ByteDance의 JavaScript 대상 웹 애플리케이션 프레임워크.
React 기반으로 클라이언트 사이드 모델이나 라우팅, Rspack/ESLint/Jest 통합, BFF 지원, MicroFrontend 지원한다.
소프트웨어, 도구, 라이브러리
measuredco/puck: The self-hosted drag and drop editor for React.
D&D처럼 편집 가능한 비주얼 에디터의 React 컴포넌트 라이브러리
도서
Nuxt 3 프론트엔드 개발 교과서: 도서안내 | 기술평론사
gihyo.jp/book/2023/978-4-297-13685-7
2023년 9월 22일 발매
Nuxt 관련 도서