๐ก ํ๋ก์ ํธ ํ๊ฒฝ ๋ง๋ค
node -version
์ด ์์ด ํ ์ ์๋ค.
์ด์ ๋ฐ๋ผ ์ฐ๋ฆฌ๋ node version ์ ์์ ๋กญ๊ฒ ๋ฐ๊ฟ ์ ์์ด์ผ ํ๋ค.
์๋ ๋ช ๋ น์ด๋ฅผ terminal ์์ ์คํ
curl -o- [https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh](https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh) | bash
๊ณต์ ํํ์ด์ง: https://github.com/nvm-sh/nvm
vi ~/.zshrc # ํธ์ง๊ธฐ open
## ์ต ํ๋จ์ ์ฝ์
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
source ~/.zshrc
์คํ# version download
nvm install v16
# version use
nvm use v12
๐ก dependency๋ฅผ ํ๊ณณ์์ ๊ด๋ฆฌํ๋ฉด์ ๋์ผ ๋ฒ์ ์ ์ค๋ณต์์ฑ์ด๋ ๊ฐ์ ์ด๋ฆ ๋ค๋ฅธ ๋ฒ์ ์ dependency ์์ฑ์ ํจํค์ง๊ฐ ์ญ์ ๋์๋ค๊ฐ ๋ค๋ฅธ ์์น์ ์๋ก ์์ฑ๋๋ ๋ฑ
๋ถํ์ํ I/O
๊ณผ์ ์ ์์ ์ค๋ค.
npm์ ๋์ฒดํ๊ธฐ ์ํ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ํจํค์ง ๋งค๋์
pnpm์ ํจํค์น๋ฅผ ์ค์น ํ ๋ ์ง์ ์ ์ผ๋ก ์ค์นํ๋ ๋ฐฉ๋ฒ ๋์ ์ฌ๋งํฌ(ํ๋๋งํฌ)๋ฅผ ์ฌ์ฉํ๋ค.
ex) loadsh๋ฅผ ์ฌ์ฉํ๋ ํจํค์ง 100๊ฐ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์์ ๋, npm ์ด๋ yarn ์ ์ฌ์ฉํ ๊ฒฝ์ฐ, ๊ฐ ํด๋๋ณ๋ก ํจํค์ง lodash ํจํค์ง๊ฐ 100๊ฐ ๋ณต์ฌ
but ) pnpm์ lodash๋ฅผ ๋จ ํ๋ฒ ์ค์นํ๊ณ , ๋ค๋ฅธ 100๊ฐ์ ํ๋ก์ ํธ์๋ ์ฌ๋งํฌ๋ก ์ฐ๊ฒฐํ์ฌ, ์ฉ๋ ์ธก๋ฉด์์ ํจ์จ์ ์ผ๋ก ํจํค์ง๋ฅผ ๊ด๋ฆฌ
pnpm, ํ๋ซํ์ง ์์ ํจํค์ง ๋งค๋์
npm init svelte@next my-app
Options :: Skeleton / TypeScript / EsLint, Prettier
routes
โโโ route_a
โ โโโ index.svelte ## ์๋์ผ๋ก index๋ฅผ ์ฐพ์ผ๋ฏ๋ก path๋ ๋ค์๊ณผ ๊ฐ๋ค (url/route_a)
โ โโโ c.svelte ## path: /route_a/c
โโโ index.svelte ## path: /
โโโ route_b.svelte ## path: /route_b
.
**|____lib
| |____Name.svelte**
|____global.d.ts
|____app.html
|____routes
| |____index.svelte
| |____route_a
| | |____index.svelte
| | |____c.svelte
| |____route_b.svelte
| |____route_b
| | |____[id].svelte
src ํด๋ ๋ด์ lib ๋ผ๋ ํด๋๋ฅผ ๋ง๋ค๊ณ Component ๋ฅผ ์ ์ํ๋ค.
import ์์๋ $lib/Name.svelte
๋ฅผ ํตํด import ํ๋ค.
๋ฐ๋ก js(ts)config.json
์์ base url ์ ์ค์ ํด์ฃผ์ง ์์๋ $
๋ฅผ ํตํด์ baseUrl
์ ์ ๊ทผ ํ ์ ์๋ค.
This is a simple alias toย src/lib
, or whatever directory is specified as [config.kit.files.lib
]. It allows you to access common components and utility modules withoutย ../../../../
ย nonsense.
QueryParam
& PathParam
๐ก ํด๋น ๋ด์ฉ์ routes ์
page
์ชฝ์์๋ง ์ฌ์ฉ ํ ์ ์๋ค.
<script context="module">
/** @type {import('@sveltejs/kit').Load} */
export async function load({ url, params }) {
const query = url.searchParams;
const id = params.id;
return {
props: { a: query.get('a'), id }
};
}
</script>
<script>
export let a;
export let id;
</script>
<div>
{a}
{id}
</div>
queryString
๊ฐ์ ๊ฒฝ์ฐ url.searchParams
๋ฅผ ์ด์ฉํ์ฌ ์ ์ฒด query๋ฅผ ๊ธ์ด์ค๊ณ props: { a: query.get(โaโ) }
๋ฅผ ํตํด์ .....url?a=123123
์ a์ชฝ value๋ฅผ ๊ฐ์ง๊ณ ์จ๋ค.[pathparam].svelte
๋ก ๋์ด ์์ด์ผ ํ๋ค.[params.id](http://params.id)
๋ฅผ ํตํด์ ํ์ฌ path๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ค๋ฒจํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ React ์์ ์ฐ๋ฆฌ๊ฐ ๋ฐ๋ก ์ค์น๋ ์ค์ ํด์ฃผ์ด์ผ ํ๋ ๋ถ๋ถ์ ์กฐ๊ธ ๊ฐ์ํ ํ ๋๋์ด ๋ ๋ค.
์ด๋ฏธ ์ฌ์ฉ์๊ฐ ์ด๋ ํ๊ฒ ํ์ํ์ง ์๊ณ ์๊ณ , ๊ทธ ๊ฒ์ ๋ฐ๋ผ์ ์ค๊ณํ ๋๋์ด ๋ ๋ค.