Quickstarters
Angularフロントエンドを構築し、バックエンドに接続する方法は?
34 分
このチュートリアルでは、angularを使用してto doリストアプリケーションを構築し、back4appによって提供される管理されたバックエンドサービスに接続します。 このガイドは、基本的なcrud(作成、読み取り、更新、削除)操作を習得し、angularを使用して動的でレスポンシブなインターフェースを作成したい方のために設計されています。このチュートリアルの終わりまでに、あなたのアプリケーションはデータストレージ、認証などを処理するバックエンドとシームレスに通信できるようになります。 フルスタックアプリケーションを構築することは、しばしば複雑なバックエンド設定とデータベース管理を伴います。ワークフローを簡素化するために、back4appを使用します— 堅牢なバックエンドサービス —これにより、機能豊富なangularフロントエンドの開発に集中できます。 back4appは、完全に管理されたnosqlデータベース、ユーザー認証、カスタムロジックのためのcloud code、シームレスな統合のためのsdkを提供します。これにより、サーバーインフラストラクチャを管理することなく、スケーラブルなアプリケーションを構築および展開できます。 主なポイント このチュートリアルに従うことで、あなたは angular cliを使用して最新のangularプロジェクトを初期化します。 アプリのデータを管理するためにバックエンドサービスをシームレスに統合します。 動的な to doリスト のための基本的なcrud操作を実装します。 コンテナ化されたワークフローを使用して、完全に機能するアプリケーションをback4appに展開します。 前提条件 始める前に、次のものを確認してください node js と npm があなたのマシンにインストールされていること。インストールを確認するには、 node v と npm v を実行してください。 基本的な angular の知識 , コンポーネント、サービス、依存性注入を含む。 back4app アカウント を持っていること。バックエンドサービスを管理するために、まだ持っていない場合は、 back4app https //www back4app com/ にサインアップしてください。 これらの前提条件が整ったら、プロジェクトの構築を開始する準備が整いました。 プロジェクトのセットアップ ローカル開発環境を設定し、angular cliを使用して新しいangularプロジェクトを初期化することから始めます。 node js (lts バージョン) がインストールされていることを確認してください。そうでない場合は、 nodejs org https //nodejs org/ からダウンロードしてください。 まだインストールしていない場合は、angular cliをグローバルにインストールしてください npm install g @angular/cli 新しいangularプロジェクトを作成します ng new todo app routing style=css プロジェクトディレクトリに移動します cd todo app セットアップを確認するために開発サーバーを起動します ng serve ブラウザで http //localhost 4200 を開いて、angularアプリが動作しているのを確認してください。フロントエンドが準備できたら、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)– タスクの締切。 「 保存 」をクリックして、スキーマを作成します。 angularとback4appの統合 あなたは、 parse javascript sdk を使用して、angularアプリをback4appバックエンドに接続します。 parse sdkをインストールします npm install parse angularプロジェクトでsdkを設定します。 src/app/app module ts を開く(または専用のサービスを作成)し、back4appダッシュボードからの アプリケーションid と javascriptキー でparseを初期化します( アプリ設定 > セキュリティとキー の下にあります)。例えば、 parse service ts というサービスを src ディレクトリに作成します import { injectable } from '@angular/core'; import parse from 'parse'; @injectable({ providedin 'root', }) export class parseservice { constructor() { const parse app id = "your application id"; const parse js key = "your javascript key"; parse initialize(parse app id, parse js key); (parse as any) serverurl = 'https //parseapi back4app com/'; } } 次に、コンポーネント内でparseserviceをコンストラクタに注入します。このサービスは、アプリケーションの起動時に一度だけコンストラクタを実行し、parseを初期化します。 バックエンドが接続されたので、to doリストのuiを構築し、crud操作を実装できます。 フロントエンドの開発 あなたのangularアプリケーションは、タスクを追加、表示、更新、削除するためのコンポーネントとサービスで構成されます。angularのコンポーネントアーキテクチャと依存性注入を活用して、スムーズなデータ管理を実現します。 コンポーネントの構造化 angular cliを使用して、以下のコンポーネントを生成します ng generate component components/task form ng generate component components/task list ng generate component components/task item タスクフォームコンポーネント このコンポーネントは新しいタスクを追加するためのフォームをレンダリングします。ユーザーの入力をキャプチャし、タスクデータをback4appに送信します。 add task // src/app/components/task form/task form component ts import { component, eventemitter, output } from '@angular/core'; import { formsmodule } from '@angular/forms'; import as parse from 'parse'; @component({ selector 'app task form', templateurl ' /task form component html', styleurls \[' /task form component css'], imports \[formsmodule] }) export class taskformcomponent { title = ''; description = ''; @output() refreshtasks = new eventemitter\<void>(); async onsubmit() { 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 refreshtasks emit(); this title = ''; this description = ''; } catch (error) { console error('error adding task ', error); } } } タスクリストコンポーネント このコンポーネントは、配列を反復処理して各タスクをtaskitemcomponentを使用してレンダリングすることによって、タスクのリストを表示します。 no tasks available // src/app/components/task list/task list component ts import { component, input, oninit } from '@angular/core'; import { commonmodule } from '@angular/common'; import as parse from 'parse'; import { taskitemcomponent } from ' /task item/task item component'; @component({ selector 'app task list', templateurl ' /task list component html', styleurls \[' /task list component css'], imports \[commonmodule, taskitemcomponent] }) export class tasklistcomponent implements oninit { @input() tasks any\[] = \[]; @input() fetchtasks! () => void; ngoninit() void {} } taskitemcomponent このコンポーネントは個々のタスクを表し、完了状態を切り替えたりタスクを削除するためのボタンを提供します。 {{ task title }} {{ task description }} {{ task completed ? 'undo' 'complete' }} delete // src/app/components/task item/task item component ts import { component, eventemitter, input, output } from '@angular/core'; import as parse from 'parse'; @component({ selector 'app task item', templateurl ' /task item component html', styleurls \[' /task item component css'] }) export class taskitemcomponent { @input() task any; @output() taskchanged = new eventemitter\<void>(); 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 taskchanged emit(); } 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 taskchanged emit(); } catch (error) { console error('error deleting task ', error); } } } appcomponentの統合 メインコンポーネントで、タスクの状態を管理し、タスクコンポーネントを統合します。 to do list // src/app/app component ts import { component, oninit } from '@angular/core'; import { parseservice } from ' /parse service'; import as parse from 'parse'; import { taskformcomponent } from ' /components/task form/task form component'; import { tasklistcomponent } from ' /components/task list/task list component'; @component({ selector 'app root', imports \[taskformcomponent, tasklistcomponent], templateurl ' /app component html', styleurl ' /app component css' }) export class appcomponent implements oninit { constructor(private parseservice parseservice) {} tasks any\[] = \[]; 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); } } ngoninit() void { this fetchtasks(); } } アプリケーションのスタイリング コンポーネントのcssファイルまたは src/styles css でスタイルを作成または更新します。 / src/styles 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; } } back4appウェブデプロイメントでのフロントエンドのデプロイ back4appウェブデプロイメントは、angularアプリケーションをホストするためのコンテナ化された環境を提供します。 プロダクション用のangularの設定 プロダクション準備が整ったangularアプリをビルドします ng build このコマンドは、コンパイルされたangularアプリを含む dist/ フォルダーを生成します。 dockerfileの作成 プロジェクトのルートに次の内容で dockerfile を作成します from node 18 alpine as build workdir /app copy package json package lock json / run npm install g @angular/cli run npm install copy run ng build cmd \["ng", "serve", " host", "0 0 0 0"] dockerコンテナのローカルテスト dockerイメージをビルドします docker build t todo frontend コンテナを実行します docker run p 4201 4200 todo frontend ブラウザで http //localhost 4201 を開いて、angularアプリが正しく提供されていることを確認します。 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 ブラウザで http //localhost 4201 を開いて、angularアプリが正しく提供されていることを確認します。 ログインする back4app web deployment https //www back4app com/containers "新しいアプリを作成" をクリックし、プロジェクト名を入力し、githubリポジトリを選択します。 back4appを認証し、 dockerfile deployment を選択します。 ビルド設定を確認し、 "デプロイ" をクリックしてデプロイプロセスを開始します。 デプロイの監視 デプロイ後、back4appダッシュボードを使用して デバッグ用のログを表示します。 コンテナのパフォーマンスとリソース使用状況を監視します。 新しいコミットで再ビルドをトリガーします。 必要に応じてカスタムドメインを設定します。 ライブアプリケーションにアクセスするには、 https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ テストとデバッグ デプロイ後、angularフロントエンドがback4appバックエンドと効果的に通信していることを確認してください api検証 ブラウザの開発者ツール(f12 → ネットワーク)を使用してapiリクエストを検査します。 タスク操作 uiを介してタスクを追加、完了、削除し、back4appデータベースブラウザで更新を確認します。 エラーハンドリング コンソールログでエラーを確認し、空の送信などのエッジケースをテストします。 パフォーマンステスト ブラウザツールを使用して遅いネットワーク条件をシミュレートし、応答性を評価します。 angularとback4appを使用するためのベストプラクティス アプリケーションを最適化するために 効率的なリクエスト 複数のタスクを処理するためにバッチ操作を使用します const tasks = \[task1, task2, task3]; parse object saveall(tasks); 最適化されたクエリ: 必要なフィールドのみを取得します query select('title', 'completed'); 環境管理: 環境変数に機密キーを保存します ng app parse app id=your app id ng app parse js key=your js key セキュリティ: aclを使用してデータアクセスを制限します task setacl(new parse acl(parse user current())); バックエンドオフロード: フロントエンドの負荷を軽減するために、複雑なロジックにcloud codeを活用します。 結論 angularフロントエンドを作成し、back4appのバックエンドと統合し、コンテナ化されたワークフローを使用してデプロイすることで、フルスタックのto doリストアプリケーションを構築しました。 このチュートリアルでは、ローカル開発からクラウドデプロイメントまでのすべてのステップを案内し、angular uiとバックエンドサービス間の堅牢な相互作用を確保しました。 今後は、リアルタイム更新、改善された認証、サードパーティ統合などの強化を検討してください。 さらなる学習のために、 back4appのドキュメント https //www back4app com/docs を訪れて、コミュニティリソースを探索してください。