Quickstarters
Nuxt.jsフロントエンドを構築し、バックエンドに接続する方法
33 分
このチュートリアルでは、nuxt jsを使用してto doリストアプリケーションを構築し、back4appによって提供される管理されたバックエンドサービスに接続します。 このガイドは、基本的なcrud(作成、読み取り、更新、削除)操作を習得し、nuxt jsを使用して動的でレスポンシブなインターフェースを作成したい方に最適です。このチュートリアルの終わりには、あなたのアプリケーションはデータストレージ、認証などを管理するバックエンドとシームレスに相互作用するようになります。 フルスタックアプリケーションの開発は、バックエンドの設定やデータベース管理のために困難になることがあります。プロセスを簡素化するために、私たちはback4appを使用します— 強力なバックエンドサービス —これにより、機能豊富なnuxt jsフロントエンドの開発に集中できます。 back4appは、完全に管理されたnosqlデータベース、ユーザー認証、カスタムロジックのためのcloud code、そして簡単な統合のためのsdkを提供します。これにより、サーバーインフラストラクチャを扱うことなく、スケーラブルなアプリケーションを構築および展開できます。 主なポイント このチュートリアルに従うことで、あなたは nuxt cliを使用して、モダンなnuxt jsプロジェクトを初期化します。 アプリケーションのデータを処理するためにバックエンドサービスを統合します。 動的な to doリスト のための基本的なcrud操作を実装します。 コンテナ化されたワークフローを使用して、完全に機能するアプリケーションをback4app上に展開します。 前提条件 始める前に、次のものを確認してください node js と npm がマシンにインストールされていること。インストールを確認するには、 node v と npm v を実行してください。 基本的な nuxt js の知識 , コンポーネント、ページ、および非同期データ取得を含む。 バックエンドサービスを管理するための back4app アカウント。まだ作成していない場合は、 back4app https //www back4app com/ にサインアップしてください。 これらの前提条件が整ったら、プロジェクトの構築を開始する準備が整いました。 プロジェクトのセットアップ ローカル開発環境を設定し、新しい nuxt js プロジェクトを初期化することから始めます。 node js (lts バージョン) がインストールされていることを確認してください。そうでない場合は、 nodejs org https //nodejs org/ からダウンロードしてください。 nuxt cli を使用して nuxt js プロジェクトを作成します npx nuxi init todo app プロジェクトディレクトリに移動します cd todo app 必要な依存関係をインストールします npm install セットアップを確認するために開発サーバーを起動します npm run dev 提供されたurlをブラウザで開いて、あなたのnuxt jsアプリが動作しているのを確認してください。フロントエンドが準備できたら、back4appでバックエンドを作成します。 todoバックエンドの作成 back4appは、nosqlデータベース、認証、cloud code、自動生成されたapiを含む、完全に管理されたバックエンドサービスを提供しています。 バックエンドを設定するための手順は次のとおりです ログイン して、あなたの back4appダッシュボード https //www back4app com/ をクリックし、 "新しいアプリを作成"。 アプリに名前を付ける (例えば、 todoapp )と、バックエンドタイプとして nodejs/parse を選択します。 "データベース" > "ブラウザ"に移動し、 "クラスを作成" をクリックし、 "カスタム" を選択します。クラスに task という名前を付け、パブリックの読み書きを許可するように権限を設定します(これらの設定は後で調整できます)。 "task" クラスに、次のフィールドを追加します title (string)– タスクのタイトル。 description (string)– タスクの詳細。 completed (boolean)– タスクの完了状況。 duedate (date)– タスクの締切。 "保存" をクリックして、スキーマを作成します。 back4appとnuxt jsの統合 あなたは parse javascript sdk を使用して、nuxt jsアプリをback4appバックエンドに接続します。 parse sdkをインストールします npm install parse 専用モジュールを作成してsdkを構成します。例えば、次の内容で plugins/parse client js を作成します import parse from 'parse/dist/parse min js'; const parse app id = 'your application id'; const parse js key = 'your javascript key'; const parse server url = 'https //parseapi back4app com/'; parse initialize(parse app id, parse js key); parse serverurl = parse server url; export default parse; 次に、このプラグインを nuxt config ts (または nuxt config js ) に登録します export default { plugins \[ { src ' /plugins/parse client js', mode 'client' } ] } これで、バックエンドと対話するためにページやコンポーネントでparseをインポートできます。 フロントエンドの開発 あなたのnuxt jsアプリケーションは、タスクを追加、表示、更新、削除するためのページとコンポーネントで構成されます。nuxtのファイルベースのルーティングと非同期データ取得を活用して、動的なto doリストを作成します。 コンポーネントの構造化 プロジェクト内に components フォルダーを作成して、uiコンポーネントを整理します mkdir components 次のコンポーネントを作成します taskform vue – 新しいタスクを追加するためのものです。 tasklist vue – タスクのリストを表示するためのものです。 taskitem vue – 個々のタスクを表すためのものです。 taskform vue このコンポーネントは、タスクの詳細をキャプチャし、back4appに送信するフォームをレンダリングします。 \<template> \<form @submit prevent="handlesubmit"> \<input type="text" placeholder="task title" v model="title" required /> \<input type="text" placeholder="description" v model="description" required /> \<button type="submit">add task\</button> \</form> \</template> \<script> import parse from 'parse/dist/parse min js'; export default { name 'taskform', data() { return { title '', description '' }; }, methods { async handlesubmit() { try { const task = parse object extend('task'); const task = new task(); task set('title', this title); task set('description', this description); task set('completed', false); await task save(); this $emit('refresh'); this title = ''; this description = ''; } catch (error) { console error('error adding task ', error); } } } }; \</script> taskitem vue このコンポーネントは個々のタスクを表し、その完了状態を切り替えたりタスクを削除するためのボタンを提供します。 \<template> \<div \ class="\['task item', { completed task completed }]"> \<div> \<h3>{{ task title }}\</h3> \<p>{{ task description }}\</p> \</div> \<div> \<button @click="togglecomplete"> {{ task completed ? 'undo' 'complete' }} \</button> \<button @click="deletetask">delete\</button> \</div> \</div> \</template> \<script> import parse from 'parse/dist/parse min js'; export default { name 'taskitem', props \['task'], methods { async togglecomplete() { try { const query = new parse query('task'); const tasktoupdate = await query get(this task id); tasktoupdate set('completed', !this task completed); await tasktoupdate save(); this $emit('refresh'); } catch (error) { console error('error updating task ', error); } }, async deletetask() { try { const query = new parse query('task'); const tasktodelete = await query get(this task id); await tasktodelete destroy(); this $emit('refresh'); } catch (error) { console error('error deleting task ', error); } } } }; \</script> tasklist vue このコンポーネントは、配列を反復処理してタスクを表示し、taskitemコンポーネントを使用して各タスクをレンダリングします。 \<template> \<div> \<p v if="tasks length === 0">no tasks available\</p> \<taskitem v for="task in tasks" \ key="task id" \ task="task" @refresh="refreshtasks" /> \</div> \</template> \<script> import taskitem from ' /taskitem vue'; export default { name 'tasklist', props \['tasks'], methods { refreshtasks() { this $emit('refresh'); } }, components { taskitem } }; \</script> ページ統合 メインページ(例: pages/index vue )で、タスクの状態を管理し、コンポーネントを統合します。 \<template> \<div class="container"> \<h1>to do list\</h1> \<taskform @refresh="fetchtasks" /> \<tasklist \ tasks="tasks" @refresh="fetchtasks" /> \</div> \</template> \<script> import taskform from ' /components/taskform vue'; import tasklist from ' /components/tasklist vue'; import parse from 'parse/dist/parse min js'; export default { components { taskform, tasklist }, data() { return { tasks \[] }; }, methods { async fetchtasks() { try { const task = parse object extend("task"); const query = new parse query(task); const results = await query find(); this tasks = results map((task) => ({ id task id, task tojson() })); } catch (error) { console error("error fetching tasks ", error); } }, }, mounted() { this fetchtasks(); } }; \</script> アプリケーションのスタイリング グローバルスタイルシートを作成します(例: assets/css/main css )基本的なスタイリングを追加するために container { max width 600px; margin 40px auto; padding 0 20px; text align center; font family sans serif; } h1 { margin bottom 20px; } form { display flex; flex direction column; align items center; gap 10px; margin bottom 20px; } form input\[type="text"] { width 80%; max width 400px; padding 8px; box sizing border box; font size 1rem; } form button { padding 8px 16px; cursor pointer; font size 1rem; border none; background color #eaeaea; transition background color 0 2s ease; } form button\ hover { background color #ccc; } task item { display flex; flex direction column; align items center; justify content center; gap 12px; border 1px solid #ccc; border radius 6px; padding 15px; margin 10px 0; background color #fafafa; text align center; transition background color 0 2s ease; } task item completed h3, task item completed p { text decoration line through; color #888; } task item h3 { margin 0; font size 1 1rem; } task item p { margin 0; font size 1rem; } task item button { padding 6px 12px; border none; background color #eaeaea; cursor pointer; font size 0 9rem; } task item button\ hover { background color #ccc; } @media (min width 600px) { task item { flex direction row; } } このスタイルシートをnuxtの設定に含めるには、 css 配列に追加します nuxt config ts export default { css \[' /assets/css/main css'] } back4appウェブデプロイメントでのフロントエンドのデプロイ back4appウェブデプロイメントは、nuxt jsアプリケーションをホストするためのコンテナ化された環境を提供します。 プロダクション用のnuxt jsの設定 必要に応じて、デプロイメントのベースパスを設定するために nuxt config ts を更新してください export default { router { base ' /' } } プロダクションビルドを生成します npm run build npm run generate dockerfileの作成 プロジェクトのルートに次の内容で dockerfile を作成します # stage 1 build the nuxt js app from node 18 alpine as build workdir /app copy package json package lock json / run npm install copy run npm run build run npm run generate \# stage 2 serve the app using nginx from nginx\ alpine copy from=build /app/dist /usr/share/nginx/html expose 80 cmd \["nginx", " g", "daemon off;"] ローカルでのdockerコンテナのテスト dockerイメージをビルドします docker build t todo frontend コンテナを実行します docker run p 8080 80 todo frontend ブラウザで http //localhost 8080 を開いて、nuxt js アプリが正しく提供されていることを確認します。 back4appへのデプロイ gitリポジトリを初期化し、プロジェクトファイルを追加してコミットします git init git add git commit m "initial commit for back4app deployment" git branch m main git remote add origin \<your github repository url> git push u origin main にログインします back4app web deployment https //www back4app com/containers "新しいアプリを作成" をクリックし、プロジェクト名を入力し、githubリポジトリを選択します。 back4appを認証し、 dockerfileデプロイメント を選択します。 ビルド設定を確認し、 "デプロイ" をクリックしてデプロイを開始します。 デプロイメントの監視 デプロイ後、back4appダッシュボードを使用して デバッグ用のログを表示します。 コンテナのパフォーマンスとリソース使用状況を監視します。 新しいコミットで再ビルドをトリガーします。 必要に応じてカスタムドメインを設定します。 ライブアプリケーションにアクセスするには、 https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ テストとデバッグ デプロイ後、nuxt jsフロントエンドがback4appバックエンドと適切に通信していることを確認します api検証 ブラウザの開発者ツール(f12 → ネットワーク)を使用してapiコールを検査します。 タスク操作 uiを介してタスクを追加、完了、削除し、back4appデータベースブラウザで更新を確認します。 エラーハンドリング エラーログを確認し、空の送信などのエッジケースをテストします。 パフォーマンステスト ブラウザツールを使用して遅いネットワーク条件をシミュレートし、応答性を評価します。 nuxt jsとback4appを使用するためのベストプラクティス アプリケーションを最適化するために 効率的なリクエスト 複数のタスクを処理するためにバッチ操作を使用します const tasks = \[task1, task2, task3]; parse object saveall(tasks); 最適化されたクエリ 必要なフィールドのみを取得 query select('title', 'completed'); 環境管理 環境変数に機密キーを保存 nuxt public parse app id=your app id nuxt public parse js key=your js key セキュリティ aclを使用してアクセスを制限 task setacl(new parse acl(parse user current())); バックエンドオフロード 複雑なロジックのためにcloud codeを活用してapiの露出を減らす。 結論 あなたは今、nuxt jsフロントエンドを作成し、back4appのバックエンドと統合し、コンテナ化されたワークフローを使用してデプロイすることによって、フルスタックのto doリストアプリケーションを構築しました。 このチュートリアルは、ローカル開発からクラウドデプロイメントまでのすべてのステップを案内し、あなたのnuxt js uiとバックエンドサービス間のシームレスな相互作用を確保しました。 今後は、リアルタイム更新、改善された認証、サードパーティ統合などの強化を検討してください。さらなる学習のために、 back4appドキュメント https //www back4app com/docs を訪れて、コミュニティリソースを探索してください。