Remix 의 Hello World
Helloworld
npm init -y
npm i @remix-run/node @remix-run/react @remix-run/serve isbot@4 react react-dom
npm i -D @remix-run/dev vite
vite.config.js
생성
// from : https://remix.run/docs/en/main/start/quickstart#vite-config
import { vitePlugin as remix } from "@remix-run/dev";
import { defineConfig } from "vite";
export default defineConfig({
plugins: [remix()],
});
app/root.jsx
생성npx remix vite:build
:<proj_root>\build
에 client, server 가 만들어짐.npx remix-serve build/server/index.js
:package.json
의type: module
이 필요.
package.json
{
"name": "skybridge",
"version": "1.0.0",
"main": "index.js",
"type": "module",
"scripts": {
"build": "remix vite:build",
"serve": "remix-serve build/server/index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"@remix-run/node": "^2.9.2",
"@remix-run/react": "^2.9.2",
"@remix-run/serve": "^2.9.2",
"isbot": "^4.4.0",
"react": "^18.3.1",
"react-dom": "^18.3.1"
},
"devDependencies": {
"@remix-run/dev": "^2.9.2",
"vite": "^5.3.1"
}
}
link tag 추가
모든 route 은 links function 을 export 할 수 있다.
다음과 같은 것으로 보면 된다. <link rel="stylesheet" href="./app.css?url">
import type { LinksFunction } from "@remix-run/node";
import appStylesHref from "./app.css?url";
export const links: LinksFunction = () => [
{ rel: "stylesheet", href: appStylesHref },
];
route 추가
만약 다음과 같은 file 을 만든다면, 브라우저에서 /contacts/<id>
로 갈 때 contact.$contactId.tsx
파일을 호출할 것이다.
/app/routes/contact.$contactId.tsx
templates, stacks
templates, stacks 를 이용하면 쉽게 초기 세팅을 끝낼 수 있다.
template 사용
quick start 에서 처럼 한번 해본 이후엔 그냥 template을 쓰면 된다.
npx create-remix@latest <my_app_name> –template remix-run/remix/templates/remix
entry.{client|server}.tsx
이 파일은 optional 이다. 이 파일이 있다면, 먼저 browser 는 entry.client.tsx
를 호출하고, 그 후 /app/routes/_index.tsx
를 실행한다.
- feat(remix-dev): make
entry.{client,server}.tsx
optional by mcansh · Pull Request #4600 · remix-run/remix - make
entry.server
andentry.client
files optional · remix-run/remix · Discussion #4601
Layout
root.tsx
에 Layout
function 이 있으면 그것이 기본적인 Layout 으로 사용된다.
_index.tsx
보통 아래처럼 default function 을 지정하는데, Index
는 다른 이름으로 바꿔도 문제되지 않는다.
...
export default function Index() {
return (
<div></div>
)
}
접근 순서
- entry.client.tsx
app/root.tsx
의Layout
app/root.tsx
의App
app/routes/_index.tsx
댓글 없음:
댓글 쓰기