본문 바로가기

웹언어/Svelte

[Svelte강좌] 2강 컴포넌트 - 기본사용법 - 오쌤의 니가스터디

728x90
반응형

 

 

 

 

 

 

 

 

** 영상으로 보실 분은 아래 주소를 클릭해주세요.

https://youtu.be/zM29Sf0ncck

 

 

 

 

 

 

 

 

1. src 폴더 파일 구조


- 지난 강좌에서 Svelte 설치 폴더 구조를 확인했습니다.

- 여기에 src폴더에 있는 2개의 파일 구조를 보도록 하겠습니다.

 

 

 

 

 

 

1) App.svelte

-  [ App.svelte ]는 최상위 컴포넌트 파일입니다. 

- Svelte에서는 컴포넌트 확장자가 [ js ]가 아닌 [ svelte ]으로 된다는 것을 잘 기억해주시면 됩니다.

 

 

## 설치된 처음 코드 보기

<script>
	let name = 'world';
</script>

<h1>Hello {name}!</h1>

- 처음엔 간단히 이렇게 작성되어 있습니다.

 

 

 

## 컴포넌트 구역 확인하기

//script 영역
<script>

</script>


//markup 영역


//style 영역
<style>

</style>

- 컴포넌트는 3가지 구역으로 나눕니다. 3개의 작성 순서는 관계없고, 3개 다 없어도 됩니다.

- 단지 script와 style는 해당 태그 안에 작성한 다는 것만 잘 기억하면 됩니다.

 

 

 

 

 

 

 

 

 

2) main.js

- [ main.js ]는 [ App.svelte ]에 모인 모든 컴포넌트 파일(*.svelte)과 JS파일(*.js)파일들이 작동되게 하는 시작점(entry point)가 되는 파일입니다. 

 

## 설치된 처음 코드 보기

import App from './App.svelte';

var app = new App({
	target: document.body
});

export default app;

- 앱의 시작점을 정의하기 위해서는 [ new App({ }) ]으로 import한 [ App.svelte ]을 이용해 새로운 인스턴스를 만드는 작업이 필요합니다. 

- 위에 적혀 있는 [ target ]은 App 컴포넌트가 mount되어 위치할 곳을 설정합니다.

- 위에 [ document.body ]라고 되어 있죠? [ public ]폴더 안에 [ index.html ] 문서의 body를 가리킵니다. 

 

 

 

## public의 index.html 코드 보기

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset='utf-8'>
	<meta name='viewport' content='width=device-width,initial-scale=1'>

	<title>Svelte app</title>

	<link rel='icon' type='image/png' href='/favicon.png'>
	<link rel='stylesheet' href='/global.css'>
	<link rel='stylesheet' href='/build/bundle.css'>

	<script defer src='/build/bundle.js'></script>
</head>

<body>
	<!-- 여기에 mount하겠다는 뜻! -->
</body>
</html>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 컴포넌트


- 컴포넌트(Compontent)는 재사용 가능한 UI입니다.

- 현재 프론트엔드 언어(리액트, 뷰 등)에서 대부분 컴포넌트 기반으로 개발합니다.

- 그럼 재사용 가능한  UI를 왜 쓰는지를 보도록 하겠습니다.

 

 

 

 

 

1) DOM의 문제점을 그림으로 확인

- 위와 같이 메인페이지와 제품 페이지가 두 개가 있다고 보겠습니다.

- HTML페이지 구현 시 [header]와 [footer]를 계속 작성해줘야 합니다.

- 그래서 변경될 때마다 새롭게 구현해야 하기 때문에 속도도 많이 느려집니다.

- 그리고 제작시 header에 있던 글자 하나만 변경하려 해도 모든 페이지의 글자를 변경해야 하기 때문에 번거로움이 있습니다.

 

 

 

 

 

 

 

 

 

2) Svelte 컴포넌트로 활용

- Svelte에서 해당 페이지를 제작한다면 이런 식으로 컴포넌트를 제작해서 만들면 편합니다.

- 꼭 이렇게 한다기 보다는 예시를 통해 컴포넌트를 이해해보겠습니다.

 

 

## 컴포넌트를 사용하는 이유

  1. 분류를 통한 관리의 효율성
  2. 재사용을 통한 개발의 효율성

- 위와 같이 2가지 이유로 컴포넌트를 사용합니다.

- [header]와 [footer]같은 경우는 분류를 통해서 관리를 편하게 하기 위해 작성합니다. 예전과 같은 html작성법이라면 [header]에서 글자를 하나만 바꿔도 모든 페이지에 가서 변경해야 했지만, 위와 같은 방법을 사용하면 한 번만 바꿔도 모든 페이지가 알아서 참조하기 때문에 매우 편합니다.

- [product]같은 경우는 리스트 목록들은 구성이 비슷합니다. 그래서 한 개를 만들어오고 잘 불러들여오면 됩니다. 그럼 재사용하니 매우 효율적으로 코딩할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. 하위 컴포넌트 불러오기


1) 하위 컴포넌트 불러오는 문법

## Script 파트 문법

<script>
	import 컴포넌트명 from 'Svelte파일경로';
</script>

- import는 외부파일을 불러오는 자바스크립트 문법입니다.

- 잘 모르시겠는 분은 제 블로그의 ES6 카테고리를 공부해 보세요.

 

 

## Markup 파트 문법

//markup
<컴포넌트명 /> <!-- 컴포넌트는 꼭 대문자로 시작해야 함 -->

- 불러오는 svelte파일명은 첫 글자가 꼭 대문자일 필요는 없습니다.

- 하지만 컴포넌트 명은 반드시 대문자로 처리해야 합니다.

 

 

 

 

 

 

 

 

 

2) 기본 컴포넌트 제작하기

- 위에서 설명했던 이미지대로 컴포넌트를 활용해보도록 하겠습니다.

 

 

 

## header.svelte - 하위 컴포넌트 제작

<h1>헤더 구역</h1>

- 새파일을 만들어 [src] 폴더 내에 저장하고, 이름은 [header.svelte]라고 합니다.

 

 

## footer.svelte - 하위 컴포넌트 제작

<h1>푸터 구역</h1>

- 새파일을 만들어 [src] 폴더 내에 저장하고, 이름은 [footer.svelte]라고 합니다.

 

 

## main.svelte - 하위 컴포넌트 제작

<h1>메인 구역</h1>

- 새파일을 만들어 [src] 폴더 내에 저장하고, 이름은 [main.svelte]라고 합니다.

 

 

## product.svelte - 하위 컴포넌트 제작

<h3>제품 구역</h3>

- 새파일을 만들어 [src] 폴더 내에 저장하고, 이름은 [header.svelte]라고 합니다.

 

 

 

## mainpage.svelte - 페이지 컴포넌트 제작

<script>
    import Header from "./header.svelte";
    import Footer from "./footer.svelte";
    import Main from "./main.svelte";
</script>

<Header />
<main />
<footer />

- 새파일을 만들어 [src] 폴더 내에 저장하고, 이름은 [mainpage.svelte]라고 합니다.

- 확장 플러그인인 [Svelte for vs code], [Svelte 3 Snippets]가 설치되어 있다면 자동완성 기능이 됩니다. 

 

- import를 치고 하위 컴포넌트명을 대문자로 치고 선택하면 자동 완성되는 것이 확인됩니다.

- 태그로 마크업 할때도 대문자를 치면 나오는 것이 확인됩니다.

 

 

 

## productpage.svelte - 페이지 컴포넌트 제작

<script>
    import Header from "./header.svelte";
    import Footer from "./footer.svelte";
    import Product from "./product.svelte";
</script>

<Header />
<Product />
<Product />
<Product />
<Footer />

- 새 파일을 만들어 [src] 폴더 내에 저장하고, 이름은 [productpage.svelte]라고 합니다.

 

- 마찬가지로 파일을 불러오고 이번에는  <Product /> 를 세 번 작성해보겠습니다. 

 

 

 

## App.svelte - 최상위 컴포넌트로 페이지 컴포넌트 가져오기

<script>
	import Mainpage from "./mainpage.svelte";
	import Productpage from "./productpage.svelte";
</script>

<Mainpage />
<hr />
<Productpage />

- [ App.svelte ] 페이지는 미리 만들어져 있으므로 기존 코드를 지우고 위와 같이 작업해주세요.

- 여기서 필요한 것은 페이지 격인 컴포넌트들입니다. 그래서 그 2개를 불러옵니다.

<hr /> 태그는 구분짓기 위해 실제 html태그인 수평선 태그를 작성했습니다. 

 

 

 

 

 

## 결과 보기

- 결과 페이지에 가보면 잘 불러와지는 것을 확인할 수 있습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형