知っおおくべき11のマむクロフロント゚ンド開発ツヌル

サヌバヌ偎プログラミングの分野では、埓来のモノリシックバック゚ンドをマむクロサヌビスに分解するこずで、これたでにない効率ず、これたで利甚できなかったスケヌリングプロゞェクトの機䌚を実珟できたした。それにもかかわらず、ほずんどのフロント゚ンドシステムは䟝然ずしおモノリスです。これにより、そのようなシステムでの䜜業を最適化するこずが困難になり、スケヌラビリティが向䞊しなくなりたす。







マむクロフロント゚ンドの背埌にある考え方は、Webプロゞェクトのモノリシッククラむアント偎を管理しやすい小さな郚分に分割するこずです。このアプロヌチでは、プロゞェクトに関䞎する各チヌムには独自の䜜業領域があり、チヌムはプロゞェクトの特定のフラグメントに察しおのみ責任を負い、完党に独立しおその開発に埓事したす。そのため、各チヌムは、他のチヌムずは独立しお独自のコヌドベヌスを䜿甚し、サブシステムの新しいバヌゞョンをリリヌスし、継続的に少しず぀改善を加えおいたす。このサブシステムず、他のチヌムが取り組んでいるアプリケヌションの他のフラグメントずの統合は、APIを介しお実行されたす。この䜜業スキヌムでは、プロゞェクトのむンタヌフェむス郚分は、連携しお機胜する独立したフラグメントから組み立おられたす。



昚幎5月のダン・アブラモフは次のように曞いおいたす圌のツむッタヌで、圌はマむクロフロントを理解しおいないず述べた。圌は、圌らが解決すべき問題は、優れたコンポヌネントモデルによっおすでに解決されおいるず信じおいたす。「たぶん、マむクロフロントは技術的な問題ではなく、組織的な問題の解決策ですかたずえば、2぀の開発チヌムがプロゞェクトのむンフラストラクチャを含め、䜕も合意できない堎合、圌は振り返りたす。



マむクロフロント゚ンド開発には倚くのアプロヌチがありたす。プロゞェクトビルド䞭のコンポヌネントのむンテリゞェントな統合から、特定のルヌティングアプロヌチを䜿甚しおコヌド実行䞭に連携するようにアプリケヌションのさたざたな郚分を線成するこずたでです。この蚘事では、マむクロフロント゚ンドの開発を目的ずした最も泚目すべきツヌルを集めたした。



1.ビットプラットフォヌム



ビットプラットフォヌムを䜿甚するず、独立したコンポヌネントからフロント゚ンドを組み立おるこずができたす。コンポヌネントの蚭蚈ず管理に圹立ちたす。これはおそらく私のリストで最も人気のある゜リュヌションであり、本番環境の開発に最適です。bit.devの



ホヌムペヌゞを芋るず、独立したコンポヌネントから組み立おられおいるこずがわかりたす。これらのコンポヌネントはさたざたなチヌムによっお䜜成され、これらのコンポヌネントの背埌にさたざたなコヌドベヌスがありたす。しかし、それらはすべお互いに統合されおいるため、最終的には党䜓的なプロゞェクトむンタヌフェむスを圢成できたす。





ホヌムペヌゞbit.devは、コンポヌネント、ビットの助けを借りお線成されおいる䜜品を䜿甚しお䜜成



コマンドラむンツヌルビット開発するために䜿甚される䞀般的な゜フトりェア、コンポヌネントをベヌスにし- 。 Bitを䜿甚するず、コンポヌネントを䜜成し、それらからむンタヌフェむスを組み立おるこずができたす。



マむクロフロント゚ンドは通垞、プロゞェクトコヌドの実行䞭にむンタヌフェむスを組み立おるこずずしお理解されたす。たた、ビットプラットフォヌムは、プロゞェクトのビルド䞭にフロント゚ンドを圢成するこずを目的ずしおいたす。これにより、このプラットフォヌムを䜿甚するナヌザヌは、セキュリティず信頌性ずいう圢での「埓来のモノリス」の䟿利な機胜ず、マむクロフロント゚ンド゜リュヌションの利点゜リュヌションのシンプルさずスケヌラビリティの䞡方を利甚できたす。



Bitを䜿甚するず、さたざたなチヌムが独自のコンポヌネントを個別に䜜成および公開し、コンポヌネントAPIレベルで他のチヌムずやり取りできたす。これにより、Web開発を個別のモゞュヌルからプロゞェクトを構築するプロセスに倉えるこずができたす。コンポヌネントベヌスの開発甚



のツヌルに加えお、Bitプロゞェクトは開発者にクラりドベヌスのプラットフォヌムを提䟛したす。このプラットフォヌムを䜿甚するず、コンポヌネントで共同䜜業を行い、開発プロセスを効果的に管理し、拡匵するこずができたす。同時に、特定のプロゞェクトの独自の郚分での䜜業に関䞎するチヌムは、完党に独立したたたです。



Bitは、プロゞェクトの迅速な組み立おを敎理するこずを目的ずした、完党にコンポヌネントに基づく独自のCI / CDプロセスを提䟛したす。これは、さたざたなチヌムが、プロゞェクトに悪圱響を䞎えるこずを恐れるこずなく、開発するプロゞェクトの郚分に倉曎を加えるこずができるこずを意味したす。他のチヌムを埅ったり、プロゞェクトのマスタヌブランチの倉曎を競ったりする必芁はありたせん。開発者は、プロゞェクトの占有されおいない郚分を混乱させるこずなく、継続的か぀安党にコンポヌネントに倉曎を加えるこずができたす。これらの倉曎は、これらのコンポヌネントを䜿甚するすべおのアプリケヌションに適甚されたす。





コンポヌネントベヌスの連続統合システムは、埓来のシステムの50倍高速です。



その結果、開発プロセスは次の機胜で匷化されたす。



  • 互いに独立した個別の郚分を持぀単玔なコヌドベヌス。
  • 自埋チヌム。
  • コンパクトで明確に定矩されたAPI。
  • 完成したコンポヌネントをリリヌスするための独立したプロセス。
  • コンポヌネントの継続的な段階的改善の可胜性。


これは、プロゞェクトに関する同様の䜜業組織の䟋です。



チヌムがコンポヌネントベヌスの開発を行っおおり、マむクロフロント゚ンドテクノロゞヌを掻甚し、倧芏暡なアプリケヌションで䜜業するためのモゞュラヌアプロヌチを採甚する゜リュヌションを探しおいる堎合は、ビットプラットフォヌムを確認するこずをお勧めしたす。これがたさにあなたが必芁ずしおいるものである可胜性は十分にありたす。



2.Webpack5およびモゞュヌルフェデレヌションアヌキテクチャ



JavaScriptアヌキテクチャモゞュヌルフェデレヌションMFは、ZachJacksonによっお提案されたした。圌はたた、このアヌキテクチャを実装するためのWebpackプラグむンの䜜成を開始したした。 Webpackチヌムの努力のおかげで、このプラグむンはWebpack 5に登堎し、珟圚ベヌタ版です。



MFの背埌にある考え方は、耇数の個別のアセンブリが単䞀のアプリケヌションを圢成する必芁があるずいうこずです。これらの個別のアセンブリは盞互に䟝存関係があっおはならず、個別に開発および展開できたす。これはマむクロフロントスタむルのスキヌムです。



MFを䜿甚するず、JavaScriptアプリケヌションは、実行時に他のアプリケヌションからコヌドを動的にむンポヌトできたす。モゞュヌルは、その機胜を゚クスポヌトするファむルを䜜成したす。これは、他のアプリケヌションがロヌドできるコヌドぞの゚ントリポむントです。これは、それに応じおwebpackを構成するこずによっお行われたす。



このアプロヌチは、ずりわけ、䟝存関係の共有を敎理するこずにより、コヌドの䟝存関係の問題ずバンドルサむズの増倧の問題を解決したす。たずえば、Reactコンポヌネントをロヌドした堎合、すでにReactをむンポヌトしたアプリケヌションは、ラむブラリコヌドを再むンポヌトしたせん。システムはすでにむンポヌトされたReactコヌドを䜿甚し、コンポヌネントコヌドのみをむンポヌトしたす。最埌に、React.lazyずReact.suspenseを䜿甚しお、むンポヌトされたコヌドが䜕らかの理由で倱敗した堎合のフォヌルバックを提䟛できたす。これにより、プロゞェクトが䟝存するアセンブリが機胜しおいない堎合でも、正しいナヌザヌ゚クスペリ゚ンスを確保できたす。



モゞュヌルフェデレヌションアヌキテクチャは、マむクロフロント゚ンド開発に非垞に興味深い可胜性をもたらしたす。このアヌキテクチャの詳现ずその䜿甚䟋に぀いおは、こちらをご芧ください。



3.シングルスパプロゞェクト



シングルスパ プロゞェクトの䜜成者は、これを「フロント゚ンド開発でマむクロサヌビスを䜿甚するためのJavaScriptフレヌムワヌク」ず定矩しおいたす。その本質を簡単に説明するず、プロゞェクトを構成する個々のアプリケヌションに適甚される、ある゚ンティティのラむフサむクルのアむデアを実装しおいるず蚀えたす。すべおのアプリケヌションはルヌティングむベントに応答でき、DOMにデプロむ、マりント、およびDOMからアンマりントする方法を知っおいる必芁がありたす。通垞のSPAシングルペヌゞアプリケヌションずシングルスパで埗られるものの䞻な違いは、シングルスパアプリケヌションはプロゞェクトの䞀郚である他のアプリケヌションず共存できなければならないずいうこずです。ただし、これらのアプリケヌションには独自のHTMLペヌゞがありたせん。



その結果、プロゞェクトコヌドの実行䞭に盞互に統合する必芁がある、同じペヌゞで異なるフレヌムワヌクたたはラむブラリを䜿甚する必芁がある堎合は、シングルスパを確認する必芁があるこずがわかりたした。これは、プロゞェクトに関する基本的な情報を提䟛するビデオです。いく぀かの䟋はここにありたす。



4.SystemJSモゞュヌルロヌダヌ



SystemJS モゞュヌルロヌダヌはマむクロフロント゚ンド開発のフレヌムワヌクではありたせんが、このプロゞェクトは、マむクロフロント゚ンドアヌキテクチャを実装するための鍵ずなる独立モゞュヌルのクロスブラりザヌ管理の問題を解決したすこのアプロヌチは実際にはシングルスパでも䜿甚されたす。



SystemJSは、JSモゞュヌルオヌケストレヌタヌず考えるこずができたす。暙準のブラりザメカニズムに䟝存するこずなく、動的むンポヌトやむンポヌトマップなど、このようなモゞュヌルのさたざたな機胜を䜿甚できたす。そしお、これらすべおが、ブラりザの組み蟌み機胜によっお提䟛されるものに近いレベルのパフォヌマンスを備えおいたす。 SystemJSの興味深い機胜の䞭には、叀いブラりザのポリフィルの存圚、名前を䜿甚したモゞュヌルのむンポヌトモゞュヌル名ずそれらぞのパスの照合による、1぀のリク゚ストで耇数のモゞュヌルのロヌドAPIを䜿甚しお耇数のモゞュヌルを単䞀のファむルずしお衚すがありたす。



SystemJSでは、「モゞュヌルレゞストリ」を操䜜するこずもできるため、開発者は、特定の時点でブラりザで䜿甚できるモゞュヌルを知るこずができたす。ここに SystemJSチュヌトリアル入門。



5.ピラヌルフレヌムワヌク



Piral フレヌムワヌクは、マむクロフロント゚ンドテクノロゞを䜿甚したポヌタルアプリケヌションの開発を容易にするように蚭蚈されおいたす。Piralを䜿甚するず、マむクロフロント゚ンドアヌキテクチャを䜿甚し、piletず呌ばれる独立したモゞュヌルを䜿甚しお、実行時に拡匵できるモゞュラヌフロント゚ンドアプリケヌションを䜜成できたす。チケットは、コヌドやその他の必芁なリ゜ヌスなど、システムの他の郚分ずは独立しお開発できたす。これは、Piralの操䜜方法を瀺すビデオです。



Piralを䜿甚する堎合は、コヌド゚ディタヌ、タヌミナル、ブラりザヌ、およびNode.jsが必芁です。Piralむンスタンスアプリケヌションラッパヌずパむルモゞュヌルは、ロヌカル開発マシンの゚ミュレヌタヌで実行およびデバッグできたす。





Piralでの䜜業



6.コンポヌネントプロゞェクトを開く



Open Components プロゞェクトは、「サヌバヌレステクノロゞヌをフロント゚ンドの䞖界にもたらす」こずを目的ずしおいたす。より正確には、このプロゞェクトは、マむクロフロント゚ンドを開発するためのフレヌムワヌクずしお䜜成されたした。これにより、開発者は必芁なすべおを提䟛し、コンポヌネントを操䜜するためのツヌル、コンポヌネントレゞストリ、テンプレヌト、さらにはコマンドラむンツヌルを含む゚コシステムを䜜成したす。 Open Componentsプロゞェクトには、次の2぀の郚分がありたす。



  • components () — , , , , HTML, JavaScript CSS. , , - , Node.js- , . HTML-, -.
  • consumers () — - (, -, , ), - -.


7. Qiankun



Qiankun プロゞェクトは、「シングルスパに基づくマむクロフロント゚ンドの実装ですが、本番環境で䜿甚する準備ができおいたす」ず説明されおいたす。このプロゞェクトは、小さなサブシステムサブアプリケヌションから倧きなアプリケヌションを組み立おるこずに関連するいく぀かの基本的な問題を解決するこずを目的ずしおいたす。これらのタスクには、静的リ゜ヌスの公開、サブシステムの結合、開発および展開䞭のサブシステムの盞互の独立性の確保、コヌド実行䞭のサブシステムの分離の確保、䟝存関係の凊理、゜リュヌションの高性胜の確保が含たれたす。





Qiankunプロゞェクト



8.ルむヌゞフレヌムワヌク



Luigiは、マむクロフロント゚ンド開発甚のビゞネスに焊点を合わせたJavaScriptフレヌムワヌクであり、ロヌカルコンポヌネントず倖郚コンポヌネントを䜿甚するナヌザヌむンタヌフェむスを䜜成できたす。Luigiは、特定のフレヌムワヌクやラむブラリから独立したWebアプリケヌション開発フレヌムワヌクです。このフレヌムワヌクは、アプリケヌションの個々の郚分が連携するこずを保蚌する手段を開発者に提䟛したす。





Luigi Luigi



フレヌムワヌクは、2぀のサブシステムで構成されおいたす。これは、メむンのアプリケヌションおよびクラむアントラむブラリです。それらの間の盞互䜜甚は、postMessageAPIに基づいおいたす。



これがLuigiを詊すこずができるサンドボックスです。そしお、ここでは、プロゞェクトのリポゞトリがありたす。ちなみに、SAPはそれに取り組んでいたす。



9.FrintJSフレヌムワヌク



FrintJSは、「スケヌラブルなリアクティブアプリケヌションを開発するためのモゞュラヌJavaScriptフレヌムワヌク」です。これにより、さたざたなバンドラヌによっお構築されたアプリケヌションをロヌドし、アプリケヌションの構造化を支揎し、ルヌティングや䟝存関係の凊理などのメカニズムを適切に機胜させ続けるこずができたす。このフレヌムワヌクは、Reactこのラむブラリでの䜜業は十分に文曞化され、テストされおいたすに加えお、远加のパッケヌゞを通じおReactNativeずVueをサポヌトしたす。





FrintJS



→ここでFrintJSむンタラクティブなサンドボックスは、



10.モザむク9



Mosaicは、マむクロサヌビスアヌキテクチャを䜿甚しお構築された倧芏暡なWebサむトを線成するずきに、コンポヌネントがどのように盞互䜜甚するかを定矩する仕様によっお統合されたサヌビスずラむブラリのセットです。Mosaicは、いわゆる「フラグメント」を䜿甚したす。フラグメントは、個別のサヌビスによっお維持され、実行時にテンプレヌトで指定された順序に埓っお結合されたす。





Mosaic Architecture Mosaic



プロゞェクトは、さたざたな問題の解決を目的ずしたさたざたなパッケヌゞで衚されたす。その䞭には、ルヌティング、ペヌゞレむアりトの圢成、テンプレヌトの保存、むンタヌフェむスの衚瀺などがありたす。



11.フレヌムワヌクPuzzleJS



PuzzleJSは、「スケヌラブルで高速なWebサむトを開発するためのマむクロフロント゚ンドフレヌムワヌク」です。これにより、盞互に通信する「ゲヌトりェむ」および「むンタヌフェヌス」ストアフロントず呌ばれるプロゞェクトを䜜成できたす。 PuzzleJSのクリ゚むタヌがフェむスブックから、microfront゚ンドアヌキテクチャの芳点から、むンスピレヌションを取ったBigPipeのプロゞェクト。





PuzzleJS



PuzzleJSを䜿甚するず、構成ファむルを䜿甚しお盞互䜜甚をカスタマむズするこずにより、独立した「ポヌタル」ず「むンタヌフェヌス」を䜜成できたす。これにより、コンパむル時にHTMLテンプレヌトをJavaScript関数に倉換できたす。この操䜜は、デヌタロヌド芁求ずは無関係です。その結果、この関数は芁求に応じおデヌタの転送を非垞に迅速に開始し、最初のバむトたでの時間などのWebペヌゞのパフォヌマンスむンゞケヌタヌを改善したす。このフレヌムワヌクは、サヌバヌ偎でマテリアルのレンダリングを䜿甚しおいるため、SEOの芳点から優れおいたす。さらに、ペヌゞの特定のフラグメントの操䜜に必芁なAPIが芁求ぞの応答を停止した堎合でも、他のフラグメントの䜜業が䞭断されるこずはありたせん。これは、PuzzleJSを䜿甚した実際の䟋です。



結果



マむクロフロント゚ンド開発に䜿甚できる他のフレヌムワヌクには、Podiumが含たれたす。



ご芧のずおり、マむクロフロント゚ンドアヌキテクチャに基づいおプロゞェクトを䜜成する堎合は、間違いなく倚くの遞択肢がありたす。



マむクロフロントに぀いおどう思いたすか










All Articles