Raguによる微小フロントエンド
なぜマイクロフロントを使うのか?
今日では、マイクロサービスは、チームがバックエンドで独立に到達するのを助ける人気があります.マイクロサービスモデルを使用している企業でさえ、フロントエンドのモノリスではまだ疲れている.
マイクロフロントエンドのアーキテクチャがどのように見えるかを理解するために、eコマースを例に挙げましょう.
電子商取引は、複数のドメインと分野を持つ複雑なアプリケーションです.時間をかけてすべての複雑さを扱うチームだけを想像するのは難しい.
フロントエンドモノリスの取扱い方法
フロントエンドモノリスを扱うのに、2つのアプローチが主に見られました.最初のものはフロントエンドチームを持つことです.このアプローチによる主な問題は、あなたのチームが製品APIチームでない限り、バックエンドチームは自分で価値を提供できないということです.
もう一つの一般的なアプローチは、共有フロントエンドモノリスを持つことです.通常、このアプローチを使用する企業はまた、チームが互いのPRSを承認する「オープンソース企業」の考え方を持っています.
このアプローチでは、チームはより自律性を持ち、外部依存関係なしで値を提供することができます.しかし、彼らはまだ大きな複雑なコードベースを共有するいくつかの痛みポイントに直面している.彼らは所有権の欠如、コードベース上での基準の欠如、マージの競合、苦しいメーカーの決定過程があまりにも多くの人々を含むように直面する可能性があります.
マイクロフロントアプローチ
バックエンドでは、会社は長年これらの痛み点に対処するために、マイクロサービスを使用していました.マイクロサービスのアイデアをフロントエンドに拡張する場合
それからチームは彼らの配達プロセスで完全な自治を持つことができました.
Raguアーキテクチャ
RAGUは2つの主要なアプリケーションにまとめられています.
ragu-server
and ragu-client
. RAGUサーバは、多くのRESTful MicroServiceと同じように、マイクロフロントエンドとしてコンポーネントを公開します.各マイクロフロントエンドは、コンポーネントを解決するために、RGUクライアントが使用するMicroFrontend HTMLと他のプロパティを返す独自のリソースURLを持っています.
RAGUクライアントは基本的にMicroFrontendリソースURLを受け取り、マイクロフロントエンドをレンダリングします.
アプリケーションを作成するには
application entrypoint
これはragu client
. また、我々は多くを持つことができますragu servers
我々が必要として.それは1つをお勧めしますragu server
ドメインごと.RAGUコード例
Raguは技術不可知論です.あなたの好きなフレームワークでRaguを使用することができます.この例では、我々は反応を使用します.
npm install ragu-server
RAGUには、プロジェクトを構築するスクリプトが付属しています.あなたがする必要があるのはconfig
これらのスクリプトのファイルをpackage.json
.{
"scripts": {
"ragu:build": "ragu-server build ragu-config.js",
"ragu:start": "ragu-server run ragu-config.js",
"ragu:dev": "ragu-server dev ragu-config.js"
}
}
設定ファイル
設定ファイルを作成するには、
ragu-react-server-adapter
図書館.npm install ragu-react-server-adapter
The ragu-config.js
は以下のようになります:const {createReactRaguServerConfig} = require('ragu-react-server-adapter/config');
module.exports = createReactRaguServerConfig({
compiler: {
assetsPrefix: 'http://localhost:3100/component-assets/'
},
components: {
namePrefix: 'my_project_name_'
}
});
反応の詳細についてはragu-config.js
ファイルをチェックしますhttps://ragu-framework.github.io/#!/ragu-react-server-adapter 楽しい事実:ドキュメントは、実際にマイクロフロントエンドです.Herokuの無料サーバーによってホストされていますので、ロードする時間がかかります.
RAGUサーバ:コンポーネントの公開
RAGUサーバはファイルシステムベースのルーティングシステムを持っており、コンポーネントURLがコンポーネントディレクトリの名前と一致することを意味します.すべてのコンポーネントは
ragu-components
ディレクトリ.マイクロフロントエンドとして反応コンポーネントを公開するには、コンポーネントを返す関数をエクスポートする必要があります.
<project_root>/ragu-components/hello-world/index.jsx
:import React from 'react';
const HelloComponent = () => (<div>
<h2>Hello, World</h2>
</div>);
export default () => <HelloComponent />
RAGUの主な利点の1つは、それがあなたのアプリケーションの薄層であるということです.あなたはそれが動作するように、アプリケーション全体を変更する必要はありません.実際に、コンポーネントをマイクロフロントエンドとしてエクスポートします.このリポジトリをチェックしてください.
カルロスマニラ / RAGUサーバの反応例
こんにちは反応
マイクロフロントエンドこんにちは、世界を言う!
走る
npm install
開発サーバ
npm run ragu:dev
生産サーバー
npm run ragu:build
npm run ragu:start
例1 :シンプルなハローワールド
npm run ragu:dev
npm run ragu:build
npm run ragu:start
Renders a React component saying hello:
例2:こんにちは、小道具と世界
Renders a React component saying hello for a given name:
例2:こんにちは、世界の状態
Renders a React component saying hello for a pokemon a given pokemon id:
The state is loaded from the PokéAPI. It is nice that the state is always fetched from the server. It means the client receives the component completely resolved.
RAGUクライアント:マイクロフロントエンドを使う
Your application entrypoint can be anything: A React SPA, a VueJS application, a node application that renders HTML, or even a single HTML page. You don't need to learn a whole new framework.
For React, there is a client to make the integration even more straightforward.
npm install ragu-client-react
import { RaguComponent } from "ragu-client-react";
function App() {
return (<div>
<h1>My Drawer App</h1>
<RaguComponent src="http://localhost:3100/components/hello-world"></RaguComponent>
</div>);
}
export default App;
完全な例を確認してください.カルロスマニラ / RAGUクライアントの反応例
アプリケーションを作成する反応
このプロジェクトはブートしたCreate React App .
利用可能なスクリプト
プロジェクトディレクトリで実行できます.
糸開始
開発モードでアプリケーションを実行します.
オープンhttp://localhost:3000 ブラウザで表示するには.
あなたが編集をするならば、ページは再ロードされます.
コンソール内のlintエラーも表示されます.
依存
このプロジェクトは100 %に依存するHello World Microfrontend .
確認してください.
View on GitHub
なぜ使用する?
MicronFrontendを使用するので、iframeを使用するのと同じくらい簡単です.
マイクロフロントを公開するには、ストーリーブックを使用するように
サーバー側のレンダリングは、より良いユーザーエクスペリエンスの検索エンジンでアプリケーションの可視性を向上させる.
あなたはチームが独立した展開と値のストリームに集中することができます.統合はちょうどURLです.アーティファクト統合はない.
試してみるhttps://ragu-framework.github.io
Reference
この問題について(Raguによる微小フロントエンド), 我々は、より多くの情報をここで見つけました https://dev.to/carlosmaniero/micro-frontends-with-ragu-5cb5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol