Vue의 Fancy favicon 외부 링크 구성 요소
때로는 미묘한 것들이 가장 즐겁습니다. 특히 UX에 대해 이야기할 때 그렇습니다.
이 튜토리얼에서는 링크의 파비콘을 자동으로 가져오는 링크 구성 요소를 만드는 방법을 보여줍니다.
계속하기 전에 Vue + Composition API의 기본 사항이 있다고 가정하겠습니다.
링크 구성 요소 만들기
링크에 대한 구성 요소 래퍼를 생성하여 시작하겠습니다. 이를 우리의 이름으로 지정합니다FaviconFancyLink.vue
.
<template>
<a :href="href" class="fancy-link"><slot /></a>
</template>
<script>
const props = {
href: {
type: String
},
};
export default {
name: 'FaviconFancyLink',
props,
}
</script>
<style scoped>
.fancy-link {
border: 1px solid #ababab;
border-radius: 3px;
padding: 0.1rem 6px 0.1rem 24px;
text-decoration: none;
background: gray;
}
</style>
이제 구성 요소는 매우 간단합니다. href를 prop으로 전달하고 이를 <a>
태그로 전달합니다.
소품 대신 v-bind="$attrs"
를 사용하여 이를 개선할 수도 있으므로 links에 대한 다른 모든 속성을 얻을 수 있지만 지금은 간단하게 유지하겠습니다.
파비콘 가져오기
이것은 마법이 일어나는 곳입니다. Google의 파비콘 서비스를 사용하여 파비콘을 쉽게 얻을 수 있습니다.
https://www.google.com/s2/favicons?domain=dev.to
트릭은 href
소품에서 호스트 이름을 가져오고 favicon api로 이미지를 동적으로 추가하는 것입니다.
호스트 이름을 얻는 가장 좋은 방법은 다음과 같은 정규식을 사용하는 것입니다.
function getDomain(url) {
return url.match(/:\/\/(.[^/]+)/)[1];
}
다음 단계는 favicon 이미지를 링크에 추가하는 것입니다. 가장 쉬운 방법은 computed
속성을 사용하여 아이콘을 background-image
로 스타일을 추가하는 것입니다.
<script>
import { computed } from 'vue';
const props = {
href: {
type: String
},
};
export default {
name: 'FaviconFancyLink',
props,
setup(props) {
const styles = computed(() => ({
background: `url(http://www.google.com/s2/favicons?domain=${getDomain(
props.href
)}) 4px center no-repeat`,
}));
return {
styles
};
}
</script>
이제 스타일을 <a />
요소에 바인딩하겠습니다.
<template>
<a :href="href" class="fancy-link" :style="styles"><slot /></a>
</template>
앱에 추가
이제 멋진 링크 구성 요소를 추가하고 마법을 살펴보겠습니다.
<div class="links">
<FaviconFancyLink href="https://dev.to">Dev.to</FaviconFancyLink>
<FaviconFancyLink href="https://twitter.com/">Twitter</FaviconFancyLink>
<FaviconFancyLink href="https://alvarosaburido.dev/"
>AS - Portfolio</FaviconFancyLink
>
</div>
스타일링을 하면 이런 모습이 됩니다.
그게 전부입니다. 쉽죠? 이 짧은 튜토리얼이 마음에 든다면 댓글을 달고 사랑을 주세요.
Reference
이 문제에 관하여(Vue의 Fancy favicon 외부 링크 구성 요소), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/alvarosabu/fancy-favicon-external-link-component-in-vue-mnd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<template>
<a :href="href" class="fancy-link"><slot /></a>
</template>
<script>
const props = {
href: {
type: String
},
};
export default {
name: 'FaviconFancyLink',
props,
}
</script>
<style scoped>
.fancy-link {
border: 1px solid #ababab;
border-radius: 3px;
padding: 0.1rem 6px 0.1rem 24px;
text-decoration: none;
background: gray;
}
</style>
이것은 마법이 일어나는 곳입니다. Google의 파비콘 서비스를 사용하여 파비콘을 쉽게 얻을 수 있습니다.
https://www.google.com/s2/favicons?domain=dev.to
트릭은
href
소품에서 호스트 이름을 가져오고 favicon api로 이미지를 동적으로 추가하는 것입니다.호스트 이름을 얻는 가장 좋은 방법은 다음과 같은 정규식을 사용하는 것입니다.
function getDomain(url) {
return url.match(/:\/\/(.[^/]+)/)[1];
}
다음 단계는 favicon 이미지를 링크에 추가하는 것입니다. 가장 쉬운 방법은
computed
속성을 사용하여 아이콘을 background-image
로 스타일을 추가하는 것입니다.<script>
import { computed } from 'vue';
const props = {
href: {
type: String
},
};
export default {
name: 'FaviconFancyLink',
props,
setup(props) {
const styles = computed(() => ({
background: `url(http://www.google.com/s2/favicons?domain=${getDomain(
props.href
)}) 4px center no-repeat`,
}));
return {
styles
};
}
</script>
이제 스타일을
<a />
요소에 바인딩하겠습니다.<template>
<a :href="href" class="fancy-link" :style="styles"><slot /></a>
</template>
앱에 추가
이제 멋진 링크 구성 요소를 추가하고 마법을 살펴보겠습니다.
<div class="links">
<FaviconFancyLink href="https://dev.to">Dev.to</FaviconFancyLink>
<FaviconFancyLink href="https://twitter.com/">Twitter</FaviconFancyLink>
<FaviconFancyLink href="https://alvarosaburido.dev/"
>AS - Portfolio</FaviconFancyLink
>
</div>
스타일링을 하면 이런 모습이 됩니다.
그게 전부입니다. 쉽죠? 이 짧은 튜토리얼이 마음에 든다면 댓글을 달고 사랑을 주세요.
Reference
이 문제에 관하여(Vue의 Fancy favicon 외부 링크 구성 요소), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/alvarosabu/fancy-favicon-external-link-component-in-vue-mnd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<div class="links">
<FaviconFancyLink href="https://dev.to">Dev.to</FaviconFancyLink>
<FaviconFancyLink href="https://twitter.com/">Twitter</FaviconFancyLink>
<FaviconFancyLink href="https://alvarosaburido.dev/"
>AS - Portfolio</FaviconFancyLink
>
</div>
Reference
이 문제에 관하여(Vue의 Fancy favicon 외부 링크 구성 요소), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/alvarosabu/fancy-favicon-external-link-component-in-vue-mnd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)