Skip to content

Latest commit

 

History

History
205 lines (130 loc) · 13.4 KB

2021-12.md

File metadata and controls

205 lines (130 loc) · 13.4 KB

2021-12

링크 & 읽을거리

국내 개발자 콘퍼런스인 DEVIEW 2021이 지난 11월 24일 ~ 26일 3일간 진행되었다.

키노트를 포함한 모든 세션 영상이 공개되어 확인해 봐도 좋을 듯하다.

[참고] DEVIEW 2021 Front-end 세션

React 16.8에서 Hook이 등장한 이후로 이제 대부분의 React 개발은 클래스 컴포넌트에서 함수 컴포넌트로 넘어가는 추세이다. 하지만 Hook은 초심자에게 React를 더욱 어렵게 만드는 요소이기도 하다.

이 글에서는 이러한 Hook들을 래핑 하여 좀 더 쉽게 개발할 수 있도록 하는 RiC(React Split Component)라는 라이브러리를 만드는 과정을 보여준다.

각 구현 과정을 한 단계씩 자세히 설명하며 진행하는데, 무엇보다 구현 방식이 재미있으니 한번 읽어보길 추천한다.

Chrome 97의 새로운 기능으로 recorder 패널이 추가되었다. 사용자의 액션을 녹화하고 이를 다시 확인해 볼 수 있는 기능이다. 단순 녹화뿐만 아니라 저장한 사용자의 액션을 수정할 수도 있기에 다양한 용도로 사용될 수 있는 기능이라 생각한다.

기존의 명령적인 비동기 처리는 코드의 가독성을 떨어뜨리기 쉽다. 그래서 Suspense와 ErrorBoundary를 이용하여 선언적 비동기 처리 방식으로 코드를 사용하기도 한다. 이 글에서는 Suspense를 이용한 data fetching의 동작 원리를 살펴보고 이를 통해 대수적 효과에 대해 이해한 작가의 멘탈 모델을 설명한다.

Git의 명령어를 시각적으로 잘 설명한 글이다. Git에 익숙한 사용자든 익숙하지 않은 사용자든 Git 명령어를 보다 잘 이해하는 데 도움 되는 글이다.

다소 자극적인 제목으로, 간단하게 Svelte와 React를 비교한 글이다. React와는 익숙하지만 Svelte는 생소한 개발자들이 React와 비교를 통해 Svelte에 대한 대략적인 이해를 얻을 수 있을 거라 생각한다.

ECMAScript proposal들을 한눈에 볼 수 있는 사이트이다.

각 stage 별로 진행 중인 proposal들을 볼 수 있으며 원하는 proposal을 검색해 볼 수도 있다.

Mozilla에서 만든 저수준 프로그래밍 언어인 Rust가 JavaScript 언어를 대신해서 JavaScript 도구 생태계의 많은 부분을 대체하고 있다. 그 대표적인 예는 SWC, Deno 등이 있다.

이 글에서는 Rust가 JavaScript 도구 생태계에 많은 부분을 차지하고 있는 이유를 설명한다.

시각적 블록 방식으로 React 내부에서 어떻게 동작하는지 코드 기반으로 설명한다. 총 15개의 섹션으로 구분되어 있으며, 문서는 Stack Reconciler를 사용하는 React 15.4.2에 기반해 설명한다. 최신 버전의 React는 아니지만, React 내부 동작 방식에 대한 궁금증을 해결해 줄 것이다.

추가적으로 React의 기본 기능과 구조를 기반으로 설명하는 다음의 글도 유용하다. 나만의 리액트 라이브러리 만들기

튜토리얼

HTML canvas element를 이용해 스타크래프트 유닛 선택 및 이동을 흉내 내어 구현한 글이다.

GIF와 함께 자세한 구현 내용이 담겨 있으니 참고해 보면 좋을 듯하다.

Custom React Component를 만들고 NPM을 통해 배포하는 방법에 대한 글이다.

한 단계씩 자세히 설명하여 Custom React Component를 만들어 보고 싶은 사람이라면 누구라도 쉽게 따라 할 수 있을 것이다.

정규 표현식을 interactive 하게 배울 수 있는 사이트이다. 총 55개의 문제를 간단한 설명을 통해 학습하고 풀어 볼 수 있다. Playground는 준비 중이다.

보다 빠른 React 컴포넌트 개발을 위해 wasm(Rust로 작성된)을 사용할 수 있는 방법을 설명하며, Rust를 사용해 wasm 컴파일 방법과 이후 프로젝트에서 wasm을 다루기 위한 설정 방법 등 각 단계별 필요한 작업들을 소개한다.

예제 코드 저장소

import React, { useState } from "react";
import ReactDOM from "react-dom";

const wasm = import("../build/rusty_react");

wasm.then(m => {
  const App = () => {
    const [name, setName] = useState("");
    ...
    return (
      <> ...  </>
  };

  ReactDOM.render(<App />, document.getElementById("root"));
});

코드와 도구

JavaScript의 특정 함수에 대해 간단하고 빠르게 성능을 측정할 수 있도록 도와주는 웹사이트다. 비슷한 도구로는 perf.linkjsBench가 있다.

국내 회사인 Marpple에서 공개한 TypeScript 함수형 프로그래밍 라이브러리이다. 아직 Beta 버전이긴 하지만 지연 평가, 동시성 제어, 타입 추론, 에러 처리 등에서 강점을 가진다고 한다.

Adobe에서 만든 React UI 라이브러리이다.

정적 웹 사이트 배포로 유명한 Netlify에서 Netlify Drop이란 서비스를 공개했다.

이를 통해 HTML, CSS, JavaScript로 구성된 폴더를 drag and drop하여 올리면 간단히 배포가 진행되고 URL을 통해 접근해 확인해 볼 수 있다.

Remix는 지난 1년여 전 "sponsorware" 형태로 시작해 스폰서십 참여자들만 제한적 사용 라이선스가 부여되었던 SSR을 지원하는 새로운 React 기반 프레임워크다. React 생태계에서 라우팅 라이브러리로 유명한 React Router를 개발한 Michael Jackson이 참여하고 있어, 생태계에서 높은 관심과 주목을 받고 있었고 최근의 3백만 달러의 시드 펀딩 투자를 통해 모든 이들이 사용할 수 있도록 MIT 라이선스로 변경되었다.

Remix에 대한 보다 자세한 내용은 다음 링크를 참고하라.

puppeteer-extra는 Puppeteer의 drop-in replacement 래퍼로 다양하고 유용한 플러그인을 활용할 수 있다.

const puppeteer = require("puppeteer-extra");

// puppeteer-extra-plugin-stealth 플러그인은 다양한 회피 기술을 통해 puppeteer(headless)의 탐지를 어렵게 만든다.
const StealthPlugin = require("puppeteer-extra-plugin-stealth");

puppeteer.use(StealthPlugin());

일반적으로 웹에서의 게임은 Canvas를 사용해 구현하는 것이 일반적이다. 이 프로젝트는 4년 전 시작되어 FPS 게임의 시초라 할 수 있는 Doom을 Canvas가 아닌 HTML/CSS/TypeScript만을 활용해 구현한 것이 특징이다. 직접 개발한 ReactCasting HTML 광선 투사(Ray Casting) 엔진을 사용했다.

Live demo

TypeScript에 익숙해지고 싶은 분들을 위한 사이트. 해결해야 할 타입 문제를 주고 TypeScript Playground에서 도전해 볼 수 있다. TypeScript를 익히는데 많은 도움이 되는 사이트이다.