島建築


ウェブサイトを構築する方法があります.その中の1つはマルチページアプリケーション(MPA)でした.そして、それは10年ほど前流行して、復帰をしていました.MPAは、他の現代のフレームワークの間で角度と反応によって大衆化された単一のページ・アプリケーション(SPA)アプローチによって取り替えられました.
どのように傾向の仕事のために、それは方法/ツールのファッションから行くのは簡単です.これは、より効果的ではないが、開発者が他の何かを支持してそれらを使用するのを止めるからではありません.これは、開発者が角度、反応、Vueなどのような人気のWebフレームワークを採用し始めたように、マルチページアプリケーション(MPA)で起こったことです.これはフレームワークがより人気になったので、スパの使用のuptickにつながった.
どのようにspasの仕事のために、影響は、我々がブラウザに送るJavaScriptの量が増加しているということでした.つまり、状態とレンダリングを管理するために反応せずに反応Webアプリケーションを持つことはできません.SPAはJavaScriptを使用してブラウザにHTMLを表示させる.多くの場合、これは、例えば、FacebookやYouTubeなどのWebアプリでは、状態を管理することは意味があります.しかし、他のケースでは、これは、例えば、ブログ、個人的なポートフォリオなどの意味をなさない.

サーバ側レンダリング


一般的に角度や反応、スパなどのフレームワークを使用する場合、サーバはほとんど役に立ちません.クライアント側では、クライアント側のレンダリングとして知られているすべてのレンダリングが行われます.コンテンツを見るには、まずフレームワークのランタイム(Webアプリケーションの足場に必要なJS)をダウンロードし、コンテンツをレンダリングする環境が必要です.
これは、いくつかの欠点がありますが、顕著なものは、画面上に何かを表示するのは遅いですが、この影響はローエンドのデバイスでより悪くなっており、インターネット接続と検索エンジン最適化を遅くします-ボットとクローラは通常、これらのページをレンダリングすることはできませんし、結果を表示するコンテンツを解析することはできません.
我々は、上記の問題を解決するための2つの標準的なソリューションがあります:サーバー側のレンダリング(SSR)とレンダリング時にレンダリング- ssg.SSGはSSRに似ていますが、ビルド時にサーバで要求されたすべての要求を削除します.SSGはコンテンツがそのダイナミックでないサイトのために一般的です.これらの2つの解決策の問題は、彼らがSPASで問題を解決しないが、むしろ延期するということです.
相互作用の任意の並べ替えをしたい場合は、開いて、あなたのWebアプリケーション上のNavbarを閉じると、SSGまたはSSRのいずれかからレンダリングされたアプリケーションを水和する必要があります.これは、使用しているフレームワークをブートストラップするプロセスです.フレームワークが引き継ぐように、サーバーから状態を転送します.これは通常、最初のコンテンツが描画された後に発生します(サーバー側からサーバー側にレンダリングされたHTMLをレンダリングした後)、しかし、Webアプリケーション内の対話の前に.
これは、あなたのフレームワークによって必要とされるJSがダウンロードされて、解析されなければならないことを意味します、そして、ユーザーはあなたのウェブアプリと対話するために起こるすべてを待つ必要があります.これは、あなたがInteractiveを必要としないページでさえ、すなわち、私たちページ、条件と条件に関してさえ意味するでしょう.


そして、これは島の建築が入るところです.イマジンすべての静的コンテンツの純粋なHTMLとCSSを使用してWebアプリケーションを作成することができれば、動的なコンテンツや相互作用の領域に追加-島-対話を追加するには、フレームワークを使用することができます.これらの領域はどんなフレームワークも使用するでしょう、そして、フレームワーク・ランタイムはウェブサイトの初期の荷重よりむしろそれを使うページでだけダウンロードされるだけです.
アストロなどのWebフレームワークMy website のような、最も最近のQwikは、このアーキテクチャメソッドを実装しています.Astroの場合、JSXのいくつかのバリエーションを使用するが、クライアント側の状態を持っていないので、ランタイムはありません.

アストロ


アストロはJS - opt - inの概念を使用します.デフォルトではJavaScriptを含めるようにアトムを指示しない限り、JavaScriptは生成されません.バニラJSを使用するには、以下のようにバニラJSを使用できます.
<script>
   document.getElementById("menuToggle").addEventListener("click", () => {
   const collapsibleMenu = document.getElementById("collapsibleMenu");
        collapsibleMenu.classList.toggle("navbar-menu-show");
        collapsibleMenu.classList.toggle("navbar-menu-hidden");
      });
</script>

Astro components cannot be hydrated as they are HTML only templating components and any Javascript needs to be included as indicated above or via a framework such as React, SolidJS, etc.


第2のオプションは、あなたのフレームワークを持ってくることです、あなたのウェブアプリケーションで相互活動(島)の領域を加える構成要素をつくるために、反応、preact、lit、svelte、vue、その他.
// index.astro file
---
import ReactComponent from "./ReactComponent"

---

<ReactComponent />
また、必要な地域が水和されているときの制御にあります.これは、Astroが水和を実行するよう指示するディレクティブを介して行われます.たとえば、島は、負荷またはそれが見えるようになるときにのみ水和されることがあります.あなたがこれを達成するのを助けるいくつかの指令がありますhere .

// index.astro file
---
import ReactComponent from "./ReactComponent"

---

<ReactComponent client:visible />

マルコとQwik


私はマルコのどちらの専門家でもない.あなたがより多くを学ぶことに興味があるならば、私は以下の追加資源をリンクします.マルコとQwik島の概念を取るときに少しさらにアストロと比較した.
MarkoはMPAフレームワークであり、島のアーキテクチャは自動的に島に必要なJSをロードすることを決定するという点で少し賢いです.これは、現在のAstroアプローチとは異なり、それは、水和を行うときに、アストロに伝える開発者に頼ります.アストロはまだ前のリリース段階にあります、そして、多分、これは将来変わるでしょう.
MarkoがAstroの上に持っているもう一つの重要な利点はMarkoが何が島の中にあるか、そして、それの中にないことを決定するということです.これは、静的コンテンツのみを表示するフッター、ヘッダーなどのコンポーネントが島になっていないことを意味しますが、動的コンテンツのフォームやその他のリッチコンポーネントは、水和することができる島になります.
一方、Qwikは、コンポーネントレベルにこれをとり、必要に応じて行われるように水和がどのように行われるかを分解します.これは積極的にあなたのウェブサイトのJavaScriptを複数のチャンクに分割し、グローバルなイベントリスナーを設定し、HTMLに直接興味のあるポイントをシリアル化することによって達成されます.各個別のユーザーの相互作用のために、Qwikはすべてのそれがアクションを実行するために必要なだけのコードをロードする必要があります.


スティーヴシーウェル

Qwik見てどのように動作するか
午後19時33分
これによって、これはより小さなチャンクにつながります.そして、それはユーザーが必要とするものだけをロードして、解析して、ロードするのにより速いです.これは、この記事の範囲外です、そして、うまくいけば、私はすぐにそれについて書きます.

結論


この記事は、島の建築、なぜ存在するか、そして現在フレームワークを適用する枠組みを見た.次の一連の記事において、私は上記のフレームワークに深く掘り下げたいと思います.アストロ、マルコ、およびQwik、さらにsvelte、角、および反応のような他のフレームワーク、およびそれらが互いに内部的に異なる方法.

資源


  • From Static to Interactive: Why Resumability is the Best Alternative to Hydration





  • A first look at Qwik - the HTML first framework WRITTEN BYMIŠKO HEVERY JULY 2, 2021