0Pricing
Angular Academy · レッスン

Angular SSRのセットアップ

Angular CLIでSSRを追加します

「Angular SSRのセットアップ」はCoddyKit上の無料Angular Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAngular Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Angular Academyコースには全4レッスンが含まれています。

SSRの追加

SSRを有効にする最も簡単な方法は、ng add @angular/ssr スキーマティックを使うことです。これにより、サーバービルド、Expressベースのサーバー、ハイドレーションが自動的に設定されます。

// terminal
// ng add @angular/ssr

新規プロジェクト

新しいアプリを作成するときにSSRフラグを直接指定して、最初からSSR対応のプロジェクトにできます。

// ng new my-app --ssr

スキーマティックによる追加内容

server.ts(Expressサーバー)、main.server.ts のブートストラップ、app.config.server.ts を追加し、angular.json にサーバーオプションを設定して、アプリの設定でハイドレーションを有効にします。

provideServerRendering

サーバーアプリケーションの設定では、provideServerRendering() によってSSRエンジンを提供し、ブラウザー用の設定と統合します。

// app.config.server.ts
import { provideServerRendering } from '@angular/ssr';
import { mergeApplicationConfig } from '@angular/core';

const serverConfig = { providers: [provideServerRendering()] };
export const config = mergeApplicationConfig(appConfig, serverConfig);

クライアントでのハイドレーション

ブラウザーの設定でハイドレーションを有効にすると、クライアントは再レンダリングせずにサーバーのHTMLを再利用します。これはスキーマティックによって自動的に追加されます。

// app.config.ts
import { provideClientHydration } from '@angular/platform-browser';

export const appConfig = {
  providers: [provideClientHydration()]
};

Expressサーバー

server.ts は、静的アセットを配信するExpressアプリを作成し、それ以外のすべてのルートのHTMLレンダリングをAngular SSRエンジンに委譲します。

// server.ts (simplified)
const app = express();
app.get('**', (req, res) => {
  angularApp.handle(req).then(response =>
    response ? writeResponseToNodeResponse(response, res) : res.sendStatus(404)
  );
});

開発サーバー

開発中は、ng serve がアプリケーションビルダーを使ってSSRを自動的に実行します。そのため、追加の手順なしでサーバーレンダリングされた出力とハイドレーションを確認できます。

// ng serve

本番環境向けのビルド

本番ビルドでは、browser バンドルと server バンドルが生成されます。本番環境でSSRを提供するには、Nodeサーバーのエントリーポイントを実行します。

// ng build
// node dist/my-app/server/server.mjs

ブラウザー専用API

コードはサーバーでも実行されますが、そこには window、document、localStorage が存在しません。このようなアクセスをガードしないと、SSR中にクラッシュします。

import { isPlatformBrowser } from '@angular/common';
import { inject, PLATFORM_ID } from '@angular/core';

const isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
if (isBrowser) { localStorage.setItem('k', 'v'); }

HTTPには絶対URLを使用

サーバー上では、相対API URLにオリジンがありません。絶対URLを使用するかベースを設定して、サーバー側の HttpClient 呼び出しが正しく解決されるようにします。

SSRの動作確認

SSRを確認するには、ページにリクエストを送信して、(たとえば curl で)生のレスポンスを調べます。空のアプリルートだけでなく、HTML内にレンダリング済みのコンテンツが含まれているはずです。

// curl http://localhost:4000/ | grep "<h1>"

理解度チェック

SSRの設定に関する知識を確認します。

まとめ

ng add @angular/ssr を使ってSSRを設定しました。Expressサーバー、provideServerRendering()、クライアントハイドレーションが追加されます。ブラウザー専用APIをガードし、サーバー側では絶対URLを使用し、生のレスポンスでレンダリング済みHTMLを確認することを忘れないでください。

よくある質問

「Angular SSRのセットアップ」レッスンは無料ですか?

はい。「Angular SSRのセットアップ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Angular Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Angular Academyコースには全4レッスンが含まれています。

「Angular SSRのセットアップ」で何を学びますか?

Angular CLIでSSRを追加します ブラウザで直接実行するハンズオンコードでAngular Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Angular Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAngular Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「Angular SSRのセットアップ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAngular Academyレッスンでコードを書いて実行できますか?

はい。すべてのAngular Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. サーバーサイドレンダリングの理由
  2. Angular SSRのセットアップ
  3. サーバールートとレンダリングモード
  4. クライアントへの状態転送
← Angular Academyに戻る