Vue.js/Nuxt.jsで外部サイト、内部サイトへ遷移する方法を調べてみた

Vue.js/Nuxt.js
スポンサーリンク

はじめに

Laravel + Nuxt.jsで開発中に、外部サイトへ遷移させたい箇所と、内部サイトへ遷移させたい箇所の実装で詰まってしまい、色々と調べたの備忘録として記載します。

開発状況(Version)

macOS Big Sur
Virtual Box 6.1.26
Laravel Mix 5.0
Laravel 6.20.4
PHP 7.3.29
node.js 16.13.2
Nuxt.js 6.14.11
Vue.js 2.6.14

方法

結論から言うと、
遷移先が、外部サイトor内部サイトによって実装方法が異なります。

外部サイトへの遷移

aタグで遷移

<a href="https://www.google.co.jp/">Google</a>

or

<a :href="https://www.google.co.jp/">Google</a>

scriptで遷移

<template>
  <div>
    <button @click="googleLink">Google</button>
  </div>
</template>

<script lang="ts">
import Vue from 'vue'
export default Vue.extend({
  methods: {
    googleLink() {
      const url = 'https://www.google.co.jp/'
      window.location.href = url       ←このページからurlにページに遷移する
    }
  }
})
</script>

or

<template>
  <div>
    <button @click="googleLink">Google</button>
  </div>
</template>

<script lang="ts">
import Vue from 'vue'
export default Vue.extend({
  methods: {
    googleLink() {
      const url = 'https://www.google.co.jp/'
      window.open(url, '_blank')       ←このページとは異なる、別のタブを開きurlにページに遷移する
    }
  }
})
</script>

内部サイトへの遷移

aタグで遷移

<a :href="`hogeDetail/${パラメータid}`">
 HOGE
</a>

nuxt-linkで遷移

<nuxt-link to="/home">HOME</nuxt-link>

or

<nuxt-link
  :to = "`hogeDetail/${パラメータid}`"
>
  <button>HOGE</button>
</nuxt-link>

$routerで遷移

<template>
  <div>
    <button @click="googleLink">Google</button>
  </div>
</template>

<script>
  new Vue({
    el: "#app",
    methods: {
      googleLink(){
        this.$router.push('/google');    ←このページのURL+'/google'に遷移する
      }
    }
  })
</script>

ちなみに

外部サイトへの遷移では、<nuxt-link to =””></nuxt-link>や、$routerは機能しません。←ココ私が詰まったポイントです。

最後に

色々な参考記事を参考にした結果、
ココに行き着きました。nuxt-linkなど、外部、内部サイトへ両方とも行ける雰囲気があったのですが、意外に遷移できず、手こずりました。

参考記事

コメント