なぜ ASTRO を VUE に変換するのですか?
Astro と Vue はレンダリングモデルが異なります。Astro は HTML にプリレンダリングしますが、.vue コンポーネントは Vue のランタイムリアクティビティに依存します。Astro は Vue を直接サポートしているため、通常は Astro から変換するのではなく、Vue を埋め込んで使用します。
ASTRO から VUE への変換方法
Astro 内で Vue を使用する FREE
npx astro add vue を実行して @astrojs/vue を追加し、.astro ファイル内で .vue コンポーネントをインポートしてレンダリングします。client:* ディレクティブでハイドレーションを行います。
手動で .vue SFC に書き直す FREE
.astro のマークアップを <template> ブロックに移動し、コードフェンスのロジックを <script setup> に移動して、props、slots、式を Vue の同等品に変換します。
これらの形式について
品質と注意点
- Astro のドキュメントには、Astro 内で Vue コンポーネントを使用できると記載されていますが、Vue のコードベース内で Astro コンポーネントを使用することはできません。
- Vue は
v-if、v-for、:propバインディングなどのディレクティブを使用しますが、これらには直接的な Astro の対応物がないため、書き換えは手作業になります。 - Astro のサーバー専用コードフェンスと
client:*ハイドレーションモデルは、Vue のランタイムリアクティビティには対応していません。
よくある質問
.astro から .vue へのコンバーターはありますか?
いいえ。フレームワークの違いが大きすぎます。Astro に Vue を埋め込むか、コンポーネントを手動で書き直すかのどちらかです。
Astro プロジェクトで Vue コンポーネントを実行できますか?
はい、
npx astro add vue で追加される公式の @astrojs/vue 統合を介して可能です。スロットは Vue でどのように変換されますか?
Astro の
<slot> は Vue の <template> 内の <slot> になりますが、名前付きスロットや props は手動のマッピングが必要です。なぜ Vue に変換せずに Astro を使い続けるのですか?
Astro は Vue コンポーネントを直接レンダリングできるため、Vue を使うためだけに Astro を離れる必要はほとんどないからです。