외부링크와 내부링크를 자동으로 탐지하기 w/ SvelteKitAutomatically detects external and internal links w/ SvelteKit

SvelteKit에서는 Link 없이 바로 쓸 수 있습니다.

In SvelteKit, you can write directly without a Link.

언어
Svelte
타입스크립트 사용 여부
TypeScript사용함

컴포넌트Component

국문Korean

// src/lib/컴포넌트/앵커.svelte

<script lang="ts">
  export let 주소: string;

  const 도메인정규식 = /http[s]*:\/\/[www.]*domain\.com[/]?/;

  let 도메인비교 = 도메인정규식.test(주소);

  if (도메인비교) {
    주소 = 주소.replace(도메인정규식, '/');
  }
</script>

{#if href.startsWith('/')}
  <a {주소} {...$$props}><slot /></a>
{:else if !href.startsWith('http')}
  <a {주소} {...$$props}><slot /></a>
{:else}
  <a {주소} target="_blank" rel="noopener noreferrer nofollow" {...$$props}><slot /></a>
{/if}

영문English

// src/lib/components/Anchor.svelte

<script lang="ts">
  export let href: string;

  const domainRegex = /http[s]*:\/\/[www.]*domain\.com[/]?/;

  let sameDomain = domainRegex.test(href);

  if (sameDomain) {
    href = href.replace(domainRegex, '/');
  }
</script>

{#if href.startsWith('/')}
  <a {href} {...$$props}><slot /></a>
{:else if !href.startsWith('http')}
  <a {href} {...$$props}><slot /></a>
{:else}
  <a {href} target="_blank" rel="noopener noreferrer nofollow" {...$$props}><slot /></a>
{/if}

사용방법How to use

국문Korean

// routes/+page.svelte

<script lang="ts">
  import 앵커 from '$lib/컴포넌트/앵커.svelte';
</script>

<앵커 주소=`링크 경로`>헬로 월드</앵커>

영문English

// routes/+page.svelte

<script lang="ts">
  import LinkButton from '$lib/components/Anchor.svelte';
</script>

<Anchor href=`LinkUrl`>Hello world</AnchorLink>