๋ฌธ์ : ํธ์ถ, ์์ฐ ๋น๋ ์ต์ ํ next start
๋๋ ์ฌ์ฉ require('next')
๋ด์์ ์ฌ์ฉ์ ์ ์ server.js
์ ์ ์ฒด ์ธํธ๋ฅผ ๊ฐ์ ธ ํฌํจ next
์ ํฌํจํ์ฌ ์ข
์์ฑ์ webpack
์ ๊ฐ์ด ๊ฐ๋ฐ์๋ง ๊ด๋ จ๋ ๊ฒ.
์ด๋ ํ๋ก๋์
๋น๋๋ฅผ ์์ฑํ ๋ ๋น๋ ์ด๋ฏธ์ง ๊ด์ ๊ณผ ๋ค์ด๋ก๋ ์๊ฐ ์ฑ๋ฅ ์ธก๋ฉด์์ ๋ฌธ์ ๊ฐ ๋ ๋ฟ๋ง ์๋๋ผ ๋ถํ
์๊ฐ๋ ์์์ํฌ ์ ์์ต๋๋ค. _์ฐธ๊ณ : ์ด๊ฒ์ ๊ฐ๋ฐ ๋ชจ๋์์ webpack
์ ๊ฐ์ ๋ฌด๊ฑฐ์ด ์ข
์์ฑ์ ์ ์คํ๊ฒ ์ง์ฐ ๋ก๋ํ๋ค๋ ์ฌ์ค๋ก ์ธํด ์ค์ด๋ญ๋๋ค._
์ฑ๋ฅ์ ๋ฏผ๊ฐํ๊ณ _์ฝ๋ ์คํํธ โโ์๊ฐ_์ ๋ฏผ๊ฐํ ์ฌ๋๋ค์ ์ํด(์: https://twitter.com/rauchg/status/990667331205447680 ์ฐธ์กฐ) next-server
ํจํค์ง๋ฅผ ๋์
ํ ์ ์์ต๋๋ค.
require('next')
์์ ๋ชจ๋ ๊ฐ๋ฐ ์๊ฐ ์ค์ ์ ๋บ ๊ฒ๊ณผ ๋์ผํ ๊ธฐ๋ฅ๊ณผ ํฌํธ๋ฅผ ์ด๊ณ ์ ์์ ์ธ ์ข
๋ฃ๋ฅผ ์ํํ ์ ์๋ ๋งค์ฐ ์์ next-server
CLI๊ฐ ์์ต๋๋ค.
์ต์ ํํ๋ ค๋ ๋์:
next-server
์ ์ด ์ข
์์ฑ ์งํฉ์ ๊ฐ๋ฅํ ํ ์์์ผ ํฉ๋๋ค.๋ํ, ์ฐ๋ฆฌ์ ์๋ฅผ ์ ๊ณตํ๋ค examples/
์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ next-server
๊ณผ ํจ๊ป pkg
์์ฒด์ ํฌํจ ๋ ELF ๋ฐ์ด๋๋ฆฌ๋ก Next.js ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค.
ํ๋ก ํธ์๋์ฉ Now 2.0์์ ๋ณผ ์ ์๋ ์ฝ๋ ์คํํธ โโ์๊ฐ์ 80mb IIRC์ ์ด๋ฏธ์ง ํฌ๊ธฐ์ ๋ํด 1.5์ด์ ๋๋ค.
Node ๋๋ V8 ๋๋ ์ฝ๋ ํ๊ฐ์ ์๋นํ ์๊ฐ์ด ์์๋๋ ์ข
์์ฑ์ ๋ณ๊ฒฝํ์ง ์๊ณ 1์ ํจ์ฌ ๋ ๊ฐ๊น๊ฒ ๋ง๋๋ ๊ฒ์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค(์ react
๋ฐ react-dom
).
์, ์ด๊ฑด ๊ต์ฅํด!! :์ํ
์ฐ์ ๊ทธ๊ฑฐ ๊ต์ฅ ํ๊ตฐ.
next-server
๋ํ ๋ช ๊ฐ์ง ์ง๋ฌธ์
๋๋ค.
next-routes
๋ก ๊ตฌ์ฑํ ์ ์์ต๋๊น?@Nishchit14 ๋น๋ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ค๊ณ ํ๋ค๋ฉด express
์ถ๊ฐํ์ง ์์ ๊ฒ์
๋๋ค.
next-routes
๋ ์ฌ์ ํ ์ ์๋ํ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์ ๋งํ๋ ๊ฒ์ ๊ธฐ์กด ์๋ฒ๋ฅผ ์์ฒด ํจํค์ง๋ก ์ถ์ถํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ด์ ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์๋ํ์ง๋ง next๋ฅผ ๊ฐ์ ธ์ค๋ ๋์ next-server๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
์ด๊ฒ์ ๊ต์ฅํ๋ค! ๋์ ๋ด๊ฐ ์๋ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ค์นธ๋์ ( ์ด ๊ฐ์ด๋ ์ฌ์ฉ )์
1) ํจํค์ง ํฌ๊ธฐ. Lambda๋ ํฌํจ๋ ๋ชจ๋ ๊ฐ๋ฐ ๋๊ตฌ๋ก ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋ 50MB์ ํ๋ ์ ํ์ ์ ๊ณตํฉ๋๋ค.
2) ์ฝ๋ ์คํํธ. Lambda๋ ์ธ์ ๋ ์ง ๋ ๋ง์ ์๋ฒ๋ฅผ ๊ฐ๋ํ ์ ์์ผ๋ฏ๋ก ๋น ๋ฅธ ๋ถํ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๊ธฐ์กด ์๋ฒ๋ ์ต๋ 4์๊ฐ ๋์ ์๋ํ๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฒด ์๋ช ์ฃผ๊ธฐ ๋์ ์ฝ๋ ์คํํธ๊ฐ ์ค์ํฉ๋๋ค.
์ด ์ด๋์ ํฐ๋ธ๋ฅผ ๋ณด๊ฒ ๋์ด ๋งค์ฐ ๊ธฐ์๊ณ ๋์์ด ๋์ด์ ๊ธฐ์ฉ๋๋ค!
์ด๊ฒ์ ์ข์ ์์ด๋์ด์
๋๋ค. Nuxt.js์์๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. nuxt start
-> nuxt-start
๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ๋ช
๋ น์ด๊ธฐ ๋๋ฌธ์ nuxt-start
๋ผ๊ณ ํ์ต๋๋ค.
์ด๊ฒ์ ๋ฐ์ ํ๊ฒ ๋ฐ๋ฆ ๋๋ค. ๊ฐ๋ฅํ ๊ฒ์ ๋ํ ๋ฐ์ดํฐ ํฌ์ธํธ๋ก์ www.bustle.com ์ <1s ์ฝ๋ ์คํํธ๊ฐ ์๋ AWS Lambda์ SSR preact ์ฑ์ ๋๋ค. ๋ฐฐํฌ๋ ์ ์ฒด ํ๋ก๋์ zip ํ์ผ์ 166kb์ ๋๋ค. ์ด๊ฒ์ด ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋์ ๋๋ค. Webpack์ ๋ฒ๋ค๋ง์ ์ฌ์ฉ๋ฉ๋๋ค.
@southpolesteve๋ฅผ ๊ณต์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ ๋ง ์ธ์์ ์ ๋๋ค. #๋ชฉํ
์ฌ์ฉ์ ์ฌ๋ก๋ micro
๋ฐ micro-dev
์ ๋งค์ฐ ์ ์ฌํฉ๋๋ค.
๊ฐ์ ๋ช
์นญ์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น? next
๋ฐ next-dev
์ด ์์ ๋ฅผ ์ฌ์ฉํ์ฌ next.js์ ์๋ฒ๋ฆฌ์ค๋ฅผ ์ด์ง๋ฝํ๊ณ ์์ผ๋ฉฐ ์ง๊ธ ๋ ์์ ๋น๋๋ฅผ ์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค. ํ๋ก๋์ ์์ ์ ๋ ํ์ํ์ง ์๊ณ serverless ๋๋ repack-zip ๊ณผ ๊ฐ์ ํจํค์ง ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑ ํ์ผ๋ก ์ ์ธํ ์ ์๋ node_modules ๋ชฉ๋ก์ด ์์ต๋๊น?
@Enalmada ์ฌ๋ฌ dep์ ํจ๊ป next.js๋ฅผ ์คํ ์ค์ด๊ณ material-ui
๊ฐ ๊ทธ ์ค ํ๋์
๋๋ค. ๊ท๋ชจ ๋ฉด์์ ๊ฝค ํฐ ์ฑ์ด ์์ง๋ง Lambda์ ์
๋ก๋ํ๋ ๋น๋๋ zip์ ~ 45MB์
๋๋ค. ์ด๋ค ์ฌ์ด์ฆ๋ฅผ ์ฐพ์ผ์๋์?
@albinekb ์์ 166kb์ ๋ํ southpolesteve bustle.com ์๋ต์์ ์๊ฐ์ ์ป์์ผ๋ฉฐ ์ด ํ๋ฅญํ ํฐ์ผ์ด ์์ฑ๋ ๋๊น์ง dist ์ ์ธ ํ์ผ์ ๋ฌด์์ ๋ฃ์ด์ผ ํ๋์ง๋ง ์์๋ค๋ฉด ๋ด "45MB"๊ฐ ์ผ๋ง๋ ์ธ๋ชจ์๊ณ ์ ๊ฑฐํ๊ธฐ ์ฌ์ด์ง ๊ถ๊ธํฉ๋๋ค. .
@albinekb ์นํฉ, ์ํฌ ๋๋ ๋กค์ ์ ์ฌ์ฉํ์ฌ ๋๋ค์ฉ JS๋ฅผ ๋ฒ๋ค๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ํฌ๊ธฐ๋ฅผ ์ ์ฝํ ์ ์์ง๋ง ์ผ๋ฐ ๋ ธ๋๋ฅผ ํตํด ํ์ผ ์์คํ ์ ์น๋ ๊ฒ์ด ๊ฝค ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ถํ ์๊ฐ๋ ์ ์ฝ๋ฉ๋๋ค.
ZEIT Now์ ๋ฐฐํฌํ๊ณ ๋น ๋ฅธ ์ฝ๋ ๋ถํ ์ ์ํด ์ด๋ฏธ์ง๋ฅผ ์๊ฒ ์ ์งํ๋ ค๋ฉด Package Phobia์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ค์นํ๊ธฐ ์ ์ npm ์ข ์์ฑ์ ํฌ๊ธฐ๋ฅผ ํ์ธํ๊ฑฐ๋ ํ์ฌ ์ข ์์ฑ์ ํฌ๊ธฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ํฝ์ฐฝ์ ์ค์ด๊ธฐ ์ํด).
readme์๋ ๋ํ ํฝ์ฐฝ๊ณผ ์ธ์ฐ๋ ๋ฐ ๋์์ด ๋๋ ์ ์ฌํ ๋๊ตฌ๊ฐ ๋ง์ด ์์ต๋๋ค. ์ฌ๊ธฐ์์ ํ์ธํ์ญ์์ค: https://github.com/styfle/packagephobia
์ด๊ฒ์ ๋ค์ 7 ๋ฆด๋ฆฌ์ค์์ ํด๊ฒฐ๋์ด์ผ ํ์ง ์์์ต๋๊น? :(
์ง๊ธ zeit์ ๋ฐฐํฌํ๊ณ ๋น ๋ฅธ ์ฝ๋ ๋ถํ ์ ์ํด ์ด๋ฏธ์ง๋ฅผ ์๊ฒ ์ ์งํ๋ ค๋ฉด Package Phobia์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋น์ด๋จน์ ๊ฐ๋ฏธ: https://packagephobia.now.sh/result?p=antd
@Enalmada ์๋ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฒด๊ฐ ์๋๋ผ ์ฑ ์์ด ์๋ antd์ ์ข ์์ฑ์ผ ๊ฒ์ ๋๋ค. ๋๋ https://packagephobia.now.sh/result?p=%40material-ui%2Fcore ์ ๋ํด ์กฐ์ฌํ๊ณ
์ด๊ฒ์ ๋ค์ 7 ๋ฆด๋ฆฌ์ค์์ ํด๊ฒฐ๋์ด์ผ ํ์ง ์์์ต๋๊น? :(
์ด ์ ์ ๋ช ํํ ํ๊ธฐ ์ํด Next.js 7์ Serverless Next.js์ ๊ธฐ๋ฐ์ ๋ง๋ จํ๊ณ ์ฝ 5๊ฐ์ ๊ฒฝ๋ก๋ฅผ ์ ๊ฑฐํ๊ณ ์ค์ ๋ก ํ๋ก๋์ ์ ํ์ํ ๊ฒฝ๋ก๋ 2๊ฐ๋ง ๋จ๊น๋๋ค.
๋กค์
์์
์ ์ํด next.js๋ฅผ ์ฌ์ฉํด๋ณธ ์ฌ๋์ด ์์ต๋๊น? ์์ฃผ ๊ฐ๊น์์ง ๊ฒ ๊ฐ์์... 60m dist ํ์ผ์์ ๋กค์
์ ์คํํ๋ฉด ํฌ๊ธฐ๊ฐ 6m๋ก ์ค์ด๋ญ๋๋ค. ๋ถํํ๋ dist ํ์ผ์ ์ค์ ๋ก ์์๋์ง ์์ผ๋ฉฐ ๋กค์
์ค ๊ฒฝ๊ณ ์ธ next.js ์ฝ๋์ ๋จ์ผ ์ํ ์ข
์์ฑ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ next.js ์ฝ๋์์ ์ํ ์ข
์์ฑ์ ์ ๊ฑฐํ ๊ฐ๋ฅ์ฑ์ ๋ํด ํ๊ฐํ ์ ์๋ค๋ฉด ์ฐ๋ฆฌ ๋ชจ๋๋ ํจ์ฌ ๋ ์์ ๋น๋์ ๋ ๋น ๋ฅธ ๋ถํ
์ ๋งค์ฐ ๊ฐ๊น์ธ ๊ฒ์
๋๋ค.
https://github.com/zeit/next.js/issues/5392
์ด๊ฒ์ ๋ฐ์ ํ๊ฒ ๋ฐ๋ฆ ๋๋ค. ๊ฐ๋ฅํ ๊ฒ์ ๋ํ ๋ฐ์ดํฐ ํฌ์ธํธ๋ก์ www.bustle.com ์ <1s ์ฝ๋ ์คํํธ๊ฐ ์๋ AWS Lambda์ SSR preact ์ฑ์ ๋๋ค. ๋ฐฐํฌ๋ ์ ์ฒด ํ๋ก๋์ zip ํ์ผ์ 166kb์ ๋๋ค. ์ด๊ฒ์ด ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋์ ๋๋ค. Webpack์ ๋ฒ๋ค๋ง์ ์ฌ์ฉ๋ฉ๋๋ค.
@southpolesteve ์นํฉ ๋ฒ๋ค ๊ตฌ์ฑ์ ๋ํด ๋ฌด์์ด๋ ๊ณต์ ํ ์ ์์ต๋๊น?
@shauns ๋ถํํ๋, ์ ๋ ๋ ์ด์ Bustle์ ์์ง ์์ผ๋ฉฐ ๋ ์ด์ ๋ณผ ์ฝ๋๊ฐ ์์ต๋๋ค
@southpolesteve ๊ฑฑ์ ๋ง์ธ์! ์ ์ด๋ webpack์์ ๊ทธ ์์น๋ฅผ ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ค์ ์๋ฒ์ ๋ํ ์์์ด ์์ต๋๊น? ๋๋ ์ด๋ฒ ๋ฌ์ ๋ช ๊ฐ์ง ์ปค๋ฐ์ ๋ณด์๋ค.
์นด๋๋ฆฌ์ ๋ถ๊ธฐ๋ฅผ ํ์ธํ์ญ์์ค.
์ธ์ ์ถ์ํ ์์ ์ธ๊ฐ์?
ํ์ฌ ํ์๋ผ์ธ์ ๊ณต์ ํ ์ ์์ต๋๋ค.
์ด ์ค๋ฅ๋ฅผ ์ํํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
https://spectrum.chat/zeit/general/unable-to-import-module-now-launcher-error~2662f0ba-4186-402f-b1db-2e3c43d8689a
๋ฐฉ๊ธ ์ฐฉ๋ฅ #5927
@timneutkens next
๋ฅผ devDependencies๋ก ์ด๋ํ๊ณ next-server
๋ฅผ ๋ด ์ข
์์ฑ์ ์ถ๊ฐํด์ผ ํ๋์? ์๋๋ฉด babel์ ํตํด ์๋์ผ๋ก ์ํํ๋์?
https://github.com/zeit/next.js/blob/canary/packages/next/build/babel/plugins/next-to-next-server.ts
@Skaronator #5927์ ์ฌ์ฉํ์ฌ ๊ตฌํํ๋ ๊ฒฝ์ฐ ๋ ๋ค ์๋๋๋ค. ์ฌ์์ ๋ฐ๋ผ ํ์ด์ง๋น ํ๋์ ๋ฒ๋ค์ ์ถ๋ ฅํ๋ฏ๋ก ์ข
์์ฑ์ด ํ์ํ์ง ์์ต๋๋ค. ์ฆ, .next/serverless/index.js
์๊ตฌ( require('./.next/serverless/index.js')
)ํ ๋ค์ render
๋ฉ์๋๋ผ๊ณ ๋ถ๋ฅผ ์ ์์ต๋๋ค.
const page = require('./.next/serverless/index.js')
page.render(req, res)
๊ทธ๋ฌ๋ฉด ํ์ด์ง๊ฐ ๋ ๋๋ง๋๊ณ ์๋ต์ด ์๋ฃ๋ฉ๋๋ค.
๊ต์ฅํด!
๋๋ ์ด๊ฒ์ ์๋ํ๊ณ ์์ง๋ง aws ๋๋ค์์ ์๋ํ๋๋ก ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋๊ตฌ๋ ์ง ํ์ด ์์ต๋๊น?
์ปค์คํ ์ต์คํ๋ ์ค ์๋ฒ๊ฐ ๋ ์ด์ ํ์ํ์ง ์์ ๊ฒ ๊ฐ์์. ๊ฒฝ๋ก์ ๋ฐ๋ผ ์๋ฒ๋ฆฌ์ค ํ์ผ๋ง ์์ผ๋ฉด ๋ฉ๋๋ค ๐ค
ํธ์งํ๋ค
์ด๊ฒ์ ์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๋น๋ ๋จ๊ณ๋ฅผ ์ต์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ณด๋ ค๋ฉด ๋ ๊น์ด ํ๊ณ ๋ค ํ์๊ฐ ์์ต๋๋ค.
const serverless = require("serverless-http");
const http = require('http');
const app = require('./.next/serverless/index.js');
const server = new http.Server((req, res) => app.render(req, res))
app.prepare().then(() => {
const handler = serverless(server, {
binary: binaryMimeTypes
});
return handler(event, context, callback);
});
"์ปค์คํ
์๋ฒ"์ "์๋ฒ๋ฆฌ์ค"๋ฅผ ํผ๋ํ๊ณ ๊ณ์ ๊ฒ ๊ฐ์ต๋๋ค. ํด๋น API๋ ์์ ํ ๋ถ๋ฆฌ๋์ด ์์ผ๋ฉฐ ์๋ฒ๋ฆฌ์ค์๋ .prepare
๋ฉ์๋๊ฐ ์์ต๋๋ค. ์ค๋นํ ๊ฒ์ด ์์ผ๋ฏ๋ก ์ฆ์ ํ์ด์ง๋ฅผ html๋ก ๋ ๋๋งํ๊ณ ์๋ฃํฉ๋๋ค. render
ํธ์ถ ์ ์๋ต.
const serverless = require("serverless-http");
const http = require('http');
const page = require('./.next/serverless/index.js');
const server = new http.Server((req, res) => page.render(req, res))
const handler = serverless(server, {
binary: binaryMimeTypes
});
handler(event, context, callback);
์ฌ์ค, ๊ทธ๋ฆฌ๊ณ ์์ ์ฝ๋๊ฐ ์ ์๋ํ๋์ง(์ด์ฉ๋ฉด ๋จ์ง ์บ์์์ ์๋ ์์) ๊ทธ๋ฌ๋ serverless-http
๊ฐ http.Server
๋ฅผ ์ง์ํ์ง ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ๋์ ๊ทํ์ ์ฝ๋ ์ค ์ด๋ ๊ฒ๋ ์๋ํ์ง ์์์ต๋๋ค. ๋๋ค event
๊ฐ์ฒด๊ฐ ํ์ํ ๋ ๋๋ง req
๋งค๊ฐ๋ณ์๋ฅผ ๋์ฒดํ ์ ์๊ธฐ ๋๋ฌธ์ page.render(req, res)
๋ฐํํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ด ํํ ๋ํ, ๋ด๊ฐ ์ํ๋ํ์ง ์์ต๋๋ค / KOA /๋์ด ๋ค์ ์ ๊ธฐ๋ฅ์ ์ ์ฒด ๋ชฉ์ ์ .. ํด์ ๋๋ฌธ์ (์ด๋ค serverless-http
๊ทธ๊ฒ์ ์ฌ์ฉ์ ๊ด์ฐฎ๋ค๊ณ ๊ทธ๋์ dependencie ๋ฌด๋ฃ์
๋๋ค)
๋๋ ์์ด๋์ด๊ฐ ์๋ค :/
์๋ง๋ ์ด๊ฒ์ @guillaumebreux https://github.com/zeit/now-builders/blob/master/packages/now-node-bridge/bridge.js์ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
@timneutkens ๊ฐ์ฌํฉ๋๋ค. ๋์์ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
ํ์ง๋ง ์ง๊ธ์ ์๋ํ์ง ์์ต๋๋ค. ์ฌ์ ํ ๋ค์ ์ค๋ฅ๊ฐ ์์ต๋๋ค. typeError: Parameter "url" must be a string, not undefined
์ด ์ค๋ ๋๋ฅผ ์ค์ผ์ํค๋ ๊ฒ์ ๋ฉ์ถ๊ณ ๊ณ์ ํ๊ณ ๋ค๋ฉฐ ํด๊ฒฐ์ฑ ์ ์ฐพ์ผ๋ฉด ์์ ๋ฅผ ์์ฑํ๊ฒ ์ต๋๋ค ๐
๋๋ ์ฝ๊ฐ ๋ถ๋ถ๋ช ํ๋ค. ์ด ์ค๋ ๋๋ ์๋ฒ๊ฐ ์๋ ์ฑ๊ณผ ํ์ํ ๋ชจ๋ ์๋ฒ ์ธก npm ํจํค์ง๋ฅผ ํจ๊ป ์นํฉ์ผ๋ก ํฌํจํ๋ ์ฌ์ ์ปดํ์ผ๋ ์๋ฒ์ ๋ ๊ฐ์ง ์๋๋ฆฌ์ค์ ์ ์ฉ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
์ด ์ค๋ ๋์ ์ฒซ ๋ฒ์งธ ๋๊ธ์ ์๋ gif๋ ๋ด๊ฐ ๊ด์ฌ ์๋ ์๋๋ฆฌ์ค์ธ ํ์์ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค. ์ด npm ํจํค์ง ์ผ ์๋ ์๊ณ ์๋ ์๋ ์๋ next-server
ํ๋ ๊ฒ ๊ฐ์ต๋๋ค . ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์ฐ๊ฒฐ๋์ด ์์ง ์์ผ๋ฉฐ ๋ฒ์ ํ๊ทธ ์ค ํ๋๊ฐ 8.0.0-canary.7(๋ค์ ๋ฒ์ ํ๊ทธ)์ด์ง๋ง Google์ด๋ GitHub ๊ฒ์์ ํตํด ์ฐพ์ ์ ์์์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ํจํค์ง.
๋ด๊ฐ ์ง๊ธ๊น์ง ์ด ๊ฒ์ด ์ ํํฉ๋๊น? ๊ทธ๋ ๋ค๋ฉด ์นด๋๋ฆฌ์์ ์๋๋ผ๋ ์กฐ๊ธฐ์ ์ก์ธ์คํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋ด ํ์ฌ ์๋ฃจ์
(๋ช
๋ฐฑํ ์ด์ ๋ก in prod ์์ ์ฌ์ฉํ์ง ์์ )์ next.config.js
config.externals
์์ ํจ์๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์
๋๋ค. ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ดํดํ ์ ์๋ ์ด์ ๋ก ํด๋ผ์ด์ธํธ ์ธก์์ ์คํ์ผ์ด ๋ฆ๊ฒ ๋ก๋๋์ด ๋ชจ๋ ํ์ด์ง ๋ก๋์์ 0.5์ด ๋์ ์คํ์ผ์ด ์ง์ ๋์ง ์์ ํ์ด์ง๊ฐ ์์ฑ๋ฉ๋๋ค. (๋ด ์ง๊ฐ์ ์ ํํ ํ
๋ง์ ๋ฐ๋ผ ๋ค๋ฅธ ์คํ์ผ ์ํธ๋ฅผ ๋ก๋ํ๋ ํ
๋ง ์ปจํ
์คํธ๊ฐ ์๊ณ ์๋ฒ๊ฐ ๊ณตํต ๊ณต๊ธ์
์ฒด ๋ฒ๋ค์ ๋ง๋ค๊ธฐ ์ํด ์ฝ๋ ๋ถํ ์ด ์ ๋์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค.)
๋๋ node_modules 200MB์๋ฅผ ์ค์น ํ ๋ค์ ๋ด ๊ฐ๋ํ, ์์ ์์ฐ VM ๋ด๊ฐ ์ ๋ฐ์ด ํธ๋ฅผ ๋ฐ์ด๋ง๋ค์ ์ปดํ์ผ ์ด๋ถ์ ๋ณด๋ผ ํ์๊ฐ ์๋๋ก ๋ฏธ๋ฆฌ ๋น๋ ๋ ์๋ฒ๋ฅผ ์์ฐํ ์์์ ์ถ์ด์.
* "prod"๋ ์ด ํ๋ก์ ํธ๊ฐ ๋ฏธ์ ํฌ๋ฆฌํฐ์ปฌํ๊ฑฐ๋ ๊ทธ๋ค์ง ์ ๋ฌธ์ ์ด์ง ์๊ธฐ ๋๋ฌธ์ ๋์จํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
์ด๊ฒ์ ๋ฐ์ ํ๊ฒ ๋ฐ๋ฆ ๋๋ค. ๊ฐ๋ฅํ ๊ฒ์ ๋ํ ๋ฐ์ดํฐ ํฌ์ธํธ๋ก์ www.bustle.com ์ <1s ์ฝ๋ ์คํํธ๊ฐ ์๋ AWS Lambda์ SSR preact ์ฑ์ ๋๋ค. ๋ฐฐํฌ๋ ์ ์ฒด ํ๋ก๋์ zip ํ์ผ์ 166kb์ ๋๋ค. ์ด๊ฒ์ด ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋์ ๋๋ค. Webpack์ ๋ฒ๋ค๋ง์ ์ฌ์ฉ๋ฉ๋๋ค.
Next.js 8 ์๋ฒ๋ฆฌ์ค ํ๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก 42Kb์ zip ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ต์ฅํด! ๊ธฐ๋๋ฉ๋๋ค!
@dfoverdx์ ์ ํํ ๊ฐ์ ์ง๋ฌธ์ด ์์ต๋๋ค. ์คํ์ ํ์ํ ๋ชจ๋ node_modules๋ ํฌํจํ๋ ์๋ฒ ๋น๋๋ฅผ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ๋๋ Express์ ํจ๊ป ์ฌ์ฉ์ ์ ์ ์๋ฒ๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ํด๋น ์ข ์์ฑ์ด ํจํค์ง์ ํฌํจ๋ ๊ฒ์ผ๋ก ๊ธฐ๋ํ์ง ์์ง๋ง ์ด์ ์๋ฒ์ _all_ ์ข ์์ฑ๋ ์ค์นํด์ผ ํฉ๋๋ค(react, next, axios, ...).
์ด๊ฒ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ป๊ฒ ์ค์ ๋์ด ์์ง ์์์ง ์ดํด๊ฐ ๋์ง ์์ต๋๊น?
๋ชจ๋ ์ข
์์ฑ์ ํจํค์งํ๊ณ ์ต์ํํ ์ ์์ผ๋ฉด ์๋ฒ ์ธก ์ฑ๋ฅ์ด ํฌ๊ฒ ํฅ์๋์ด์ผ ํฉ๋๊น? ์๋๋ฉด ์ ๊ฐ ์์ ํ ํ๋ ธ์ต๋๊น?
๋ค์๊ณผ ๊ฐ์ด webpack ๊ตฌ์ฑ์ externals
์น์
์ ๋ฎ์ด์ฐ๋ฉด ๋๋ถ๋ถ์ ์ข
์์ฑ์ด ํฌํจ๋ฉ๋๋ค.
module.exports = {
webpack: (config, { dev }) => {
config.externals = [];
return config;
})
};
๊ทธ๋ฌ๋ ์๋ฒ์๋ ์ฌ์ ํ react ๋ฐ react-dom์ด ํ์ํฉ๋๋ค. ๊ทธ๊ฒ๋ค๋ ํฌํจ์ํค๋ ๋ฐฉ๋ฒ์ ์ ์ ์์ต๋๋ค ...
๋ถํํ๋ ํ์ฌ ์๋ฒ๋ฆฌ์ค ๋ชจ๋๋ก ์ฌ์ฉ์ ์ ์ ์๋ฒ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ .next์์ ์์ฑ๋ _app.js๊ฐ ์๋ฅผ ๋ค์ด next/router์ ์์กดํ๊ธฐ ๋๋ฌธ์ ๋ค์ ๋ฐ ๋ชจ๋ ์ข ์์ฑ์ ํฌํจํด์ผ ํฉ๋๋ค.
๋น์๋ฒ๋ฆฌ์ค ๋ชจ๋๋ ๋ค์์ ๋ฒ๋ค๋ก ์ ๊ณต๋์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋ถํํ๋ ํ์ฌ ์๋ฒ๋ฆฌ์ค ๋ชจ๋๋ก ์ฌ์ฉ์ ์ ์ ์๋ฒ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ .next์์ ์์ฑ๋ _app.js๊ฐ ์๋ฅผ ๋ค์ด next/router์ ์์กดํ๊ธฐ ๋๋ฌธ์ ๋ค์ ๋ฐ ๋ชจ๋ ์ข ์์ฑ์ ํฌํจํด์ผ ํฉ๋๋ค.
๋ค์ 8๋ถํฐ๋ server.js์์ 'next' ๋์ 'next-server'๋ฅผ ์๊ตฌํ ์ ์์ผ๋ฉฐ ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ก์ปฌ ๊ฐ๋ฐ ์ค์๋ง ํซ ๋ฆฌ๋ก๋ฉ์ ์๊ฒ ๋ฉ๋๋ค. ์ด๋ก ์ ์ผ๋ก ์ค๊ฐ ์๋ฒ์์ CI ๋น๋๋ฅผ ์ํํ๊ณ Webpack ๊ด๋ จ ์ข ์์ฑ์ ํ๋ก๋์ ์ธ์คํด์ค์ ๋ณต์ฌํ์ง ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์์ง ์ฐ๋ฆฌ ํ๋ก์ ํธ์์ ๊ทธ๊ฒ์ ์๋ํ์ง ์์์ต๋๋ค.
@ElvenMonky ๋ 1๋ ์ ๋ถํฐ ์ด์ ๊ฐ์ ๊ฒ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ง๋ง ๋ฌธ์๋ ์์ ์์ ์ด์ ๋ํ ๋ด์ฉ์ ์ฐพ์ ์ ์์ต๋๋ค.
@timneutkens ์ด๊ฒ์ ํ์ธํด ์ฃผ ์๊ฒ ์ต๋๊น?
๊ทธ๋ ๋ค๋ฉด ๊ทธ๋ฌํ ์ค์ ์ ์คํํ๊ณ ๋ฌธ์/์์ ์ ๋ํ PR์ ๋ณด๋ผ ์ ์์ต๋๋ค.
๋ค์ 8๋ถํฐ๋ server.js์์ 'next' ๋์ 'next-server'๋ฅผ ์๊ตฌํ ์ ์์ผ๋ฉฐ ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ก์ปฌ ๊ฐ๋ฐ ์ค์๋ง ํซ ๋ฆฌ๋ก๋ฉ์ ์๊ฒ ๋ฉ๋๋ค.
๋ถํํ๋ ์ด๊ฒ์ ์๋ํ์ง ์์ต๋๋ค.
๋จผ์ ์๋ฒ ๋์์ผ๋ก ์คํ ์ค์ธ ์๋ฒ๋ฆฌ์ค ๋น๋๋ "๋์์ด ์๋ฒ๊ฐ ์๋ ๋ ์๋ฒ๋ฅผ ์์ํ ์ ์์ต๋๋ค. https://err.sh/zeit/next.js/next-start-serverless " ๋ฉ์์ง์ ํจ๊ป ๋ฅ๋์ ์ผ๋ก ์ฐจ๋จ๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ผ๋ฐ ๋น๋๋ฅผ ์ํํ๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฒฝ์ฐ ๋น๋ ํ์ผ์ next
ํจํค์ง์ ํญ๋ชฉ์ ์ง์ ์ฐธ์กฐํฉ๋๋ค(์ next/router
์๋ฒ ์ธก ์ปดํ์ผ๋ _app.js ํ์ผ์ next
๋ฐ webpack
์ด์จ๋ ํ๋ก๋์
๋น๋์ ์์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
@ElvenMonky
๋ค์ 8๋ถํฐ๋ server.js์์ 'next' ๋์ 'next-server'๋ฅผ ์๊ตฌํ ์ ์์ผ๋ฉฐ ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ก์ปฌ ๊ฐ๋ฐ ์ค์๋ง ํซ ๋ฆฌ๋ก๋ฉ์ ์๊ฒ ๋ฉ๋๋ค.
๋ค์์ ์ฌ๊ธฐ์์ ๋ณผ ์ ์๋ฏ์ด ๋ด๋ถ์ ์ผ๋ก Babel ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ํํ๋ ๊ฒ์
๋๋ค.
https://github.com/zeit/next.js/blob/709850154754278d2fc86b987eebe1b3f0565255/packages/next/build/babel/plugins/commonjs.ts#L5 -L32
@sheerun #7011์์๋ ์ธ๊ธํ๋ฏ์ด next-transpile-modules
ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์ฌ next
๋ชจ๋์ ํธ๋์คํ์ผํ๋ฉด ํด๊ฒฐ๋์ง ์์ next/router
์ข
์์ฑ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
์๋ฃจ์ ์ ์ค๋ช ํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ง์ ์ต์คํ๋ ์ค ์๋ฒ์ ๋ํ ์์ ๋ฅผ ๋ถ๊ธฐํ๊ณ ์กฐ์ ํ์ต๋๋ค. https://github.com/ElvenMonky/next.js/tree/custom-next-server-express/examples/custom-server-express
์ถ์ : ๋ด ์ ํ๋ฆฌ์ผ์ด์
์ด ๋์ ๊ฒฝ๋ก์ ์ ์ ์ฝํ
์ธ ์ ๊ณต์ ๋ฌผ๋ก ์ด๊ณ TODO์ ๋์ด๋ ๋ชจ๋ ํญ๋ชฉ์ด ํ์ํ๋ค๋ ์ฌ์ค์ ์๊ด์์ด #5927์ ๋ํด ์ฌ์ ํ ๋งค์ฐ ํฅ๋ถํ๊ณ ์์ต๋๋ค.
์ข์ ์์์ ์์ ์๋ฃจ์
์ด https://www.npmjs.com/package/next-serverless ์ฌ์ฉ์ ์ง์ ์๋ฒ ์ค์ ๊ณผ ์ ์๋ํ์ฌ ์์ ์ธ๊ธํ ์ ํ ์์ด ์๋ฅผ ๋ค์ด AWS Lambda์ ๋ค์์ผ๋ก ๋ฐฐํฌํ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
๋ค์ 8๋ถํฐ๋ server.js์์ 'next' ๋์ 'next-server'๋ฅผ ์๊ตฌํ ์ ์์ผ๋ฉฐ ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ก์ปฌ ๊ฐ๋ฐ ์ค์๋ง ํซ ๋ฆฌ๋ก๋ฉ์ ์๊ฒ ๋ฉ๋๋ค.
์ด ์กฐ์ธ์ ์ฌ์ฉํ์ง๋ง ๋ถํํ๋ next
๊ฐ ํ์ํ next/config
๊ฐ ํ์ํ ๋ฐํ์ ๊ตฌ์ฑ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด์ ๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง require('next/config')
๋ ๋ค์ ๋ฒ์ 8.0.3์ node_modules์ next
์ค์น๋์ง ์์ ์ํ์์ ํ๋ก๋์
์์ ์๋ํ์ง๋ง ๋ค์ ๋ฒ์ 8.1.0์์๋ ์๋ํ์ง ์์ต๋๋ค.
๋ค์/๊ตฌ์ฑ์ next-runtime-config
์ ๊ฐ์ ๋ค๋ฅธ ํจํค์ง๋ก ์ด๋ํ ์ ์์ต๋๊น?
๋๋ next-runtime-vars
(next.config.js์ ํผ๋์ ํผํ๊ธฐ ์ํด config๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ์ง ์์).
ํ์ฉ๋๋ ๊ฒฝ์ฐ ์๋ ค์ฃผ์๋ฉด PR์ ์์ฑํ๊ฒ ์ต๋๋ค.
์๋ ๋ชจ๋๋ค! ์ด ๋ฌธ์ ๋ Next.js 8๋ถํฐ ๊ตฌํ๋์์ผ๋ฉฐ Next.js 9์์๋ ์ฌ์ ํ ์กด์ฌํฉ๋๋ค. ์๋ฃ๋๋ฉด ์ด ๋ฌธ์ ๋ฅผ ๋ซ๊ฒ ์ต๋๋ค. ๐
์ฃ์กํฉ๋๋ค. ์ด ๋ฌธ์ ์ ํผ๋ํ์ต๋๋ค: https://github.com/zeit/next.js/issues/7011
๋์์ ํ์ธํ์ง ์์์ต๋๋ค: "์๋ฒ๋ฆฌ์ค"
์ญ์ ๋ ๋๊ธ ๋ณด๊ธฐ
์ผ๋ถ "next/*"
๋ ๋ค์๊ณผ ๊ฐ์ด "next-server/*"
๋ก ๋์ฒด๋ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด ๋ฌธ์ ์ OP์์ ์ธ๊ธํ ์ด๋ฌํ ์ต์ ํ์ ๋ํ ์ง์์ด ์๋ ๋ช ๊ฐ์ง๊ฐ ์์ต๋๋ค.
์๋ฒ(AKAIK)์์๋ ์ธ๋ผ์ธ๋๋ฏ๋ก ํ์ํ์ง ์์ต๋๋ค.
์๋ ๋ชจ๋๋ค! ์ด ๋ฌธ์ ๋ Next.js 8๋ถํฐ ๊ตฌํ๋์์ผ๋ฉฐ Next.js 9์์๋ ์ฌ์ ํ ์กด์ฌํฉ๋๋ค. ์๋ฃ๋๋ฉด ์ด ๋ฌธ์ ๋ฅผ ๋ซ๊ฒ ์ต๋๋ค.
์๋ ํ์ธ์ @Timer - ๋น์ ์ servless ๋์์ ๋งํ๋ ๊ฒ์ ๋๊น, ์๋๋ฉด 'next'๋ฅผ 'next-server'๋ก ๋ฐ๊พธ๋ ๊ฒ์ ๋๊น?
next๋ฅผ ๋ค์ ์๋ฒ๋ก ๊ต์ฒดํ๋ฉด packages.json ์ข ์์ฑ๋ ์ ๋ฐ์ดํธ๋์ง ์๋ ํ node_modules ํด๋ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ๋ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ ์๊ฐ ์์ต๋๊น? ์๋ฒ๋ฆฌ์ค ์ฌ์ฉ ์ฌ๋ก๋ AWS Lambda์ ๋ฐฐํฌํ๋ ๊ฒ์ ๋๋ค.
์ด๊ธฐ ๋ฌธ์ ์ ์ค๋ช
๋ ์ ๊ทผ ๋ฐฉ์์ serverless
๋์์ผ๋ก ๋ฐ์ ํ์ผ๋ฏ๋ก ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@timneutkens serverless
๋์์ ๋์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์ ์ง์ ์๋ฒ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ์์ผ๋ฉฐ ํด๊ฒฐํ ์๋ ์์ต๋๋ค. #5927 ๋์ ์ผ๋ก ์์ฑ๋ ํ์ด์ง, ์์ฐ ์ ๋์ฌ, ์ฌ์ฉ์ ์ง์ _app, _document ๋ฐ _err: ๊ธฐ๋ณธ์ ์ผ๋ก TODO ๋ชฉ๋ก์ ๋ช
์๋ ๋ชจ๋ ๊ฒ์ ์ฌ์ฉํด์ผ ํ๋ ์ ๊ฒฝ์ฐ์ ๊ฐ์ด ์ค์ ๋น์ฆ๋์ค ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ์๋ฃจ์
์ด ์๋๋๋ค.
next-server
๋ webpack ๋ฐ babel๊ณผ ๊ฐ์ ์ด์ํ ๊ฐ๋ฐ ์ ์ฉ ์ข
์์ฑ ์์ด ํ๋ก๋์
์ ๋ฐฐํฌํ ์ ์๋ ๋ถ๋ถ ์๋ฃจ์
์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์์ ๋
ผ์ํ๋ ๋ช ๊ฐ์ง ํต๊ณผ woodoo ์ถค์ผ๋ก ์ํํ ์ ์์ต๋๋ค.
๋๋ ๋น์ ์ด ์ด ์ฐจ์ด์ ์ ์ดํดํ๊ณ ์๋ค๋ ์ธ์์ ๋ฐ์๊ณ @rauchg ๊ฐ ์ค๋ช ํ ๋๋ก ์ด๊ธฐ ๋ฌธ์ ์ ๋ํด ์ธ์ ๊ฐ ๋ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ ๋ณด๊ธฐ๋ฅผ ํฌ๋งํ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํ๋ก ํธ์๋์ฉ Now 2.0์์ ๋ณผ ์ ์๋ ์ฝ๋ ์คํํธ โโ์๊ฐ์ 80mb IIRC์ ์ด๋ฏธ์ง ํฌ๊ธฐ์ ๋ํด 1.5์ด์ ๋๋ค.
Node ๋๋ V8 ๋๋ ์ฝ๋ ํ๊ฐ์ ์๋นํ ์๊ฐ์ด ์์๋๋ ์ข ์์ฑ์ ๋ณ๊ฒฝํ์ง ์๊ณ 1์ ํจ์ฌ ๋ ๊ฐ๊น๊ฒ ๋ง๋๋ ๊ฒ์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค(์
react
๋ฐreact-dom
).