1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Vue.js、index.html以外にもページを作ってくれ頼む。

Posted at

速攻でSPAから離れた話題。

使用したもの

  • Vue.js
  • vue-cli
  • Vuetify
  • Veevalidation
  • Netlify

おさらい

なんでこんな話をしているかっていうと前回の記事にて、Netlify formを使った際、フォーム内容をsubmitした後に遷移する画面が静的HTMLでないと飛ばなかったという話から。

じゃあその静的HTMLを作ってしまえと作った訳だが、vue.jsからFontAwesomeまで全部CDNで読み込んで無理やりファイルを作った。
Vueプロジェクトの中に独立したVueファイルがある状態は非常に気持ち悪い。

本題:index.html以外のhtmlをpublicに書き出したい。

SPAというのはちょっと置いておいて。。。

当初の構成はこんな状態。
静的thanksページにはCDNで色々読み込んでありhtmlという拡張子がついたVueファイル。(?)

src
  |
 public
  |--index.html
    |--thanks.html//←静的thanksページを手動で追加した。
 component
  |-Form.vue
 views
  |--contact
      |--index.vue
      |--thanks.vue

そんな状態より、せっかく作ってあった/src/views/contact/thanks.vueを使ってthanksページを書き出してあげたい。絶対寂しい思いしてる。

そもそもpublic/index.htmlってどうやって生成されるんだ

vue-cliをインストールしたらもうプロジェクトの雛形ができてるからあまり意識してなかった。
どうして・・・どこかにapp.vueを/public/index.htmlに書き出せとか・・・
ないんですか??あるなら出てきてくれ〜〜〜!!!

出てこなかったのですが、解決策は出てきました。
Vue CLI 3でSPAではなくMPA(複数エントリーポイント)のプロジェクトを作成する

か、神〜〜〜〜〜〜!!!!

私はVuetifyを使うときに勝手に(?)vue.config.jsが作られていたみたいだけど、ない時は自分で作ればいいんだろう。
そこに、ハァ〜〜〜エントリーポイントね!!webpackでやったやつだ!

上記のありがたい記事を読みながら今回私はvue.config.jsを次のようにしました。

module.exports = {
  transpileDependencies: [
    'vuetify'//このへんは`Vuetify`を使うときに勝手に記述された。ありがとう。
  ],
  pages: {
    index: {
      entry: 'src/pages/main.js', 
      template: 'public/index.html', 
      filename: 'index.html', 
    },
    thanks: {
      entry: 'src/pages/thanks/main.js',
      template: 'public/thanks.html',
      filename: 'thanks.html',
      title: 'お問い合わせありがとうございました。',
      },
  }
}

エントリーポイントのファイル名はmain.jsでしかダメなの?
src/main.jssrc/thanks.jsにしたかったけどうまく動いてくれなかったのでコードのようにディレクトリを分けてみました。

src/pages/main.jsApp.vuepublic/index.htmlを書き出すように、src/pages/thanks/main.jspublic/thanks.htmlに書き出せるようにvueファイルをつくってあげればいい。

そこで私はApp.vueと同じ階層に中身はほぼ同じThanksPage.vueを作ってあげて、/src/views/contact/thanks.vueをインポートしてみました。

で!!!!できない・・・?

どうやら、自動でpublic/thanks.htmlを作ってはくれないみたいなので最初に適当に作っておかないといけないみたい。

最後、危なかったでしたが無事、コンポーネントを使ったpublic/thanks.htmlができた。
めでたしめでたし。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?