sounisi5011/sounisi5011.jp

Nuxt.jsへの移行

Opened this issue · 9 comments

Metalsmithを導入したばかりでの提案になってしまうが、Nuxt.jsを使うのはどうだろう?

利点

  • .vueファイルにテンプレートもスタイルシートもメタデータも記述できる
  • <link rel=preload>を自動生成してくれる
  • ディレクトリ構造が確立されていて、ファイルの配置に悩むことがない
  • npm-scriptsも完結

欠点

  • <div id="__nuxt"><div class="container">のような要素が生成されてしまう
  • <div id="__nuxt"><div class="container">のような要素が生成されてしまう

<div class="container">はテンプレートファイルに含まれているものらしい。
VirtualDOM系ライブラリにありがちだけど、「ルートの要素が一つでなければいけない」みたいな制約があると厄介だな…

外部URLをダウンロードしてunzipしてファイルを読み込む…みたいなwebpack-loaderはないな…
ここは自作かな…?

CLIの表示もカッコいいんだよな〜。あ〜、ぜひとも導入したい…

  • <div id="__nuxt"><div class="container">のような要素が生成されてしまう

<div class="container">はテンプレートファイルに含まれているものらしい。
VirtualDOM系ライブラリにありがちだけど、「ルートの要素が一つでなければいけない」みたいな制約があると厄介だな…

あるぞ、その制約。RractのFragmentみたいな機能も存在しないようだ。
ただ、y-nk/vue-fragmentみたいなパッケージを使えばどうにかなるかもしれない。

Can A Vue Template Have Multiple Root Nodes (Fragments)? - Vue.js Developers

RractのFragmentみたいな機能も存在しないようだ。
ただ、y-nk/vue-fragmentみたいなパッケージを使えばどうにかなるかもしれない。

だめだなぁ。yarn buildだと期待通りだけれど、yarn generateの場合にdiv要素を生成してしまう。
それから、非標準のfragment属性を追加してしまうのもいけ好かない。
自作するか。

RractのFragmentみたいな機能も存在しないようだ。
ただ、y-nk/vue-fragmentみたいなパッケージを使えばどうにかなるかもしれない。

だめだなぁ。yarn buildだと期待通りだけれど、yarn generateの場合にdiv要素を生成してしまう。
それから、非標準のfragment属性を追加してしまうのもいけ好かない。
自作するか。

ちょっと無理があるっぽいぞ。
コンポーネントのVNodeを生成するrenderメソッドはVNodeを返さなくてはいけない。
これを変形するにはmountedメソッドで操作することになるけど、これはサーバーサイドレンダリングで呼ばれないようだ。

RractのFragmentみたいな機能も存在しないようだ。
ただ、y-nk/vue-fragmentみたいなパッケージを使えばどうにかなるかもしれない。

だめだなぁ。yarn buildだと期待通りだけれど、yarn generateの場合にdiv要素を生成してしまう。
それから、非標準のfragment属性を追加してしまうのもいけ好かない。
自作するか。

Vue 3.0からFragmentに対応するらしい。Nuxt.jsが対応するまで待つか、Nuxt.jsが対応するまでこの点を妥協するのが良いと思う。

現状のNuxt.jsだと、どうやってもこういう構造になるようだ。

<body>
  <div id="__nuxt">
    <div id="__layout">
      <*>
        …
        …
      <*/>
    </div>
  </div>
</body>

これはしばらくは様子見ということで、Openにしておくことにしよう。