최소한의 UI를 갖춘 오늘의 Svelte 앱!
7459 단어 javascriptvercelsveltebeginners
시작하기
다음 명령을 사용하여 로컬 디렉터리 내에 새 svelte 프로젝트를 만듭니다.
# Creating a new project
npx degit sveltejs/template
# Install the dependencies...
npm install
...그런 다음 롤업을 시작합니다.
npm run dev
localhost:8080으로 이동합니다. 앱이 실행되는 것을 볼 수 있습니다. src에서 구성 요소 파일을 편집하고 저장한 다음 페이지를 새로고침하여 변경 사항을 확인하세요.
부트스트랩 추가
다음 방법 중 하나를 사용하여 Sveltstrap을 추가합니다.
# Method One: Install sveltestrap and peer dependencies via NPM
npm install sveltestrap
# Method Two: Include CDN within Static HTML layout
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
</head>
폴더 구조
루트 수준에서 다음 파일을 생성합니다.
API에서 데이터 추출
API.js로 이동하고 다음 코드를 추가하여
getJodeData
함수를 사용하여 API에서 데이터를 가져옵니다.export const getJokeData = async () => {
const response = await fetch('https://icanhazdadjoke.com', {
headers: {
Accept: 'application/json',
},
});
const json = await response.json();
return json.joke;
};
구성 요소 만들기
이 프로젝트에는 두 가지 구성 요소가 있는데 하나는 애니메이션용이고 다른 하나는 농담 텍스트를 표시하기 위한 것입니다.
이제
Joke.svelte
파일에 다음 코드를 추가합니다.<script>
import { Card } from "sveltestrap";
export let joke;
</script>
<style>
:global(.joke-text){
font-family: 'Montserrat', sans-serif;
font-weight: bold;
text-align: center;
}
</style>
<Card class="joke-text" body>{joke}</Card>
그리고
Transition.svelte
파일 내에 fly 전환을 생성합니다.<script>
import { fly } from "svelte/transition";
export let duration = 1000;
export let distance = 200;
</script>
<div in:fly={{ y: distance, duration }} out:fly={{ x: distance, distance }}>
<slot />
</div>
App.Svelte 완성
우리의
App.Svelte
구조는 이제 다음과 같아야 합니다.<script>
// JavaScript Logic
</script>
<style>
// CSS Styles
</style>
<main>
// HTML Markup
</main>
이제 sveltestrap에서 스크립트로 다음 부트스트랩 구성 요소를 가져와야 합니다.
import { Col, Container, Row, Button} from "sveltestrap";
다음으로 방금 정의한 다음 구성 요소를 사용하여 컨테이너를 만들 수 있습니다.
<Container class="joke-container">
<Row>
<Col>
<h1>The Best Dad Jokes!</h1>
</Col>
</Row>
<Row>
<Col>
<Button class="random-joke" color="danger">
Random Joke
</Button>
</Col>
</Row>
</Container>
이것은 앱의 재미있는 부분이므로 컨테이너의 스타일을 지정해 보겠습니다.
<style>
:global(.random-joke) {
width: 100%;
}
:global(h1){
color: white;
}
:global(.row) {
margin-top: 10px;
padding: 10px;
}
:global(.joke-container){
border-radius: 10px;
background-color: #00092C;
}
</style>
그런 다음 네트워크를 통해 Joke 데이터를 로드하기 위해 onMount을 사용하여 방금 생성한 다음 구성 요소를 가져오도록 App.svelte를 수정해야 합니다.
<script>
import { onMount } from "svelte";
import { Col, Container, Row, Button} from "sveltestrap";
import { getJokeData } from "./api.js";
import Transition from "./transition.svelte";
import Joke from "./joke.svelte";
</script>
API의 get 요청으로 onMount 핸들러를 생성하고 App.Svelte 파일을 완성해 봅시다.
<script>
import { onMount } from "svelte";
import { Col, Container, Row, Button} from "sveltestrap";
import { getJokeData } from "./api/api.js";
import Transition from "./components/transition.svelte";
import Joke from "./components/joke.svelte";
let randomJoke;
let jokes = [];
let mode = "loading";
onMount(async () => {
await onRandomJoke();
});
async function onRandomJoke() {
try {
mode = "loading";
await sleep(500);
randomJoke = await getJokeData();
await sleep(500);
mode = "random";
} catch (e) {
alert("Oops! You've Encountered An Error.");
}
}
const sleep = delayMS => new Promise(res => setTimeout(res, delayMS));
</script>
<style>
:global(.random-joke) {
width: 100%;
}
:global(h1){
color: white;
}
:global(.row) {
margin-top: 10px;
padding: 10px;
}
:global(.joke-container){
border-radius: 10px;
background-color: #00092C;
}
</style>
<Container class="joke-container">
<Row>
<Col>
<h1>The Best Dad Jokes!</h1>
</Col>
</Row>
<Row>
<Col>
<Button on:click={onRandomJoke} class="random-joke" color="danger">
Random Joke
</Button>
</Col>
</Row>
{#if mode === 'random'}
<Transition>
<Row>
<Col>
<Joke joke={randomJoke}/>
</Col>
</Row>
</Transition>
{/if}
</Container>
배포: 🤯
Svelte 프로젝트를 모든 호스팅 플랫폼에 배포할 수 있습니다. 개인적으로 내 git 저장소를 가져와 이 애플리케이션을 Vercel에 배포하도록 선택했습니다. 배포에 문제가 있는 경우 해당 제품docs을 확인하는 것이 좋습니다.
Check It Out! 🔥
요약
따라했다면 프로젝트를 완료하고 Svelte Dad-Jokes 앱을 완성했을 것입니다.
이제 여기까지 했다면 코드를 내GitHub page에 연결하여 포크하거나 복제하면 작업이 완료됩니다.
라이선스: 📝
이 프로젝트는 MIT 라이선스(MIT)에 따릅니다. 자세한 내용은 라이센스를 참조하십시오.
기여
기여는 언제나 환영합니다...
유용한 리소스
https://sveltestrap.js.org/
Reference
이 문제에 관하여(최소한의 UI를 갖춘 오늘의 Svelte 앱!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hr21don/todays-svelte-app-with-minimal-ui-1e96텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)