템플릿 대체
인라인 템플릿
Vue 컴포넌트는 일반적으로 컴포넌트 내부에 설정된 템플릿 또는 렌더 함수를 통해 UI를 구현합니다.
하지만 특수한 경우 템플릿을 컴포넌트 내부가 아닌, 외부에서 설정할 수 있습니다. inline-template
속성을
컴포넌트에 설정하면 내부에 갈무리 된 코드를 컴포넌트의 템플릿으로 사용합니다.
<app-component inline-tempalte>
<div>
<h3>인라인 템플릿</h3>
<p>컴포넌트가 감싼 영역의 코드가 템플릿이 됩니다.</p>
</div>
</app-component>
1
2
3
4
5
6
2
3
4
5
6
NOTE
컴포넌트가 내부에 템플릿을 가지고 있더라도, 인라인 템플릿이 컴파일 됩니다.
주의!
인라인 템플릿은 유연한 템플릿을 제공하는 방법이지만, 코드 재사용 및 유지보수를 어렵게 합니다. 그런 이유로 가급적 컴포넌트 내부 템플릿을 사용하는 것이 좋습니다.
예제
인라인 템플릿 예제 코드를 살펴보세요.
X-템플릿
또 다른 템플릿 대체 방법은 x-template
입니다. <script>
요소에 type
속성 값을 아래와 같이 설정한 후,
식별 가능한 id
속성을 설정합니다. 그리고 내부에 템플릿 코드를 작성할 수 있습니다.
<script type="text/x-template" id="template-rwd-video">
<div class="rwd-video">
<video :src="src" autoplay loop></video>
</div>
</script>
1
2
3
4
5
2
3
4
5
컴포넌트 template
속성에 X-템플릿 id
이름을 설정하면 컴포넌트 템플릿으로 컴파일 됩니다.
Vue.component('rwd-video', {
template: '#template-rwd-video',
props: {
src: {
type: String,
required: true
}
}
});
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
등록된 컴포넌트는 정상적으로 템플릿을 컴파일 합니다. (예제 코드를 살펴보세요.)
<div id="app">
<rwd-video src="https://goo.gl/BgxF5N" />
</div>
1
2
3
2
3
주의!
싱글 파일 컴포넌트에서 이 방법은 유용하지 않습니다.
<template>
요소를 사용하는 것이 보다 유용합니다.
<script type="text/x-template" id="template">
<div class="hello">
<h1>{{ msg }}</h1>
</div>
</script>
<script>
export default {
name: "HelloWorld",
template: '#template',
props: {
msg: String
}
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
참고
보다 자세한 내용은 템플릿 대체 문서를 참고하세요.