| ヌクスト | |
|---|---|
| 原作者 | アレクサンドル ショパン、セバスチャン ショパン、プーヤ パルサ |
| 初回リリース | 2016年10月26日[ 1 ] ( 2016年10月26日) |
| 安定版リリース | |
| リポジトリ | |
| 書かれた | タイプスクリプト |
| プラットフォーム | クロスプラットフォーム |
| サイズ | 57 KBの生産 |
| タイプ | フルスタックウェブフレームワーク |
| ライセンス | MITライセンス[ 3 ] |
| Webサイト | nuxt.com |
Nuxtは、 Vue.js、Nitro、Viteをベースにした無料かつオープンソースのフルスタックWebフレームワークです。Nuxtは、 Vue JavaScriptライブラリではなくReactをベースにした同様のフレームワークであるNext.js [ 4 ]に触発されています。
Nuxt が Vue 単体よりも優れている主な利点は、その汎用的なレンダリングシステムです。このフレームワークは、ブラウザ内のシングルページアプリケーション(SPA) としても、サーバーレンダリングされた静的ウェブサイトとしても機能します。サーバーレンダリングされたページは、ロード後に完全な SPA に「ハイドレーション」されます。これにより、ウェブサイトは、クライアントレンダリングアプリケーションのインタラクション性に加えて、サーバーレンダリングされたサイトの検索エンジン最適化とパフォーマンスのメリットを享受できます。[ 5 ] [ 6 ] Nuxt はサーバーレンダリング機能の大部分を開発者から抽象化しているため、Vue のシングルファイルコンポーネント(SFC) システムを使用した従来の SPA と同様の開発エクスペリエンスを実現できます。[ 7 ]
Nuxtは、その主力であるユニバーサルレンダリングメカニズムに加えて、パスベースのルーティング、ホットモジュール置換(HMR)、すぐに使用できるTypeScriptのサポート、ミドルウェアとサーバーロジックなど、他の多くの利点と生活の質を向上させる機能も提供します。[ 8 ]
通常のVue.jsアプリケーションではすべてのルートを手動で登録する必要がありますが、Nuxtはパスベースのルーティングを使用してアプリケーション内のすべてのルートを自動的に登録します。[ 9 ]
ページはフォルダ内で宣言されpages/、ページファイル名がルート名になります。動的なパラメータは角括弧で追加でき、キャッチオールルートはJavaScriptの配列スプレッド構文と同様に、3つのドットと角括弧で追加できます。[ 10 ]
/pages/about.vue- /about と一致します。/pages/user/[id].vue- /user 直下のすべてのルートに一致します。/pages/posts/[...slug].vue- /posts 下のすべてのルートに一致します。/pages/admin/[[page]].vue- /admin に加えて、その直下のすべてのルートと一致します。 NuxtはほとんどのVueコンポジションAPI関数とヘルパー関数をおよびフォルダからcomposables/自動的にインポートしますutils/。[ 11 ]
<スクリプトの設定> // ref は自動的にインポートされますconst count = ref ( 0 ); // useRoute も自動的にインポートされますconst route = useRoute (); </スクリプト><テンプレート> <スパン> {{ count }} </スパン> </テンプレート>NuxtはSSR対応のレイアウトを標準でサポートしており、類似のページでヘッダーやフッターなどの基本テンプレートを共通化できます。レイアウトはlayouts/フォルダ内で宣言され、ネイティブのVueスロットを使用して動作します。
Nuxtプロジェクトでレイアウトを有効にするには、アプリケーションのエントリポイントに、各ページのレイアウトを切り替えるコンポーネントapp.vueを含める必要があります。 [ 12 ]NuxtLayout
<!-- サンプル app.vue ファイルの内容 --> < template > < NuxtLayout > < NuxtPage /> </ NuxtLayout > </ template >デフォルトのレイアウトは にありlayouts/default.vue、ページ コンテンツ用のスロットを含める必要があります。
<!-- サンプルレイアウトファイルの内容 --> < template > < CustomNavbar /> < slot /> < CustomFooter /> </ template >definePageMetaページはセットアップ関数またはブロック内のヘルパーを使用することでカスタムレイアウトを使用することができます。 [ 13 ]
<スクリプト設定> definePageMeta ({ layout : "custom" , }); </スクリプト>< template > <!-- これでカスタムレイアウトのスロットが埋められます --> </ template >Nuxtはアプリケーションにミドルウェアのサポートを追加し、ナビゲーションの変更間でサーバーロジックを実行できるようにします。グローバルミドルウェアファイルとページ固有のミドルウェアファイルの両方がサポートされています。 [ 14 ]
ミドルウェアはmiddleware/フォルダ内に宣言されており、現在のルートと以前のルートをパラメータとして受け取る関数をエクスポートします。そこから、abortNavigationやnavigateToといったグローバルに利用可能なヘルパーを使用してナビゲーションを制御できます。[ 15 ] [ 16 ]
export default defineNuxtMiddleware (( to , from ) => { // ナビゲーションロジックif ( to . params . id === "0" ) return abortNavigation (); return navigateTo ( `/users/ ${ to . params . id } ` ); }); Nuxtは、フォルダを使用してサーバーAPIルートとハンドラーを生成することもできますserver/。フォルダに配置されたファイルはserver/apiAPIルートとなり、フォルダに配置されたファイルはserver/routesルートファイルとなります。違いは最終的なファイルの場所(server/apiパスにapiプレフィックスを追加する)です。[ 17 ]
// server/api/hello.tsをエクスポートします。defaultdefineEventHandler (( event ) => { return { some : "data here" , }; });これを、コンポーザブルを使用してコンポーネントから呼び出すことができるようになりましたuseFetch。
<スクリプトの設定> const { data } = await useFetch ( '/api/hello' ) </スクリプト><テンプレート> <プレ> {{データ}} </プレ> </テンプレート>