์ง๋ 10์ 5์ผ ์งํ๋ ViteConf์์ ๋ฐํํ ๋ด์ฉ์ผ๋ก, ์ฅ๊ธฐ์ ์ผ๋ก rollup๊ณผ esbuild๋ฅผ ๋์ฒดํ๋ ๊ฒ์ ๋ํ ๊ณํ์ ๋ฐํํ๋ค. ์ด๋ฅผ ์ํด Rollup์ Rust ํฌํธ์ธ "Rolldown"์ด๋ผ๋ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ค๊ณ ํ๋ค.
[์ฐธ๊ณ ] ๋ค์์ ๋ด์ฉ๋ค๊ณผ ๊ฐ์ด ์ฐธ๊ณ ํด ๋ณด๋ฉด ์ข๋ค.
2023๋ ์๊ตญ์ ์ํํธ์จ์ด ์ปจ์คํ ํ์ฌ Scott Logic์์ WebAssembly ์กฐ์ฌ๋ฅผ ์ค์ํ์๋ค.
- Rust, JavaScript์ ์ฌ์ฉ์ ๊พธ์คํ ์ฆ๊ฐ ์ค์ด์ง๋ง, ๋ ๋์ ๋๋ ๊ฒ์ Swift์ Zig์ ์ฑํ๋ฅ ์ด ์ฆ๊ฐ์ด๋ค.
- WASM์ Web์์๋ ๋ง์ด ์ฌ์ฉ๋์ง๋ง, Serverless์ Plugin ํ๊ฒฝ์ผ๋ก๋ ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๊ณ ์๋ค.
๋ ์์ธํ ๋ด์ฉ์ด ๊ถ๊ธํ๋ค๋ฉด, ์ฝ์ด๋ณด๊ธฐ๋ฅผ ์ถ์ฒํ๋ค.
ํ๊ธ ๋ฒ์ญ ํฌ์คํธ๋ก ํธํ๊ฒ ์ฝ์ ์ ์๋ค.
Google์ ํฐ JavaScript Application์ ๋ง๋ค๊ธฐ ์ํด ๊ณผ๊ฑฐ ํ์
์ ์ฒดํฌํ๋ Closure Compiler๋ฅผ ๋ง๋ค์๋ค๊ณ ํ๋ค.
์ข ๋ ์ค๋ช
ํ์๋ฉด, Closure Compiler๋ JSDoc ์คํ์ผ์ ์ฝ๋ฉํธ๋ฅผ ํตํด ํ์
์ ์ถ๊ฐํ๋ ๊ฒ์ด๋ค.
/**
* @param {number} a
* @param {number} b
* @return {number}
*/
function max(a, b) {
return a > b ? a : b;
}Clouser Compiler์ TypeScript์ ๊ฒฝ์์์ ์ TypeScript๊ฐ ์น๋ฆฌํ๊ฒ ๋์๋์ง ๋ค๋ฃฌ๋ค.
ํ๊ธ ๋ฒ์ญ ํฌ์คํธ๋ก ํธํ๊ฒ ์ฝ์ ์ ์๋ค.
CRDT๋ โConflict-free Replicated Data Typeโ(์ถฉ๋ ๋ฐฉ์ง ๋ณต์ ๋ฐ์ดํฐ ํ์
)์ ์ฝ์๋ก ๋ํ์ ์ธ ์๋ก ํ์
์ฑ(Google Docs, Figma ๋ฑ)์์ ๋คํธ์ํฌ ์์ฒญ ์์ด๋ ์์ฒด ์ํ๋ฅผ ์
๋ฐ์ดํธํ ์ ์๊ฒ ๋ง๋ค์ด ์ฃผ๋ ๊ฐ๋
์ด๋ค.
์ด ๊ธ์์๋ Last Write Wins Register, Last Write Wins Map์ ๊ฐ๋
์ ์์๋ณธ๋ค.
์ด ๊ธ์ ์๋ฆฌ์ฆ์ ์ฒซ ๋ฒ์งธ ๊ธ๋ก ํ์ฌ๋ ์๋ ๋ ๊ฐ์ ๊ธ์ด ๋ ๋ฐ๊ฐ๋์๋ค.
Deno๋ ์ ์๋ค์ํผ, Node.js๋ฅผ ๋ง๋ค์๋ Ryan Dhal๋ก๋ถํฐ ์๋กญ๊ฒ ์์๋์๊ณ ๋๋์ง๋ง ๋ฐํ์ ์์ญ์์ ์กด์ฌ๊ฐ์ ํค์๊ฐ๊ณ ์๋ค.
Deno์ ๋ด๋ถ๋ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๊ณ , ์ด๋ป๊ฒ ๋์ํ ๊น? ์ด ์ฑ
์ ์ด๋ฌํ ๊ถ๊ธ์ฆ์ ํด์์์ผ ์ค ์ ์์ ๊ฒ์ด๋ค.
[์ฐธ๊ณ ] ์ถ๊ฐ๋ก ๋ค์ ์์๋ Deno ๋ด๋ถ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์ ๋ ์ ์๋ค.
์นด์นด์ค์ ์๋น์ค ์ฑ๋ฅ์ ๋ถ์ํ๋ ์๋น์ค(lighthouse ๊ธฐ๋ฐ)์ ESM ์ ํ์ ๋ค๋ฃจ๋ ๊ธ๋ก, lighthouse์ CJS -> ESM ์ ํ์ ๋ฐ๋ผ ์๋น์ค๋ ESM ์ผ๋ก ์ ํํ๊ฒ ๋์๋ค๊ณ ํ๋ค.
CommonJS ํ๊ฒฝ์์ ์ด์ํ๋ ์๋น์ค๋ฅผ ESM ํ๊ฒฝ์ผ๋ก ์ ํํ๋ ๊ณผ์ ์ ๋ค๋ฃจ๊ณ , ๊ทธ ๊ณผ์ ์์ ๋ค์ํ ํ๋ค์ ์ ๊ณตํด ์ค๋ค.
HTTP/3๋ โ22/6์, ํ์คํ๋ ์ด๋, ๋น ๋ฅด๊ฒ ์ฑํ๋๊ณ ์์ผ๋ฉฐ HTTP/1์ ๋์ด์ฐ๋ค. FE ๊ด์ ์์ ์ด๋ฌํ ํ๋กํ ์ฝ์ ๋ณํ์ ์๋ฏธ๋ ๋ฌด์์ผ๊น?
์ฒซ ๋คํธ์ํฌ ์๋ณต(Round Trip)์ ๋ํ JS ๋ก๋ฉ ์ต์ ํ, ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค๋ฅธ ๋ฆฌ์์ค ์ ํ ๋๋น, JS ์ฐ์ ์์๋ฅผ ์ ํ๋ ๋ฐฉ๋ฒ ๋ฑ์ ์๊ฐํ๋ค. ๋ํ ํ๋กํ ์ฝ๊ณผ fetch()์ ํตํฉ์ ์ดํด๋ณด๊ณ , ๊ณง ์ถ์๋ WebTransport์ ๋ํด์๋ ์ด์ผ๊ธฐํ๋ค.
[์ฐธ๊ณ ] HTTP/3์ ์ฑํ๋ฅ ์ ๋น ๋ฅด๊ฒ ์์นํ๊ณ ์์ผ๋ฉฐ, ์๋ ๋งํฌ๋ฅผ ํตํด 21~23๋ ๊ฐ HTTP ๋ฒ์ ์ ๋ฐ๋ฅธ ์ฌ์ฉ๋ ์งํ๋ฅผ ํ์ธํ ์ ์๋ค.
Wikipedia ๋ชจ๋ฐ์ผ ์ฌ์ดํธ์ ํ์ด์ง ๋ก๋ฉ ์๋๋ฅผ ์ด๋ป๊ฒ ๊ฐ์ ํ๋์ง ์๊ฐํ๋ ๊ธ์ด๋ค.
์ฒ์ ํ์ด์ง๋ฅผ ๋ก๋ํ ๋ 600ms ์ด์ ๊ฑธ๋ฆฌ๋ JS ์์
์ด ์์๋๋ฐ, ๋ ๋จ๊ณ์ ๊ฑฐ์ณ ๊ฐ์ ํ์๊ณ , ๊ทธ ๊ฒฐ๊ณผ ๋ก๋ฉ ์๊ฐ(TBT, Total Blocking Time)์ 300ms ์ ๋ ์ค์ผ ์ ์์๋ค๊ณ ํ๋ค.
๋ง์ ์ต์ ์น์ฌ์ดํธ๋ค์ ๋ชจ๋ฐ์ผ ์ ๊ทผ์ ์นํ์ , ์ฐ์ ์ ์ผ๋ก ์ค๊ณ๋์ด์ค๊ณ ์์ง๋ง, ์ด๋ฌํ ํ์ด์ง๊ฐ ๋ฐ์คํฌํฑ ํ๊ฒฝ์์ ๋ ๋๋ง ๋ ๋ ์ฝํ ์ธ ๊ฐ ์ง๋์น๊ฒ ํฌ๊ณ ๊ธธ๊ฒ ํ์๋ ์ ์๋ค. ํ๋ฉด์ ๊ฐ๋ฆฌ๋ ์ด๋ฏธ์ง, ํฌ๊ณ ๋ถํ๋ ค์ง ํ ์คํธ, ๊ณผ๋ํ ๊ณต๊ฐ์ผ๋ก ์ธํด ํ์ด์ง๊ฐ ๊ธธ์ด์ง๊ณ ๋ชจ๋ ์ฝํ ์ธ ๋ฅผ ์๋นํ๊ธฐ ์ํด ๋ ๋ง์ ์คํฌ๋กค์ด ํ์ํ๊ธฐ๋ ํ๋ค. ์ด๋ฌํ ๋์์ธ ํธ๋ ๋๋ฅผ ์ฝํ ์ธ ๋ถ์ฐ(content dispersion)์ด๋ผ ๋ถ๋ฅธ๋ค.
์ธ๊ณ์ ์ธ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ปจ์คํ ํ์ฌ์ธ ๋์จ ๋ ธ๋ง์์ ์์ฑํ ์ด ๊ธ์ ์ค๋๋ ์ ๋ชจ๋ฐ์ผ ํผ์คํธ ์น๋์์ธ์ ์ฌ์ฉ์ฑ์ด ์คํ๋ ค ์ฌ์ฉ์์๊ฒ ๋ถ์ ์ ์ธ ์ํฅ์ ์ ๋ฌํด ๋ด์ฉ์ ์ดํดํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋๋ '์ฝํ ์ธ ๋ถ์ฐ'์ ๋ํ ๋ด์ฉ์ ๋ค๋ฃฌ๋ค.
Next.js 14๋ฒ์ ์ด ๊ณต๊ฐ๋์๋ค. ์ฃผ์ ๋ณ๊ฒฝ์ฌํญ์ ๋ค์๊ณผ ๊ฐ๋ค.
- Server Actions (Stable)
- 13 ๋ฒ์ ์์ ์คํ์ ์ผ๋ก ๊ณต๊ฐ๋ Server Actions๊ฐ 14๋ฒ์ ์์ Stable๋ก ๋ณ๊ฒฝ๋์๋ค.
- turbopack (unstable)
- 53% ๋น ๋ฅธ ๊ฐ๋ฐ(๋ก์ปฌ) ์๋ฒ ์์, 94% ๋นจ๋ผ์ง ์ฝ๋ ๋ฐ์
next dev --turbo๋ช ๋ น์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ- ํฐ๋ณดํฉ์ ์์ง
90%์next devintegeration test๋ง ํต๊ณผํ ์ํ์ด๋ฉฐ, ์ถํ 100% ํต๊ณผ ์stable๋ก ๋ณ๊ฒฝ๋ ์์ ์ด๋ค.
- Partial Prerendering (Preview)
- ๊ธฐ๋ณธ ์๋ต ๋ฐ์ดํฐ์ ์คํธ๋ฆฌ๋ฐ ๋์ ์ปจํ ์ธ ์ ๋ฌ ๊ธฐ๋ฅ์ React ์ Suspend ๊ธฐ๋ฐ ์์์ ๊ตฌํ.
- Metadata Improvements
- server component์์
viewportobject์generateViewportfunction์ exportํด์ ์ฌ์ฉํ ์ ์๋ค. - ๋ค๋ฅธ ๊ธฐ์กด์
metadata์ต์ ์ ์ ์ง๋๋ค.
- server component์์
๋ผ์ดํธ ๋ชจ๋ ๋๋ ๋คํฌ ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ถ์ ๋ฐ๋ผ ์์ ๋ณ๊ฒฝ์ ์ ์ฉํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก prefers-color-scheme ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
:root {
--text-color: #333; /* Value for Light Mode */
}
@media (prefers-color-scheme: dark) {
:root {
--text-color: #ccc; /* Value for Dark Mode */
}
}์ด ์์ ์ ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด CSS Color Module Level 5์ ์๋ก์ด light-dark()๋ผ๋ ์ ํธ๋ฆฌํฐ ํจ์๊ฐ ์ถ๊ฐ๋์๋ค. ์ด ํจ์๋ ๋ ๊ฐ์ง ์์ ๊ฐ์ ์ธ์๋ก ๋ฐ๊ณ , ์ฌ์ฉ ์ค์ธ ์ ๊ตฌ์ฑํ์ ๋ฐ๋ผ ์ฒซ ๋ฒ์งธ ๋๋ ๋ ๋ฒ์งธ ์์ ๊ฐ์ ํ์ฉํ๊ฒ ๋๋ค.
:root {
/* light-dark() ํจ์ ์ฌ์ฉ์ ์ํด color-scheme ์ ์ธ์ด ํ์ํ๋ค. */
color-scheme: light dark;
}
:root {
/* In Light Mode = return 1st value. In Dark Mode = return 2nd value. */
--text-color: light-dark(#333, #ccc);
}์์ง์ Firefox 120+์์๋ง ์ง์๋๋ค.
ํ๊ธ ๋ฒ์ญ ํฌ์คํธ๋ก ํธํ๊ฒ ์ฝ์ ์ ์๋ค.
์ง๋ 2020๋
12์ React Server Components๊ฐ ์๊ฐ๋ ์ดํ๋ก ์ฌ์ ํ ์ฌ๋๋ค์ ๋์ ๋ฐฉ์์ ๋ํด์ ํผ๋์ค๋ฌ์ํ๋ค.
์ด ๊ธ์ ๊ทธ๋ฐ ์ฌ๋๋ค์ ์ํด ์ธํฌ๊ทธ๋ํฝ์ ํตํด ์ข ๋ ์ฝ๊ฒ ์ค๋ช
์ ์๋ํ๋ค.
์ง๋ 9์ Yahoo! JAPAN์์ bf Cache ์ ์ฉ์ผ๋ก ๋น์ฆ๋์ค์ ์ธ ์ฑ๊ณผ๋ฅผ ๊ฐ์ ธ์๋ค๊ณ ์๊ฐํ์๋ค.
์ด ๊ธ์ ์ค์ ๋ก bfCache๋ฅผ ์ ํฉ์ฑ์ ํ์ธํ๋ ํ๊ณผ ์ค์ ๋ก ํ
์คํธํ๋ ๋ฐฉ๋ฒ ๋ฑ์ ์๋ ค์ค๋ค.
ReactAgent๋ GPT-4 ์ธ์ด ๋ชจ๋ธ์ ์ฌ์ฉํด ์ฌ์ฉ์ ์คํ ๋ฆฌ์์ React ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๊ณ ๊ตฌ์ฑํ๋ ์คํ์ ์ธ ์์ด์ ํธ๋ก ์์ ์ ์๊ฐํ๊ณ ์๋ค.
React, TailwindCSS, Typescript, Radix UI, Shandcn UI ๋ฐ OpenAI API๋ฅผ ํ์ฉํด ์ฝ๋๋ฅผ ์์ฑํ๋ค.
import React from 'react';
import {createComponent} from '@lit/react';
import {MyElement} from './my-element.js';
export const MyElementComponent = createComponent({
tagName: 'my-element',
elementClass: MyElement,
react: React,
events: {
onactivate: 'activate',
onchange: 'change',
},
});๊ตฌ๊ธ์ Web Components Framework Lit์ด v3.0์ ๋ฆด๋ฆฌ์คํ๋ค.
์ฌ๋ฌ ๋ณ๊ฒฝ์ฌํญ ์ค ๊ฐ์ฅ ๋๋๋ฌ์ง๋ ๋ณํ๋ @lit/react์ด๋ค. @lit/react๋ Web Components๋ฅผ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ๋ก ๋ํํ๋ฉฐ ์๊ธฐ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ์ค๋ค.
์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ ํด์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฒด์ ๋ฒ๊ทธ๊ฐ ์์ด์ ์ ์ํ ์์ ์ด ํ์ํ๊ฑฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ง์ํ์ง ์๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
Notion์ฒ๋ผ ๋ธ๋ก ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ ํ์ฅ ๊ฐ๋ฅํ Text Editor์ด๋ค.
๋ฐ๋ชจ ํ์ด์ง์์ ํ
์คํธํด ๋ณผ ์ ์๋ค.






