ここでは、レンダリング部分のみが各 Web コンポーネント ファイルに移植されますが、それらはすべてインポートマップで定義された同じ Brisa ラッパーを使用します。これは、シグナルとシャドウ DOM を含む Web コンポーネントの作成を担当します。

WebコンポーネントのSSR

宣言型シャドウ DOM のおかげで、Web コンポーネントの SSR を実行できるようになりました。 counter-wc.server.js ファイルはすでにこの動作を使用してコンパイルされているため、サーバーにインポートして HTML にレンダリングし、サーバー フレームワークに適応させるだけで済みます。

JSX を使用せずに Bun.js または Node.js を使用した例を次に示します:

ssr.js

import { renderToString } from \\\"brisa/server\\\";import { jsx } from \\\"brisa/jsx-runtime\\\";import CustomCounter from \\\"counter-wc/server\\\";const html = `                Brisa Web Component Example                        ${await renderToString(jsx(CustomCounter, { start: 10 }))}    `;console.log(html);

次に、bun run ssr.js を実行すると、宣言型 Shadow DOM を使用してレンダリングされた Web コンポーネントを含む HTML が表示されます。

ブリサについてもっと教えてください...お願いします...

これらの Web コンポーネント ライブラリと Brisa の統合は、構成ファイルを通じて行われます:

import type { WebComponentIntegrations } from \\\"brisa\\\";export default {  \\\"custom-counter\\\": {    client: \\\"./path/to/web-component.client.js\\\",    server: \\\"./path/to/web-component.server.js\\\",    types: \\\"./path/to/web-component.types.d.ts\\\",  },} satisfies WebComponentIntegrations;

このようにして、SSR および TypeScript タイプがプロジェクトに自動的に統合されます。また、Web コンポーネントは、任意のサーバー コンポーネントまたは別の Web コンポーネント内で使用できます。

\\\"Build

さらに詳しく知りたい場合は、Brisa ニュースレターを購読して、Brisa に関する最新ニュースと更新情報を受け取ることをお勧めします。 9 月末までには発売の準備が整うと予想しています。

Web コンポーネント ライブラリ作成者向けの注意事項

Brisa を試して独自の Web コンポーネント ライブラリを作成することをお勧めします。 「made with Brisa」バッジを付けると、Brisa ページにあなたのライブラリへのリンクが貼られます。


\\\"Build

  \\\"Made

この記事で説明したカウンターの例の GitHub リポジトリを参照して、独自の作成の参考として使用できます。

結論

この投稿では、SSR および任意の JavaScript フレームワークまたは Vanilla JS で動作するリアクティブ Web コンポーネントを構築する方法を説明しました。 Brisa を使用して Web コンポーネントを構築し、それを Vanilla JS プロジェクトにロードする方法と、それを使用して SSR を実行する方法を見てきました。

この投稿を楽しんでいただき、何か新しいことを学んでいただければ幸いです。ご質問がございましたら、以下のコメント欄でお気軽にお問い合わせください。喜んでお手伝いさせていただきます。

コーディングを楽しんで、残りの夏も楽しんでください! ??


\\\"Build

残りの夏も楽しんでください!
","image":"http://www.luping.net/uploads/20240902/172528237066d5b842be406.png","datePublished":"2024-09-02T21:06:10+08:00","dateModified":"2024-09-02T21:06:10+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > SSR を使用してリアクティブ Web コンポーネントを構築する

SSR を使用してリアクティブ Web コンポーネントを構築する

2024 年 9 月 2 日に公開
ブラウズ:870

Web コンポーネントを記述する従来の方法は、SSR (サーバー サイド レンダリング) にあまり適していません。この投稿では、SSR および任意の JavaScript フレームワーク (Vue、React、Svelte、Solid、Brisa) または Vanilla JS で動作するリアクティブ Web コンポーネントを構築する方法を説明します。

  • 導入
  • Brisa を使用して Web コンポーネントを作成する
  • Web コンポーネントの構築
  • Vanilla JS プロジェクトへの Web コンポーネントのロード
  • WebコンポーネントのSSR
  • ブリサについてもっと教えてください...お願いします...
  • Web コンポーネント ライブラリ作成者向けのメモ
  • 結論

導入

Brisa Web Component Compiler を使用します。 Brisa は、Next.js や Nuxt.js などの他のフレームワークに似ていることに加えて、JSX や SSR を使用して、リアクティブ性のシグナルを操作するリアクティブな Web コンポーネントを構築できる Web フレームワークです。

Build Reactive Web Components with SSR


ブリサのロゴ

これを行うには、Web コンポーネントを作成するときに Brisa の構文を知っているだけで済みます。 Brisa は現在 v0.1 ルートマップの 95.48% にあるため、まだ公開されていませんが、1 か月以内にリリースの準備が整い、誰もがアクセスできるようになると推定しています。ただし、まったく公開されていない場合でも、それを使用して独自の Web コンポーネント ライブラリを作成することができます。

Brisa を使用した Web コンポーネントの作成

例として、いつものように、古典的な例であるカウンターの Web コンポーネントを作成します。

カウンター-wc.tsx

import type { WebContext } from "brisa";

export default function CounterWC(
  { start = 0, color = "#2cebcf" }: { start?: number; color?: string },
  { state, css }: WebContext,
) {
  const count = state(start);

  css`
    button {
      background-color: ${color};
      color: white;
      border: none;
      border-radius: 5px;
      padding: 10px;
      margin: 5px;
      cursor: pointer;
    }
    div {
      display: flex;
      justify-content: center;
      align-items: center;
    }
  `;

  return (
    
{count.value}
); }

Brisa はファイル名を使用してセレクターを認識します。ここではセレクターは counter-wc になります。

ヒント: Brisa はまだ公開されていませんが、TypeScript タイプを使用して Web コンポーネントの作成方法をガイドできます。

上記の例では、state を使用してシグナルを作成し、.value を使用して JSX 内でシグナルをリアクティブにします。 props は読み取り専用であるため、特別なシグナルでもあります。.value は、使いやすくし、デフォルト値をより簡単に定義するために使用されません。これは、React が機能するのと同様に、ビルド時の最適化によって行われます。彼らがシグナルを使用していれば、その逆の場合。

CSS テンプレート リテラルにより、この場合の color プロパティのリアクティブな変更に反応できるようになります。この例以外の CSS テンプレート リテラルは、リアクティブ アニメーションを簡単に作成するのに非常に役立ちます。 Web コンポーネントは Shadow DOM で動作するため、CSS はページの残りの部分には影響を与えないことを覚えておくことが重要です。

Web コンポーネントの構築

Web コンポーネントをビルドするには、次のコマンドを実行する必要があります:

brisa build -w counter-wc.tsx

このコマンドは 2 つのファイルを生成します:

[ wait ]  ? building your standalone components...
[ info ]
[ info ]   Standalone components:
[ info ]   - build/counter-wc.client.js (670.00 B)
[ info ]   - build/counter-wc.server.js (842.00 B)
[ info ]
[ info ]   ✨  Done in 42.20ms.

これらのファイルは Web コンポーネントではありません。ビルド時に可能な限り軽くなるように最適化された Web コンポーネントのレンダリング機能にすぎません (出力されるバイトは gzip なしです).

それでは、Web コンポーネントをロードするにはどうすればよいでしょうか?

Vanilla JS プロジェクトへの Web コンポーネントのロード

これを行うには、brisa/client を使用して HTML に importmap を追加し、counter-wc.client.js ファイルをインポートする必要があります。


  
    Brisa Web Component Example

ここでは、レンダリング部分のみが各 Web コンポーネント ファイルに移植されますが、それらはすべてインポートマップで定義された同じ Brisa ラッパーを使用します。これは、シグナルとシャドウ DOM を含む Web コンポーネントの作成を担当します。

WebコンポーネントのSSR

宣言型シャドウ DOM のおかげで、Web コンポーネントの SSR を実行できるようになりました。 counter-wc.server.js ファイルはすでにこの動作を使用してコンパイルされているため、サーバーにインポートして HTML にレンダリングし、サーバー フレームワークに適応させるだけで済みます。

JSX を使用せずに Bun.js または Node.js を使用した例を次に示します:

ssr.js

import { renderToString } from "brisa/server";
import { jsx } from "brisa/jsx-runtime";
import CustomCounter from "counter-wc/server";

const html = `


    
    Brisa Web Component Example
        ${await renderToString(jsx(CustomCounter, { start: 10 }))}
    

`;

console.log(html);

次に、bun run ssr.js を実行すると、宣言型 Shadow DOM を使用してレンダリングされた Web コンポーネントを含む HTML が表示されます。

ブリサについてもっと教えてください...お願いします...

これらの Web コンポーネント ライブラリと Brisa の統合は、構成ファイルを通じて行われます:

import type { WebComponentIntegrations } from "brisa";

export default {
  "custom-counter": {
    client: "./path/to/web-component.client.js",
    server: "./path/to/web-component.server.js",
    types: "./path/to/web-component.types.d.ts",
  },
} satisfies WebComponentIntegrations;

このようにして、SSR および TypeScript タイプがプロジェクトに自動的に統合されます。また、Web コンポーネントは、任意のサーバー コンポーネントまたは別の Web コンポーネント内で使用できます。

Build Reactive Web Components with SSR

さらに詳しく知りたい場合は、Brisa ニュースレターを購読して、Brisa に関する最新ニュースと更新情報を受け取ることをお勧めします。 9 月末までには発売の準備が整うと予想しています。

Web コンポーネント ライブラリ作成者向けの注意事項

Brisa を試して独自の Web コンポーネント ライブラリを作成することをお勧めします。 「made with Brisa」バッジを付けると、Brisa ページにあなたのライブラリへのリンクが貼られます。


Build Reactive Web Components with SSR


  Made with Brisa

この記事で説明したカウンターの例の GitHub リポジトリを参照して、独自の作成の参考として使用できます。

  • https://github.com/aralroca/counter-wc

結論

この投稿では、SSR および任意の JavaScript フレームワークまたは Vanilla JS で動作するリアクティブ Web コンポーネントを構築する方法を説明しました。 Brisa を使用して Web コンポーネントを構築し、それを Vanilla JS プロジェクトにロードする方法と、それを使用して SSR を実行する方法を見てきました。

この投稿を楽しんでいただき、何か新しいことを学んでいただければ幸いです。ご質問がございましたら、以下のコメント欄でお気軽にお問い合わせください。喜んでお手伝いさせていただきます。

コーディングを楽しんで、残りの夏も楽しんでください! ??


Build Reactive Web Components with SSR

残りの夏も楽しんでください!
リリースステートメント この記事は次の場所に転載されています: https://dev.to/aralroca/build-reactive-web-components-with-ssr-3pb9?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>
  • 画像を任意の角度で回転するための React フックを作成する
    画像を任意の角度で回転するための React フックを作成する
    Web 開発では画像を回転する必要がある場合がありますが、これは CSS で簡単に行うことができます。次のような単純なコード:rotate(90deg);。しかし、それを JS でやりたい場合はどうすればよいでしょうか? TLDR ブラウザ環境のキャンバスに画像を描画し、回転させます...
    プログラミング 2024 年 11 月 8 日に公開
  • Lithe のミドルウェア: その仕組みと独自のミドルウェアを作成する方法
    Lithe のミドルウェア: その仕組みと独自のミドルウェアを作成する方法
    ミドルウェアは、アプリケーションに入る HTTP リクエストを検査およびフィルタリングするための便利なメカニズムを提供します。 たとえば、Lithe には、ユーザーが認証されているかどうかを確認するミドルウェアが含まれています。そうでない場合、ミドルウェアはユーザーをログイン画面にリダイレクトします...
    プログラミング 2024 年 11 月 8 日に公開
  • JavaScript で要素が繰り返される配列を作成するにはどうすればよいですか?
    JavaScript で要素が繰り返される配列を作成するにはどうすればよいですか?
    JavaScript で繰り返される要素の配列同じ要素が複数回繰り返される配列を作成することは、さまざまなプログラミング シナリオで不可欠です。 Python では、これは [2] * 5 にあるようにリスト乗算で実現できます。ただし、この機能は JavaScript の配列では直接利用できません。...
    プログラミング 2024 年 11 月 8 日に公開
  • ## MySQL における LIKE と LOCATE: パフォーマンスの点で優れているのはどちらの演算子ですか?
    ## MySQL における LIKE と LOCATE: パフォーマンスの点で優れているのはどちらの演算子ですか?
    MySQL LIKE と LOCATE のパフォーマンスの比較MySQL でデータを検索するとき、LIKE と LOCATE のどちらの演算子がより効率的であるか疑問に思うかもしれません。この記事では、これら 2 つの演算子のパフォーマンスの違いについて説明します。一般的な使用シナリオでは、LIKE...
    プログラミング 2024 年 11 月 8 日に公開
  • PHP を使用してフォーム データで複数の MySQL 行を更新するにはどうすればよいですか?
    PHP を使用してフォーム データで複数の MySQL 行を更新するにはどうすればよいですか?
    フォーム データによる複数の MySQL 行の更新Web 開発では、ユーザーがデータベースのレコードを編集できるフォームを使用するのが一般的です。一般的なシナリオは、変更されたデータで同じテーブル内の複数の行を更新することです。これは、PHP と MySQL を使用して実現できます。フォームの構造と...
    プログラミング 2024 年 11 月 8 日に公開
  • Go で []byte を文字列に代入できないのはなぜですか?
    Go で []byte を文字列に代入できないのはなぜですか?
    バイト割り当てエラーについて: [] バイトを文字列に割り当てることができませんフォルダー内のファイルを読み取ろうとしたときに、エラーが発生しましたファイルの内容を読み取ろうとすると、「複数の割り当てで []byte を z (文字列型) に割り当てることができません」というメッセージが表示されます...
    プログラミング 2024 年 11 月 8 日に公開
  • React と Typescript を使用してカスタム テーブル コンポーネントを作成する方法 (パート 2)
    React と Typescript を使用してカスタム テーブル コンポーネントを作成する方法 (パート 2)
    導入 わーい! ?この 2 部構成のシリーズの最終部分に到達しました。まだパート 1 をチェックしていない場合は、ここで止めて、最初にパート 1 を読んでください。心配しないでください。戻ってくるまで待っています。 ? パート 1 では、CustomTable コンポーネントを構築...
    プログラミング 2024 年 11 月 8 日に公開
  • TypeScript と ioredis を使用して Node.js で高性能キャッシュ マネージャーを構築する
    TypeScript と ioredis を使用して Node.js で高性能キャッシュ マネージャーを構築する
    ioredis 上に構築された多用途で使いやすいキャッシュ マネージャーを使用して、Node.js アプリのパフォーマンスを向上させます。キャッシュを簡素化し、効率を最適化し、運用を合理化します。 私は、使いやすさとパフォーマンスに重点を置いて、自分のニーズに合わせて ioredis 上に構築された...
    プログラミング 2024 年 11 月 8 日に公開
  • スーパークラス参照とサブクラスオブジェクト
    スーパークラス参照とサブクラスオブジェクト
    Java は厳密に型指定された言語です。 標準変換と自動プロモーションはプリミティブ型に適用されます。 タイプの互換性は厳密に適用されます。 通常、あるクラスの参照変数は別のクラスのオブジェクトを参照できません。 クラス X とクラス Y は構造的に同じであっても、型が異なるため、X の参照を Y...
    プログラミング 2024 年 11 月 8 日に公開
  • Flexbox における flex-grow と width はどのように異なりますか?
    Flexbox における flex-grow と width はどのように異なりますか?
    Flexbox の flex-grow と width の違いFlexbox には、要素間でスペースを分配するための 2 つの主な方法、flex-grow と width が用意されています。これらのプロパティの違いを理解することは、フレックスボックスを効果的に使用するために非常に重要です。Flex...
    プログラミング 2024 年 11 月 8 日に公開
  • フォームのラベルと入力を同じ行に水平方向に揃えるにはどうすればよいですか?
    フォームのラベルと入力を同じ行に水平方向に揃えるにはどうすればよいですか?
    フォームのラベルと入力を同じ行に水平方向に配置するWeb 開発では、フォームの美しさはユーザー エクスペリエンスにとって非常に重要です。ラベルと入力フィールドを同じ行に配置すると、フォームの読みやすさと使いやすさが向上します。この記事では、入力要素の長さに関係なく、入力要素をそのラベルとシームレスに...
    プログラミング 2024 年 11 月 8 日に公開
  • 再帰 -1
    再帰 -1
    はじめに 1 関数がそれ自体を呼び出すプロセスは再帰と呼ばれ、 対応する関数は 再帰関数. と呼ばれます。 コンピュータープログラミングは数学の基本的な応用なので、let まず、再帰の背後にある数学的推論を理解しようとします。 一般に、関数の概念は誰もが知っています。簡単に言うと、...
    プログラミング 2024 年 11 月 8 日に公開
  • ロギングおよびエラー処理ミドルウェアを Go API に追加する
    ロギングおよびエラー処理ミドルウェアを Go API に追加する
    簡単なメモ: JWT 認証に関する私の以前の投稿をチェックして、レンダリングの問題がいくつかあることに気づいた場合は、それらは現在修正されています。これらの例はそのチュートリアルの上に構築されているため、必ずもう一度見てください。 :) さて、Go API を実行し、JWT 認証を追加し、Postg...
    プログラミング 2024 年 11 月 8 日に公開
  • Tensorflow 音楽予測
    Tensorflow 音楽予測
    この記事では、tensorflow を使用して音楽のスタイルを予測する方法を示します。 私の例では、テクノとクラシック音楽を比較します。 コードは私の github にあります: https://github.com/victordalet/sound_to_partition I ...
    プログラミング 2024 年 11 月 8 日に公開
  • useEffect フックの説明
    useEffect フックの説明
    useEffect フックは React の基本的な部分であり、機能コンポーネントで副作用を実行できるようにします。詳細な内訳は次のとおりです: useEffectとは何ですか? useEffect フックを使用すると、データのフェッチ、サブスクリプション、DOM の手動変更などの副...
    プログラミング 2024 年 11 月 8 日に公開

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3