コンテンツにスキップ

フロントエンドアーキテクチャ@アーキテクチャ

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. SPA (CSR) :Single Page Application

SPAとは

ブラウザレンダリングのステップ 実行者
Loading ブラウザ
Scripting ブラウザ
Rendering ブラウザ
Paiting ブラウザ

1つのWebページの中で、サーバーとデータを非同期通信し、ブラウザ側で部分的に静的ファイルを作成する。

クライアント側でレンダリングを実行するため、SSRと比較してCSR:Client Server side Renderingともいう。

非同期通信は、Ajaxの手法を使用して実現される。

また、静的ファイルの部分的な作成は、MVVMアーキテクチャによって実現する。

SPAでは、ページ全体の静的ファイルをリクエストするのは最初のみで、それ以降はページ全体をリクエストすることはない。

2回目以降は、ページ部分的にリクエストを行い、サーバー側からJSONを受け取っていく。

SPアプリにおけるデータ通信の仕組み


SPAの実装方法

▼ MVVMアーキテクチャ

View層とModel層の間にViewModel層を配置し、View層とViewModel層の間で双方向にデータをやり取り (双方向データバインディング) することによって、View層とModel層の間を疎結合にするための設計手法の一種。

Vue.jsでは、意識せずにMVVMアーキテクチャで実装できるようになっている。

詳しくは、以下のリンクを参考にせよ。

一般的なMVVMアーキテクチャ


SPAと従来MPAの比較

▼ 処理速度

MPAと比較して、データを非同期的に通信できるため、1つのWebページの中で必要なデータのみを通信すればよく、レンダリングが速い。

従来WebアプリとSPアプリの処理速度の違い

▼ SEO

SPAは、Googleのクローラーがページを認識しにくく、Webページがインデックスされない可能性がある。


02. SSR:Server Side Rendering

広義のSSRとは

ブラウザ側ではなくサーバー側で静的ファイルを作成する。

フレームワークのテンプレートエンジンやCGIを使用して、サーバー側で静的ファイルを作成すること、も含まれる。

ブラウザレンダリングのステップ 実行者
Loading サーバー
Scripting サーバー
Rendering サーバー
Paiting ブラウザ


狭義のSSRとは

広義のSSRにSPAを取り入れた方法のこと。

ブラウザ側ではなくサーバー側で静的ファイルを作成する。

広義のSSRと異なる点は、ブラウザ側にレンダリングされた後、アイソモーフィックJavaScriptという仕組みでSPAとして動作する。


03. SSG:Static Site Generation

SSGとは

事前にビルドを行って静的ファイルを作成しておく。

そして、これをレンダリングし、静的サイトとして稼働させる。

動的な要素 (例:ランダム表示) を含む静的ファイルについては、該当の部分でAjaxを使用できるようにしておく。


04. ISR:Incremental Static Regeneration

ISRとは

SSGの発展型。

SSGとは異なり、事前にビルドせず、静的ファイルを作成しない。

その代わり、クライアントからリクエストがあって初めて、そのWebページのみビルドが実行され、レンダリングされる。

クライアントから一回でもリクエストがあったWebページでは、初回時にビルドされた静的ファイルがその都度レンダリングされる。


05. Atomic Design

Atmic Designとは

フロントエンドを構成する要素を、5つのレイヤー (Atoms、Molecules、Organisms、Templates、Pages) に分ける設計方法のこと。


Nuxt.jsを参考に考える

Nuxt.jsとAtomic Designのレイヤーは以下の様に対応する。

Nuxt.jsのディレクトリ Atomic Designのレイヤー
components Atoms、Molecules、Organisms
pages Pages
layouts Templates


06. マイクロサービスアーキテクチャにおけるフロントエンド

UI部品合成

▼ UI部品合成とは

フロントエンドのコンポーネントを、各マイクロサービスに対応するように分割する設計方法。

composite-ui