[오픈소스] svelte sapper 링크 걸기 a href 말고 스크립트로!!
svelte에서 route 를 하기 위해 sapper 을 사용한다. 그런데,
2가지 spa 의 장점과 seo 를 두루 만족하기 위해 취하는 방법이 단일 방법이 아니라 2가지 방법을 사용하는 것 같다.
우선 sapper 을 사용하면 기본 spa가 된다.
그런데
<a href="">링크</a>를 넣으면
href 에 사용된 주소의 폴더가 생성된다.
그래서
외부에서 해당 주소로 바로 접속을해도 무리 없이 접속이 된다.
그러나
a href 를 걸지 않고
스크립크로 링크를 걸면 해당 폴더가 생성되지 않는다.
그러면
직접 해당 링크 주소로 접근하면 에러를 뱉어 낸다.
그래서 직접 url 접근을 고려한다면 아마도 seo 때문에라도, a href 를 만들어 주던가 아니면,
다른 방법이 있을 텐데, 이글을 쓸시점에는 아직 검색해보지 않았다.
찾으면 업데이트 하겠다.
스크립트로 링크 거는 방법으로
location.href 를 사용하면 해당 링크가 생성되지 않아서 사용할 수 없다.
이때는 goto() 를 사용해야한다.
우선 상단에 import 를 시켜주소
import { goto } from '@sapper/app';
사용할 곳에 goto() 를 사용하면된다.
앞서 언급하였지만
on:click={()=>goto('/넘길주소')} 이렇게 해줘야 정상 인자를 끌고가서 정상 실행된다.
이상한 점은
만약 location.href= 에 들어갈 주소를 미리 a href 로 만들어 줬다면 해당 주소의 폴더가 생성이 되어서
location.href= 로 해도 접근가능하다
반면 a herf 를 하지 않았다면, 해당 폴더가 생성되지 않아서 실행되지 않을 것 같은데,
goto() 를 이용하면 실행이 된다는 점이다.
이부분을 생각해보면, svelte 가 route 를 2가지 방식으로 사용한다고 생각할수 있다.
한가지는 spa 내부 페이지 오픈 방식이고
또한가지는 폴더 페이지 오픈 방식이다.
아마도 seo 검색을통해 직접 폴더로 접근하는 유저들의 접근을 가능하게 하기 위한 방법인 것 같다.
어쨋든 폴더로 접근하더래도 실행이 되고 그다음은 spa 로 변환되어 실행되는 것 같다.