JP7451825B2 - マイクロフロントエンドシステム、サブアプリケーションロード方法、電子機器、及びコンピュータープログラム製品 - Google Patents

マイクロフロントエンドシステム、サブアプリケーションロード方法、電子機器、及びコンピュータープログラム製品 Download PDF

Info

Publication number
JP7451825B2
JP7451825B2 JP2023515655A JP2023515655A JP7451825B2 JP 7451825 B2 JP7451825 B2 JP 7451825B2 JP 2023515655 A JP2023515655 A JP 2023515655A JP 2023515655 A JP2023515655 A JP 2023515655A JP 7451825 B2 JP7451825 B2 JP 7451825B2
Authority
JP
Japan
Prior art keywords
sub
application
routing
resource
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2023515655A
Other languages
English (en)
Other versions
JP2023541033A (ja
Inventor
思名 ▲陳▼
▲亮▼之 ▲羅▼
江松 ▲陳▼
▲鵬▼ ▲蒋▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Publication of JP2023541033A publication Critical patent/JP2023541033A/ja
Application granted granted Critical
Publication of JP7451825B2 publication Critical patent/JP7451825B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9566URL specific, e.g. using aliases, detecting broken or misspelled links
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Description

(関連出願への相互参照)
本出願は、出願番号が202011520184.6であり、出願日が2020年12月21日である中国特許出願に基づいて提出され、該中国特許出願の優先権を主張し、該中国特許出願の全ての内容が参照により本出願に組み込まれる。
本出願の実施例は、インターネットの技術分野に関し、マイクロフロントエンドシステム、サブアプリケーションロード方法、電子機器、コンピュータープログラム製品及びコンピューター可読記憶媒体に関するが、これらに限定されない。
フロントエンド開発の過程で、開発プロジェクトはますます大きくなり、しかも製品の機能は複雑であり、コードの衝突が頻繁であり、影響が巨大になる。この一連の問題に対して、マイクロフロントエンドが誕生した。マイクロフロントエンドは、バックエンドマイクロサービスの概念を参考にして、巨大なフロントエンドプロジェクトを一つ一つの小さなプロジェクトに分割し、これらの小さなプロジェクトは独立的に開発、実行する能力を完全に備える。システム全体は、これらの小さなプロジェクトの協働によって、全てのページの表示とインタラクションを実現する。
関連技術のマイクロフロントエンドフレームワークのルーティングサービスはNginxサービスを使用して転送されるため、効率が低下し、センタールーティングはNginxサービスの安定性に依存しており、ディザスタリカバリ処理方案は複雑であり、NginxサービスはNginxサービスの構成に高度に依存しており、構成の変更はセンタールーティングNginxサービスを再起動する必要があり、メンテナンスコストが高い。
本出願の実施例は、マイクロフロントエンドシステム、サブアプリケーションロード方法、電子機器、コンピュータープログラム製品及びコンピューター可読記憶媒体を提供し、独立的にメンテナンス・実行する可能なノード(Node)サービスによって、容量拡張とディザスタリカバリ能力を向上させ、マルチフレームワークでのサブアプリケーション実行能力を提供する。
本出願の実施例の技術案は、以下のように実現される。
本出願の実施例は、マイクロフロントエンドシステムを提供し、前記マイクロフロントエンドシステムは、
ルーティング登録サービス、コマンドラインツール及びマイクロフロントエンド実行フレームワークを含み、
前記ルーティング登録サービスは、独立的にメンテナンス・実行(「保守・運用」、「メンテナンス・オペレーション」とも呼ばれる)するNodeバックエンドサービスであり、メインアプリケーションのマイクロフロントエンド実行フレームワークに、サブアプリケーションのルーティング情報、前記サブアプリケーションのロード方式及び前記サブアプリケーションのデプロイメント情報を提供するように構成され、
前記コマンドラインツールは、コマンドラインによりサブアプリケーション新規作成機能、サブアプリケーションアクセス機能、サービス登録機能を提供するように構成され、
前記マイクロフロントエンド実行フレームワークは、前記メインアプリケーションで実行されるフレームワークであり、取得されたネットワーク要求に基づいて前記サブアプリケーションをロードして実行し、マルチフレームワークでのサブアプリケーション実行能力を提供するように構成される。
本出願の実施例は、サブアプリケーションロード方法を提供し、前記方法は、電子機器によって実行され、マイクロフロントエンドシステムのために構成され、前記マイクロフロントエンドシステムは、ルーティング登録サービス、サブアプリケーションロードモジュール及びサブアプリケーション実行モジュールを含み、前記方法は、
サブアプリケーションにアクセスするように構成されたネットワークアクセス要求を取得するステップであって、前記ネットワークアクセス要求に前記サブアプリケーションのユニフォームリソースロケータ(URL:Uniform Resource Locator)アドレスが含まれるステップと、
前記サブアプリケーションのURLアドレスに基づいて、前記ルーティング登録サービスから前記サブアプリケーションに対応するルーティング情報をプルするステップと、
前記ルーティング情報に基づいて、前記アクセス対象ページがサブアプリケーションのページであると決定した場合、前記サブアプリケーションロードモジュールは、前記ルーティング情報に基づいて前記ルーティング登録サービスから前記ルーティング情報に対応するサブアプリケーションリソースを取得するステップと、
前記サブアプリケーションリソースをロードする必要がある場合、前記サブアプリケーションロードモジュールは、前記サブアプリケーションリソースをロードするステップと、
前記サブアプリケーション実行モジュールは、前記サブアプリケーションリソースを実行し、サブアプリケーションのページをレンダリングするステップと、を含む。
本出願の実施例は、コンピューター可読記憶媒体を提供し、前記コンピューター可読記憶媒体は、実行可能な命令が記憶され、前記実行可能な命令は、プロセッサによって実行されるとき、上述のマイクロフロントエンドシステムに基づくサブアプリケーションロード方法を実現する。
本出願の実施例は、電子機器を提供し、前記電子機器は、メモリと、プロセッサとを含み、前記メモリはコンピュータープログラムを記憶し、前記プロセッサは、前記コンピュータープログラムにより、上述のマイクロフロントエンドシステムに基づくサブアプリケーションロード方法を実行する。
本出願の実施例は、コンピュータープログラム製品を提供し、前記コンピュータープログラム製品は、コンピュータープログラムを含み、前記コンピュータープログラムは、プロセッサによって実行されるとき、上述のマイクロフロントエンドシステムに基づくサブアプリケーションロード方法を実現する。
本出願の実施例は、以下の有益な効果を有する。
本出願の実施例によるマイクロフロントエンドシステムは、ルーティング登録サービス、コマンドラインツール及びマイクロフロントエンド実行フレームワークを含み、独立的にメンテナンス・実行するNodeバックエンドサービスにより、優れた容量拡張とディザスタリカバリ能力を提供することができ、ルーティング登録サービスにより、メインアプリケーションのマイクロフロントエンド実行フレームワークにサブアプリケーションのルーティング情報、ロード方式及びサブアプリケーションのデプロイメント情報を提供し、コマンドラインツールにより、サブアプリケーション新規作成機能、サブアプリケーションアクセス機能、サービス登録機能を提供し、マルチフレームワークでのサブアプリケーション実行能力を提供する。
本出願の実施例によるマイクロフロントエンドシステムの構成の構造的模式図である。 本出願の実施例によるマイクロフロントエンドシステムの別の構成の構造的模式図である。 本出願の実施例によるマイクロフロントエンドシステムに基づくサブアプリケーションロード方法の実現フローの模式図である。 本出願の実施例によるマイクロフロントエンドシステムに基づくサブアプリケーションロード方法の別の実現フローの模式図である。 本出願の実施例によるマイクロフロントエンドシステムに基づくサブアプリケーションロード方法の実現フローの模式図である。 本出願の実施例によるマイクロフロントエンドシステムアーキテクチャの模式図である。 本出願の実施例によるマイクロフロントエンドシステムにおける通信メカニズムの模式図である 本出願の実施例によるサブアプリケーションロードモジュールによってサブアプリケーションリソースをロードする実現フローの模式図である。 本出願の実施例によるJSサンドボックスの設計模式図である。 本出願の実施例によるアプリケーション階層化の模式図である。
本出願の目的、技術案及び利点をより明確にするために、下記において図面を参照しながら本出願をさらに詳細に説明し、記載される実施例は、本出願に対する制限と見なすべきではない。当業者が創造的な労力を払うことなく得られる他の全ての実施例は、いずれも本出願の保護範囲に属する。
下記に記載される「いくつかの実施例」について、全ての可能な実施例のサブセットが記載されているが、理解可能なこととして、「いくつかの実施例」は全ての可能な実施例の同じサブセット又は異なるサブセットであってよく、しかも矛盾でなければ互いに組み合わせることができる。別途に定義されない限り、本出願の実施例で使用される全ての技術用語及び科学用語は、本出願の実施例の技術分野に属する当業者が一般に理解するものと同じ意味を有する。本出願の実施例で使用される用語は、本出願を限定することを意図するものではなく、単に本出願の実施例を説明するためのものである。
別途に定義しない限り、本明細書で使用される全ての技術用語及び科学用語は、本出願の技術分野に属する当業者が一般に理解するものと同じ意味を有する。本明細書で使用される用語は、本出願を限定することを意図するものではなく、単に本出願の実施例を説明するためのものである。
本出願の実施例をさらに詳細に説明する前に、本出願の実施例に係る名詞及び用語について説明する。本出願の実施例に係る名詞及び用語は、以下のように解釈される。
1)Vueフレームワーク:ユーザインターフェースを構築するためのプログレッシブフロントエンドフレームワークであり、Vueのコアライブラリはビューレイヤーのみに焦点を当てる。
2)Reactフレームワーク:ユーザインターフェースを構築するように構成されるJavaScript(JS)ライブラリであり、主にユーザインターフェースを構築するために構成され、Reactによって、さまざまなタイプのパラメータを渡すことができ、例えば、宣言コード、ユーザインターフェースのレンダリングが挙げられ、又は静的要素であってもよく、動的変数、ひいてはインタラクティブなアプリケーションコンポーネントを渡すこともできる。
3)JavaScriptサンドボックスメカニズム:セキュリティメカニズムであり、実行中のプログラムに隔離環境を提供し、外部と隔離する実行環境を提供することによってJSコードを実行し、マイクロフロントエンドでは、独立的にオンラインで実行する、互いに干渉しないコード、デカップリングを支援し、メンテナンスコストを削減するためによく使用される。
4)WebWorker:ハイパーテキストマークアップ言語(HTML:Hyper Text Markup Language)5によって提供されるJavaScriptマルチスレッドソリューションであり、ユーザインターフェースの動作を停止させることなく、計算量の多いコードをWebWorkerに渡して実行することができる。それは他のスクリプトから独立しており、ページの性能には影響しない。
5)シャドウファイルオブジェクトモデル(ShadowDom:Shadow Document Object Model):ハイパーテキストマークアップ言語の範疇に属し、ドキュメントのレンダリング時にドキュメントオブジェクトモデル要素サブツリーを挿入することが可能であり、ブラウザ開発者が独自のHTMLラベル、積層スタイルシート(CSS:Cascading Style Sheets)スタイル、特定のJavaScriptコードをパッケージングすることが可能であり、同時に開発者は<input>、<video>、<audio>などのようなカスタマイズされた1レベルのラベルを作成することもできる。
6)Props伝送:親コンポーネントのテンプレートは子コンポーネントを含み、親コンポーネントはデータ又はパラメータを子コンポーネントに一方向に伝送する必要があり、子コンポーネントはそれを受け取った後、パラメータに応じて異なるコンテンツをレンダリングするか、又は操作を実行し、この一方向にデータを伝送するプロセスはPropsによって実現される。
7)カスタムイベント(Custom Event)伝送:JavaScriptとHTMLの間のインタラクションはイベントによって実現され、イベントはドキュメント又はブラウザウィンドウで発生するいくつかの特定のインタラクションの瞬間であり、JavaScriptによって特定のカスタムイベントをいつでもトリガーすることができ、これらのイベントはブラウザが作成したイベントと同じである。
8)メッセージ送信PostMessage:HTML5によって導入されたアプリケーションプログラムインターフェースのメソッドであり、異なるソースからのスクリプトが非同期方式で有効な通信を行うことをサポートし、テキストドキュメント間、マルチウィンドウのクロスドメインのメッセージ伝送を実現することができ、ウィンドウ間のデータ通信として構成されることが多く、これにより、それは、クロスドメイン通信の有効なソリューションにもなる。
9)Iframe:ハイパーテキストマークアップ言語のラベルであり、別のドキュメントを含むインラインフレーム(即ち行内フレーム)を作成するように構成される。
10)Node.js:ChromeV8エンジンに基づくJavaScriptの実行環境であり、イベント駆動、ノンブロッキングI/Oモデルを使用して、JavaScriptをサーバの開発プラットフォームで実行させ、JavaScriptをPHP、Python、Perl、Rubyなどのサーバ言語と対等するスクリプト言語とさせる。
11)Polyfilling:あるメソッドがJavaScript仕様に既に存在するが、特定のJavaScriptエンジンはまだ該メソッドをサポートしていない場合、それを手動で実現することができ、それによってビルドインプロトタイプを補充する。
12)Single-SPA:1セットのマイクロフロントエンドフレームワークであり、ブラウザによるアドレスの切り替えを引き継いでアプリケーションの切り替えの目的を達成し、各アプリケーションの起動から破棄までのライフサイクルも管理し、ライフサイクルの変化過程において、追加の機能(アニメーションなど)を加えることができるとともに、Single-SPAは、既存のアプリケーションを統合するために、異なるSPAフレームワークにプラグインも提供する。
13)マイクロフロントエンド:メインアプリケーションとサブアプリケーションを含み、アプリケーションを複数の垂直部分のスライスに分割し、各スライスは下位階層のデータベースから上位階層のユーザインターフェースまで構築される。メインアプリケーションはフレームワークであり、主にログイン、メニュー、ナビゲーションを統合し、グローバルなデータとパブリックメソッドを提供し、それに対して、具体的な機能モジュールはできるだけサブアプリケーションで実現される。例えば、メインアプリケーションの機能は、ログイン、メニュー、及びナビゲーションを含むことができ、サブアプリケーションの機能は、具体的なページコンテンツに対応することができる。
14)ウェブパック(webpack):プロジェクト構造を分析し、JavaScriptモジュール及びブラウザが直接実行できない拡張言語を見つけ、それらをブラウザ用に適切なフォーマットに変換してパッケージングするために使用される。図10を参照して、図10は、本出願の実施例によるアプリケーション階層化の模式図であり、以下に実際のバックグラウンド管理システムを例として説明し、バックグラウンド管理システムはログイン認証が必要であり、左側のメニューバーと上方の個人情報ナビゲーションバーがあり、中間部分は具体的なページコンテンツであり、この特徴に基づいて、バックグラウンド管理システムをメインアプリケーション(ログインモジュール+メニューモジュール+ナビゲーションモジュール)とサブアプリケーション(具体的なコンテンツページモジュール)の2つの部分に分けることができる。メインアプリケーションの位置づけはメインフレームワークであり、主にログインモジュール、メニューモジュール、ナビゲーションモジュールを統合し、グローバルなデータとパブリックメソッドを提供し、サブアプリケーションは独立性をさらに考慮する必要があり、マイクロフロントエンドの環境であれば、サブアプリケーションは全体的なアプリケーションの一部とするため、メインアプリケーションと密接な関係があるが、サブアプリケーション自体として相対的な独立性を有する必要もあり、メインアプリケーションから離れても独立的に実行することができ、サブアプリケーションは、メインアプリケーションに統合されてマイクロフロントエンドのアーキテクチャで実行することもでき、メインアプリケーションから離れて独立的に実行することもでき、例えば、メインアプリケーションはWeb検索アプリケーションであり、サブアプリケーションは広告に関するアプリケーション、時事ネタに関するアプリケーションなどである。
関連技術のマイクロフロントエンドソリューションでは、ルーティングサービスはNginxサービスを使用して転送されるため、効率が低下し、センタールーティングはNginxサービスの安定性に依存しており、ディザスタリカバリ処理方案は複雑であり、NginxソリューションはNginxサービスの構成に高度に依存しており、構成の変更はセンタールーティングNginxサービスを再起動する必要があり、メンテナンスコストが高く、通信メカニズムが単一であり、これにより、アプリケーションが多くなると、イベント管理が難しくなり、Iframeを利用してアプリケーションローダーとすることで、サブアプリケーションに対するオーケストレーションと制御能力が不足する。関連技術のマイクロフロントエンドソリューションでは、マルチフロントエンドフレームワークにおけるサブアプリケーションの実行能力、マルチレベルルーティングにおけるサブアプリケーションのアクティブ化能力、メインアプリケーションによるサブアプリケーションの能動的な呼び出し、アクティブ化の能力を考慮せず、リソースのクロスドメインソリューションを提供しない。関連技術におけるマイクロフロントエンドソリューションは、リソースが統一的にデプロイされており、リソースを分散型でデプロイされた後に、フロントエンドがクロスドメインでリソースを呼び出す問題を解決せず、該リソースは、インターフェース要求、プライベート静的リソース、コンテンツ配信ネットワーク(CDN:Content Delivery Network)静的リソース、Web Workerリソースなどを含むが、これらに限定されない。
本出願の実施例は、マイクロフロントエンドシステムを提供し、該システムは、アプリケーションローダーモジュールを提供し、該アプリケーションローダーモジュールは、Vueフレームワーク、Reactフレームワークなどの各異なるフレームワークのフロントエンドアプリケーションをロードし、JavaScriptサンドボックスメカニズムを実現し、JS環境隔離を保証するように構成される。該システムはさらに、サブアプリケーションWebWorkerのクロスドメイン処理を提供し、サブアプリケーションのパッケージングにおけるCSSプレフィックスの入れ込み、サブアプリケーションの実行時のCSSプレフィックスの入れ込み、サブアプリケーションのShadowDom方式でのロードなどによってCSS隔離を実現し、Props伝送、Custom Event、PostMessageを含む3つの親子アプリケーション通信メカニズムを提供し、ルーティング登録サービスを提供し、中心化のルーティング発見能力を提供し、オリジナルのIframeでの実行を互換性があるようにサポートする。
以下、本出願の実施例が提供するマイクロフロントエンドシステムの例示的な応用を説明し、図1は、本出願の実施例によるマイクロフロントエンドシステムの構成の構造的模式図であり、図1に示すように、該マイクロフロントエンドシステム100は、ルーティング登録サービス101、コマンドラインツール102及びマイクロフロントエンド実行フレームワーク103を含み、ルーティング登録サービス101は、独立的にメンテナンス・実行するNodeバックエンドサービスであり、メインアプリケーションのマイクロフロントエンド実行フレームワークに、サブアプリケーションのルーティング情報、サブアプリケーションのロード方式及びサブアプリケーションのデプロイメント情報を提供するように構成される。ルーティング登録サービスを提供することにより、独立的にメンテナンス・実行可能なNodeサービスとして、優れた容量拡張、ディザスタリカバリ能力を提供し、マイクロフロントエンドのサブアプリケーションの登録をメンテナンスし、及びルーティングをロードする。
例として、ルーティング登録サービスは、ハイパーテキスト伝送プロトコル(HTTP:Hyper Text Transfer Protocol)サービスを提供するサーバであり得、実際に実現する時に、Node.jsによって実現され得、Koaフレームワークによりルーティングの記録、ルーティングの削除、ルーティングのクエリ、ログイン認証などの1セットの機能を備えたウェブサーバを実現し、データベースは、リレーショナルデータベース管理システム(MySQLなど)を使用する。ルーティング登録サービス101は、任意のサーバ又は言語によって同じ機能を実現するサービスであってもよく、例えば、Java Spring Cloud、C++ Server Kitなどが挙げられる。
該ルーティング登録サービスは、独立的にメンテナンス・実行するNodeバックエンドサービスであるため、該ルーティング登録サービスにはロードバランシングサービスを前置きすることもでき、ネットワーク要求を取得した後、各ルーティング登録サービスの負荷に基づいて、ネットワーク要求を負荷の小さいルーティング登録サービスに割り当てることができ、複数のルーティング登録サービスの負荷がいずれも大きい場合に、優れた容量拡張及びディザスタリカバリ能力を提供することもできる。
コマンドラインツール102は、コマンドラインによりサブアプリケーション新規作成機能、サブアプリケーションアクセス機能、サービス登録機能を提供するように構成される。
例として、Inquiurer.jsにより、ユーザがコマンドラインと対話するためのツール、即ち該コマンドラインツール102を提供することができる。実現するときに、該コマンドラインツールは、コマンドラインインターフェース(CLI:command-line interface)ツールであってもよく、npmライブラリ又はグラフィカルユーザインターフェース(GUI:Graphical User Interface)ツールであってもよい。該コマンドラインツール102により、ユーザが入力した、ユーザのサブアプリケーション作成、サブアプリケーションアクセスなどのコマンドを受信し、受信されたコマンドに基づいてサービス登録を行うことができる。
マイクロフロントエンド実行フレームワーク103は、メインアプリケーションで実行されるフレームワークであり、取得されたネットワーク要求に基づいてサブアプリケーションをロードして実行し、マルチフレームワークでのサブアプリケーション実行能力を提供することができるように構成される。
例として、メインアプリケーションは、マイクロフロントエンド実行フレームワークにアクセスする任意のアプリケーションである。実現する時に、マイクロフロントエンド実行フレームワークは、Single-SPAに基づいてマルチフレームサブアプリケーションロード能力を提供することができる。
本出願の実施例によって提供されるマイクロフロントエンドシステムは、ルーティング登録サービス、コマンドラインツール及びマイクロフロントエンド実行フレームワークを含み、ここで、ルーティング登録サービスは、独立的にメンテナンス・実行するNodeバックエンドサービスであり、このようにして、優れた容量拡張及びディザスタリカバリ能力を提供することができ、該ルーティング登録サービスは、メインアプリケーションのマイクロフロントエンド実行フレームワークに、サブアプリケーションのルーティング情報、ロード方式及びサブアプリケーションのデプロイメント情報を提供する。コマンドラインツールは、コマンドラインによりサブアプリケーション新規作成機能、サブアプリケーションアクセス機能、サービス登録機能を提供するように構成される。マイクロフロントエンド実行フレームワーク103は、メインアプリケーションで実行されるフレームワークであり、取得されたネットワーク要求に基づいてサブアプリケーションをロードして実行し、マルチフレームワークでのサブアプリケーション実行能力を提供することができるように構成される。
いくつかの実施例では、図1に示すように、マイクロフロントエンドシステムは、ルーティング登録サービスに対応するフロントエンドインターフェース104をさらに含み、フロントエンドインターフェース104により、サブアプリケーション登録に設定する必要があるサブアプリケーション登録情報を取得し、サブアプリケーション登録情報をルーティング登録サービスに送信する。
サブアプリケーション登録情報は、サブアプリケーションフレームワーク、サブアプリケーションルーティングモード及びサブアプリケーションロードモードを含む。例えば、サブアプリケーションフレームワークはVue、Reactなどを含むことができ、サブアプリケーションルーティングモードはハッシュモード(hash)、履歴(history)モードなどを含むことができ、サブアプリケーションロードモードは、JSロードモード、CSSロードモード、HTMLロードモードなどを含むことができる。
いくつかの実施例では、サブアプリケーション登録情報は、サービス名、サブアプリケーションローカル開発環境アドレス、サブアプリケーションオンライン環境アドレスなどをさらに含むことができる。
ルーティング登録サービス101は、サブアプリケーション登録情報を受信し、サブアプリケーション登録情報に基づいてサブアプリケーションを登録するように構成される。
いくつかの実施例では、該コマンドラインツール102は、サブアプリケーション新規作成コマンドを受信し、サブアプリケーションのルーティング情報、リソース情報、及びサブアプリケーションテンプレート情報を取得するように構成される。
本出願の実施例では、サブアプリケーションのルーティング情報は、サブアプリケーションリソースアドレス及びサブアプリケーションリソース登録パスを含むことができ、サブアプリケーションのリソース情報は、サブアプリケーションリソース名、サブアプリケーションリソースタイプを含むことができ、サブアプリケーションテンプレート情報は、テンプレート識別子を含むことができる。
コマンドラインツール102は、サブアプリケーションテンプレート情報に基づいてサブアプリケーションテンプレートを生成し、ルーティング登録サービス101にサブアプリケーション新規作成要求を送信し、サブアプリケーション新規作成要求にルーティング情報及びリソース情報が含まれる。いくつかの実施例では、ルーティング登録サービス101は、サブアプリケーション新規作成要求を受信した後、該サブアプリケーション新規作成要求に含まれるルーティング情報及びリソース情報に基づいてサブアプリケーションを作成する。
本出願の実施例では、コマンドラインツール102がサブアプリケーション新規作成要求をルーティング登録サービスに送信した後、コマンドラインツール102はサブアプリケーションデプロイメント要求をデプロイメントサーバに送信し、デプロイメントサーバはデプロイメント要求におけるサブアプリケーションリソースアドレスに基づいてリソースのデプロイメントを行う。
いくつかの実施例では、コマンドラインツール102は、さらにサブアプリケーションアクセスコマンドを受信し、サブアプリケーションのルーティング情報及びリソース情報を取得し、サブアプリケーションアクセス要求をルーティング登録サービス101に送信するように構成され、サブアプリケーションアクセス要求に、サブアプリケーションのルーティング情報及びリソース情報が含まれる。
ルーティング登録サービス101は、さらにサブアプリケーションアクセス要求を受信し、サブアプリケーションのルーティング情報及びリソース情報に基づいてサブアプリケーション登録を行うように構成される。
いくつかの実施例では、図1に示すマイクロフロントエンド実行フレームワーク103の構成構造は、図2に示すように、基礎機能ライブラリモジュール1031、通信モジュール1032、統一ルーティングモジュール1033、サブアプリケーションロードモジュール1034及びサブアプリケーション実行モジュール1035を含み、ここで、
基礎機能ライブラリモジュール1031は、パブリックメソッド及びパブリックコンポーネントを提供し、グローバル変数及び関数の方式により、サブアプリケーションに使用されるパブリックメソッド及びパブリックコンポーネントをサブアプリケーションに入れ込むように構成される。
いくつかの実施例では、基礎機能ライブラリモジュールは、サブアプリケーションに使用される一般的なPolyfilligも提供することができる。
通信モジュール1032は、メインアプリケーションからサブアプリケーションへの、サブアプリケーションからサブアプリケーションへの、及びサブアプリケーションからメインアプリケーションへの通信メカニズムをサポートするように構成される。
本出願の実施例では、メインアプリケーションからサブアプリケーションへの通信メカニズムは、プロップProps伝送とカスタムイベントCustom Event伝送を含み、サブアプリケーションからサブアプリケーションへの通信メカニズムは、異なるソースのスクリプトの非同期PostMessage伝送を含み、サブアプリケーションからメインアプリケーションへの通信は、Custom Event伝送を含む。Props伝送は、応答式の双方向データ伝送能力を提供することができる。Custom Eventは、コンポーネントに基づいてイベントの配布と登録を定義し、アプリケーションが多くなる場合の無関係なイベントの影響を回避することができる。PostMessageは、ブロードキャストクラスのメッセージ通知を実現するために、グローバルなイベントの送受信を提供する。本出願の実施例では、各通信次元に応答する実現ソリューションがあり、手段が豊富で、副作用が小さい。
本出願の実施例は、Props伝送、Custom Event伝送、及びPostMessage伝送を含む3種類の通信サポートを提供し、Props伝送は、応答式の双方向データ伝送能力を提供することができ、Custom Event伝送は、コンポーネントに基づいてイベントの配布と登録を定義し、アプリケーションが多くなる場合の無関係なイベントの影響を回避することができ、PostMessage伝送は、グローバルなイベントの送受信を提供し、ブロードキャストクラスのメッセージ通知を実現するように構成され、各通信次元に応答する実現ソリューションがあり、手段が豊富で、副作用が小さい。
統一ルーティングモジュール1033は、ブラウザルーティング変更を監視するように構成される。
実現するときに、統一ルーティングモジュール1033は、Single-SPAを使用してブラウザルーティング変更を監視し、指定されたフレームワークにおけるサブアプリケーション又はメインアプリケーションサブパスをロード、アクティブ化、及び実行し、メインアプリケーション初期化時に、ルーティング登録サービスから該統一ルーティングモジュール1033におけるサブアプリケーション登録パス、リソースなどの情報をプルする。
サブアプリケーションロードモジュール1034は、ルーティング登録サービスから取得されたサブアプリケーションリソースアドレスに基づいて、サブアプリケーションリソースアドレスに対応するリソースを取得してロードするように構成される。
例として、サブアプリケーションロードモジュール1034は、サブアプリケーションリソースアドレスに対応するリソースをロードする場合、サブアプリケーション登録情報におけるサブアプリケーションロードモードに従ってサブアプリケーションリソースをロードし、ここで、該サブアプリケーションロードモジュールがサブアプリケーションをロードするモードは、少なくともHTMLエンティティモード、JSエンティティモード及びIframeモードを含む。ロードモードがHTMLエンティティモードである場合、HTMLファイルをロードし、ロードモードがJSエンティティモードである場合、JSファイルをロードし、ロードモードがIframeモードである場合、直接URLをIframeに埋め込んで開く。
いくつかの実施例では、サブアプリケーションロードモジュール1034は、サブアプリケーションリソースアドレスに対応するリソースを取得した後、該リソースに基づいてサブアプリケーションのビジネスコードを取得し、取得したサブアプリケーションのビジネスコードを解析し、解析後のビジネスコードをサブアプリケーション実行モジュール1035に伝送する。
サブアプリケーション実行モジュール1035は、サブアプリケーションリソースアドレスに対応するリソースを実行して、サブアプリケーションのページをレンダリングするように構成される。
サブアプリケーション実行モジュール1035は、実行環境サンドボックスを含み、サブアプリケーション実行モジュールで解析後のビジネスコードを取得し、解析後のビジネスコードを実行環境サンドボックスで実行する。
実際に実現するときに、実行環境サンドボックスは、JSサンドボックス、CSSサンドボックス及びWebWorkerサンドボックスを含む。ここで、with語句とプロキシを使用して、基本的なJSサンドボックスを実現し、サブアプリケーションが制御可能である前提で基本的な安全を実現し、スタック検査、キーワード検査によりスコープからのエスケープを克服する。ここで、プロキシはサブアプリケーションがアクセスできるオブジェクト集合であり、JSサンドボックスは、サブアプリケーションのビジネスコードがプロキシ内のアクセス可能なオブジェクトのみにアクセスすることができ、他のサブアプリケーション又はメインアプリケーションのオブジェクトにアクセスすることができないようにする。解析後のビジネスコードがJSサンドボックスで実行される場合、解析後のビジネスコードは、プロキシをグローバルルートオブジェクトとしてサンドボックスに入れて実行され、つまり、ビジネスコードはプロキシのオブジェクトと属性にのみアクセスでき、外層の他の変数に影響を与えず、安全な隔離を実現する。
本出願の実施例では、3つのCSSサンドボックス手段が提供される。1つ目は、サブアプリケーションのwebpackでのパッケージングによるプレフィックスに基づく手段であり、サブアプリケーションのwebpackでのパッケージングによるプレフィックスとは、各サブアプリケーションのスタイルに個別の命名空間を割り当てることであり、このように、スタイルが互いに影響するのを回避する。2つ目は、サブアプリケーションの実行時のプレフィックスに基づく手段であり、サブアプリケーションの実行時にプレフィックスをサブアプリケーションのスタイルに動的に追加することで、スタイルの衝突を回避する。3つ目は、ShadowDomに基づく手段であり、ShadowDomに基づくCSSサンドボックスは、ブラウザレベルのスタイル隔離能力を提供することができ、完全な隔離を実現することができる。
WebWorkerサンドボックスは、WebWorkerに割り当てられたスクリプトファイルをインラインで実行して、WebWorkerのクロスドメインでの呼び出しを実現するように構成される。
サブアプリケーションリソースロードモジュールは、リソースをロードする時に*.worker.jsのファイルをハイジャックし、該ファイルをテキストコンテンツとしてブラウザのメモリにロードし、WebWorkerサンドボックスを使用してWebWorkerのスクリプトファイル(*.worker.js)をインラインで実行し、インラインで実行されるWebWorkerスクリプトファイルがクロスドメインの問題を引き起こさないため、WebWorkerのクロスドメインの問題が解決される。
いくつかの実施例では、マイクロフロントエンドシステムは、クロスドメインリソース共有をサポートするサーバをさらに含む。実現するときに、該サーバはクロスオリジンリソース共有(CORS:Cross-origin Resource Sharing)ヘッダーを自動的に含ませるため、クロスドメインリソース共有をサポートすることができ、これにより、ブラウザはプライベート静的リソース、CDN静的リソースにドメインを跨いでアクセスすることができる。
本出願の実施例は、クロスドメインをサポートするために、インターフェースリソースを含むサーバ側のCORSソリューションを提供し、CDN静的リソースでCORSソリューションを提供し、ドメインを跨いでworkerを呼び出す問題を解決するために、WebWorkerはインライン構築ローダーとインライン実行ローダーを提供する。本出願の実施例はさらに、サブアプリケーションのロード及び呼び出しを加速するために、キャッシュ、プリロード、WebWorkerなどの手段を提供する。
いくつかの実施例では、図2に示すように、マイクロフロントエンド実行フレームワーク103は、データ管理モジュール1036、性能監視モジュール1037及びエラー処理モジュール1038をさらに含み、ここで、
データ管理モジュール1036は、Props伝送メカニズムによって提供されるデータにより、データ双方向バインディング機能を実現し、それによって、親子アプリケーションのデータを共有するように構成され。
本出願の実施例では、親子アプリケーションは同じ実行環境にロードされ、メインアプリケーションは、監視機能を有するオブジェクトをサブアプリケーションに渡し、サブアプリケーションが変更された場合、該オブジェクトによって監視され得、それによって、親子アプリケーションデータの共有を実現することができる。
性能監視モジュール1037は、サブアプリケーションのロード時間長及び実行時間長を監視するように構成される。
実現するときに、メインアプリケーションは、予め設定された関数により、サブアプリケーションのロード時間長及び実行時間長などの情報を監視する。
エラー処理モジュール1038は、ロード及び実行中におけるサブアプリケーションのエラー情報を監視及び処理するように構成される。
実現するときに、メインアプリケーションはwindow.addEventListener(‘error’,errorHandler)、window.addEventListener(‘unhandledrejection’,errorHandler)を登録することで、サブアプリケーションのエラーを監視及び処理し、それによって、サブアプリケーションのエラー情報をタイムリーに処理し、マイクロフロントエンドシステムの信頼性を保証することができる。
前述の実施例で提供されるマイクロフロントエンドシステムに基づいて、本出願の実施例は、マイクロフロントエンドシステムに基づくサブアプリケーションロード方法をさらに提供し、該方法は、上記実施例で提供されるマイクロフロントエンドシステムに適用されるべきであり、図3は、本出願の実施例によるマイクロフロントエンドシステムに基づくサブアプリケーションロード方法の実現フローの模式図であり、図3に示すように、該方法は以下のステップを含む。
ステップ301において、ネットワークアクセス要求を取得する。
例として、該ネットワークアクセス要求にURLアドレスが含まれる。該ネットワークアクセス要求は、ユーザのネットワークアクセス操作によってトリガーされてもよい。該機能ネットワークアクセス要求は、メインアプリケーションにアクセスする要求として構成されてもよく、サブアプリケーションにアクセスする要求であってもよい。該ネットワークアクセス要求がサブアプリケーションにアクセスするネットワークアクセス要求である場合、ユーザがブラウザにメインアプリケーションのURLアドレスを入力し、ブラウザがメインアプリケーションインターフェースをレンダリングした後、ユーザはメインアプリケーションインターフェースで提供されるサブアプリケーションのアイコンによってサブアプリケーションへのネットワークアクセス要求をトリガーすることであり得る。
本出願の実施例では、ステップS301の前に、該マイクロフロントエンドシステムは、既にメインアプリケーションのデプロイメント及びルーティング登録サービスのデプロイメントを完了し、CLIツールによりサブアプリケーションの作成及び登録を完了した。
ステップ302において、URLアドレスに基づいて、マイクロフロントエンドシステムのルーティング登録サービスから、対応するルーティング情報をプルする。
例として、ステップS302を実現する場合、URLアドレスをルーティング登録サービスに送信してもよく、ルーティング登録サービスは、該URLアドレスに基づいてアクセスすべきアプリケーション識別子を決定し、次に該アプリケーション識別子に基づいて対応するルーティング情報をプルする。
ステップS303において、ルーティング情報に基づいて、アクセス対象ページがサブアプリケーションのページであると決定した場合、マイクロフロントエンドシステムのサブアプリケーションロードモジュールは、ルーティング情報に基づいて、ルーティング登録サービスからルーティング情報に対応するサブアプリケーションリソースを取得する。
例として、アプリケーションに対応するルーティング情報を取得した後、アクセス対象ページがサブアプリケーションのページであると決定した場合、ルーティング登録サービスは、該ルーティング情報に基づいて、対応するサブアプリケーションリソースを取得することができ、該サブアプリケーションリソースは、例えばCSS、JSなどの静的リソースドキュメントであり得る。
ステップS304において、サブアプリケーションリソースをロードする必要がある場合、サブアプリケーションロードモジュールは、サブアプリケーションリソースをロードする。
本出願の実施例では、サブアプリケーションロードモジュールがサブアプリケーションリソースを取得した後、まず該サブアプリケーションリソースをロードする必要があるかどうかを判断する必要があり、サブアプリケーションリソースをロードする必要がある場合、サブアプリケーションのロードモードに基づいてサブアプリケーションリソースをロードし、サブアプリケーションリソースをロードする必要がないと決定した場合、該サブアプリケーションリソースが既にロードされていることを意味し、このとき、該サブアプリケーションリソースを直接実行して、サブアプリケーションのページをレンダリングする。
ステップS305において、マイクロフロントエンドシステムのサブアプリケーション実行モジュールは、サブアプリケーションリソースを実行して、サブアプリケーションのページをレンダリングする。
いくつかの実施例では、サブアプリケーションロードモジュールは、サブアプリケーションリソースを取得した後、該サブアプリケーションリソースに基づいてサブアプリケーションのビジネスコードを取得し、取得したサブアプリケーションのビジネスコードを解析し、解析後のビジネスコードをサブアプリケーション実行モジュールに伝送する。サブアプリケーション実行モジュールは、解析後のビジネスコードを得、解析後のビジネスコードを自身の実行環境サンドボックスで実行して、サブアプリケーションのページをレンダリングする。
実際に実現するときに、実行環境サンドボックスは、JSサンドボックス、CSSサンドボックス及びWebWorkerサンドボックスを含む。ここで、with語句とプロキシを使用して、基本的なJSサンドボックスを実現し、サブアプリケーションが制御可能である前提で基本的な安全を実現し、スタック検査、キーワード検査によりスコープからのエスケープを克服する。ここで、プロキシはサブアプリケーションがアクセスできるオブジェクト集合であり、JSサンドボックスは、サブアプリケーションのビジネスコードがプロキシ内のアクセス可能なオブジェクトのみにアクセスすることができ、他のサブアプリケーション又はメインアプリケーションのオブジェクトにアクセスすることができないようにすることができる。解析後のビジネスコードがJSサンドボックスで実行される場合、解析後のビジネスコードはプロキシをグローバルルートオブジェクトとしてサンドボックスに入れて実行され、つまり、ビジネスコードはプロキシのオブジェクトと属性にのみアクセスでき、外層の他の変数に影響を与えず、安全な隔離を実現する。
本出願の実施例では、3つのCSSサンドボックス手段が提供される。1つ目は、サブアプリケーションのwebpackでのパッケージングによるプレフィックスに基づく手段であり、サブアプリケーションのwebpackでのパッケージングによるプレフィックスとは、各サブアプリケーションのスタイルに個別の命名空間を割り当てることであり、このように、スタイルが互いに影響するのを回避する。2つ目は、サブアプリケーションの実行時のプレフィックスに基づく手段であり、サブアプリケーションの実行時にアプリケーションスタイルを動的にロード及びアンロードすることで、スタイルの衝突を回避する。3つ目は、ShadowDomに基づく手段であり、ShadowDomに基づくCSSサンドボックスは、ブラウザレベルのスタイル隔離能力を提供することができ、完全な隔離を実現することができる。
WebWorkerサンドボックスは、WebWorkerに割り当てられたスクリプトファイルをインラインで実行して、WebWorkerのクロスドメインでの呼び出しを実現するように構成される。サブアプリケーションリソースロードモジュールは、リソースをロードする時に*.worker.jsのファイルをハイジャックし、該ファイルをテキストコンテンツとしてブラウザのメモリにロードし、WebWorkerサンドボックスを使用してWebWorkerのスクリプトファイル(*.worker.js)をインラインで実行し、インラインで実行されるWebWorkerスクリプトファイルがクロスドメインの問題を引き起こさないため、WebWorkerのクロスドメインの問題が解決される。
本出願の実施例で提供されるマイクロフロントエンドシステムに基づくサブアプリケーションロード方法では、ネットワークアクセス要求を取得した後、ネットワークアクセス要求に含まれるURLアドレスに基づいて、マイクロフロントエンドシステムのルーティング登録サービスから、対応するルーティング情報をプルし、ルーティング情報に基づいて、アクセス対象ページがサブアプリケーションのページであると決定した場合、マイクロフロントエンドシステムのサブアプリケーションロードモジュールは、ルーティング情報に基づいてルーティング登録サービスからルーティング情報に対応するサブアプリケーションリソースを取得し、サブアプリケーションリソースをロードする必要がある場合、サブアプリケーションロードモジュールはサブアプリケーションリソースをロードし、次にマイクロフロントエンドシステムのサブアプリケーション実行モジュールはサブアプリケーションリソースを実行して、サブアプリケーションのページをレンダリングする。
いくつかの実施例では、図4に示すように、ステップS304の前に、該マイクロフロントエンドシステムに基づくサブアプリケーションロード方法は、ステップS003をさらに含む。
ステップS003において、サブアプリケーションリソースがプリロードされたか、又は開かれたかどうかを決定する。
例として、サブアプリケーションリソースがプリロードされておらず、且つ開かれていない場合、サブアプリケーションリソースをロードする必要があると決定し、このとき、ステップS304に進み、サブアプリケーションリソースがプリロードされ、又は開かれた場合、サブアプリケーションリソースを再ロードする必要がないと決定し、このとき、ステップS305に進む。このようにして、サブアプリケーションのロードと呼び出しを加速することができる。
いくつかの実施例では、サブアプリケーションがロードされる前に、まずサブアプリケーションの登録及びデプロイメントを実行する必要があり、サブアプリケーション登録プロセスは、次のステップによって実現され得る。
ステップS001において、サブアプリケーション登録に設定する必要があるサブアプリケーション登録情報を取得し、サブアプリケーション登録情報をルーティング登録サービスに送信する。
例として、サブアプリケーション登録情報は、少なくともサブアプリケーションフレームワーク、サブアプリケーションルーティングモード、及びサブアプリケーションロードモードを含む。
マイクロフロントエンドシステムは、ルーティング登録サービスに対応するフロントエンドインターフェースを含むことができ、サブアプリケーションを作成することと、サブアプリケーションにアクセスすることとを行うように構成されるコマンドラインツールをさらに含むことができ、対応して、ステップS001を実現する場合、2つの実現方式がある。
第一の実現方式において、ルーティング登録サービスに対応するフロントエンドインターフェースにより、サブアプリケーション登録に対する入力操作を取得し、入力操作に基づいてサブアプリケーション登録情報を決定する。
第一の方式に基づいてサブアプリケーション登録情報を取得する場合、まず該フロントエンドインターフェースを開く操作指示に基づいて該フロントエンドインターフェースを表示し、該フロントエンドインターフェースにより、サブアプリケーション登録に対する入力操作を受信し、該入力操作はサブアプリケーション登録に設定する必要があるパラメータを入力することであり、例えば、パラメータは、サービス名、サブアプリケーションフレームワーク、サブアプリケーションローカル開発環境アドレス、サブアプリケーションオンライン環境アドレス、サブアプリケーション登録サブルーティング、サブアプリケーションルーティングモード(hash又はhistory)、サブアプリケーションロードモードなどを含むことができる。
いくつかの実施例では、該フロントエンドインターフェースは、登録を決定するためのグラフィカルコントロールも提供し、サブアプリケーション登録情報に対する設定が完了したことがユーザによって決定した後、該グラフィカルコントロールをクリック又はタッチして、サブアプリケーション登録情報をルーティング登録サービスに送信することができる。サブアプリケーション登録情報をルーティング登録サービスに送信する場合、ルーティング登録サービスにサブアプリケーション登録のHTTP要求を送信してもよく、該HTTP要求にサブアプリケーション登録情報を含むことができる。
第二の実現方式において、コマンドラインツールによりサブアプリケーション新規作成コマンドを受信し、サブアプリケーション作成に対する入力操作を取得し、入力操作に基づいてサブアプリケーション登録情報を決定する。
第一の実現方式と同様に、コマンドラインツールに基づいてサブアプリケーション登録情報を取得する場合、まずコマンドラインツールを起動し、次に該コマンドラインツールによりサブアプリケーション新規作成コマンドを受信し、さらにサブアプリケーション作成に対する入力操作を取得し、該入力操作はサブアプリケーション登録に設定する必要があるパラメータを入力することであり、続いて、該入力操作に基づいてサブアプリケーション登録情報を取得し、サブアプリケーション登録情報は、例えば、サブアプリケーションリソース名、サブアプリケーションリソースアドレス、サブアプリケーションリソースタイプ、サブアプリケーションリソース登録パスなどの情報を含むことができ、実現するときに、コマンドラインツールによりサブアプリケーションテンプレート識別子を選択する必要もあり、次にコマンドラインツールによって対応するテンプレートを自動的に生成し、サブアプリケーションリソースアドレス、サブアプリケーションリソース登録アドレスなどの情報を入れ込む。サブアプリケーション登録情報をルーティング登録サービスに送信する場合、情報送信コマンドを入力することで、該情報送信コマンドに基づいてサブアプリケーション登録情報をルーティング登録サービスに送信することができる。
ステップS002において、ルーティング登録サービスは、サブアプリケーション登録情報を受信し、サブアプリケーション登録情報に基づいてサブアプリケーションを登録する。
上述のステップS001~S002により、該マイクロフロントエンドシステムにより、自らでサブアプリケーションのルーティング情報とリソース情報を登録することができ、それによってサブアプリケーション登録の柔軟性を向上させる。
いくつかの実施例では、図3に示すステップS304「サブアプリケーションリソースをロードする必要がある場合、サブアプリケーションロードモジュールはサブアプリケーションリソースをロードする」は、以下のステップによって実現され得る。
ステップS3041において、サブアプリケーションリソースをロードする必要がある場合、サブアプリケーションのフレームワーク識別子及びリソースロードモードを取得する。
例として、サブアプリケーションのフレーム識別子は、Vue、Reactなどを含むことができ、リソースロードモードは、JSエンティティロードモード、CSSエンティティロードモード、Iframeロードモードなどを含むことができる。
ステップS3042において、リソースロードタイプに基づいて、フレームワーク識別子に対応するサブアプリケーションフレームワークでサブアプリケーションリソースをロードする。
例として、ロードモードがHTMLエンティティモードである場合、HTMLファイルをロードし、ロードモードがJSエンティティモードである場合、JSファイルをロードし、ロードモードがIframeモードである場合、直接URLをIframeに埋め込んで開く。
いくつかの実施例では、図5に示すように、ステップS302の後、以下のステップも実行され得る。
ステップS201において、ルーティング情報に基づいて、アクセス対象ページがメインアプリケーションページであるかどうかを決定する。
例として、ルーティング情報に基づいてアクセス対象ページがメインアプリケーションページであると決定した場合、ステップS202を実行し、ルーティング情報に基づいて、アクセス対象ページがサブアプリケーションのページであると決定した場合、ステップS303に進む。
ステップ202において、ライフサイクルに基づいてメインアプリケーションに現在マウントされているサブアプリケーションを決定する。
ステップS203において、現在マウントされているサブアプリケーションからレンダリングするべき目標サブアプリケーションを決定する。
例として、ステップS203は、予め設定されたルールに従って、現在マウントされているサブアプリケーションからレンダリングするべき少なくとも1つの目標サブアプリケーションを決定するステップであってもよく、例えば、現在マウントされているサブアプリケーションからアクセス数が最も多い1つ又は複数のサブアプリケーションを選択して目標サブアプリケーションとして決定することができる。
ステップS204において、公開されるロード関数と目標サブアプリケーションに基づいて、ルーティング切り替えをシミュレートし、目標サブアプリケーションのサブアプリケーションリソースとメインアプリケーションリソースを取得する。
例として、アクセス対象ページがメインアプリケーションページである場合、まずルーティング情報に基づいてメインアプリケーションリソースを取得する。本出願では、ロード関数が公開されるものであるため、メインアプリケーションはロード関数を能動的に呼び出すことができ、メインアプリケーションが公開されるロード関数を能動的に呼び出す場合、ルーティング切り替えをシミュレートすることができ、それによって、マイクロフロントエンドシステムのサブアプリケーションロードモジュールが目標サブアプリケーションのサブアプリケーションリソースを取得することをトリガーする。
ステップS205において、メインアプリケーションリソース及びサブアプリケーションリソースをロードして実行して、レンダリング済みのメインアプリケーションのページにサブアプリケーションをレンダリングする。
ステップS205を実現する場合、まずメインアプリケーションリソースをロードして実行して、メインアプリケーションインターフェースをレンダリングし、次にサブアプリケーションリソースを実行してサブアプリケーションのページもレンダリングし、このようにして、メインアプリケーションは、ルーティング登録に依存することなく、サブアプリケーションを能動的にレンダリングすることができる。
上述のステップS201~S205が記載される実施例では、アクセス対象ページがメインアプリケーションページである場合、メインアプリケーションのライフサイクルに基づいて現在マウントされているサブアプリケーションを決定し、予め設定されたルールに基づいて、目標サブアプリケーションを決定し、公開されるロード関数を呼び出すことで、ルーティング切り替えをシミュレートし、目標サブアプリケーションのサブアプリケーションリソースを取得し、レンダリング済みのメインアプリケーションページにサブアプリケーションのページを表示し、それによって、サブアプリケーションに対するメインアプリケーションの能動的なレンダリングを実現することができる。
次に、実際の適用シナリオにおける本出願の実施例の例示的な適用を説明する。
図6は、本出願の実施例によるマイクロフロントエンドシステムの模式図であり、図6に示すように、該マイクロフロントエンドシステムは、ルーティング登録サービス601、該ルーティング登録サービスに対応するフロントエンドページ、サブアプリケーションをアクセス、生成するためのCLIツール602、及びメインアプリケーションのマイクロフロントエンド実行フレームワーク603を含む。
ルーティング登録サービス601は、マイクロフロントエンド実行フレームワーク603に、サブアプリケーションのルーティング情報、ロード方式及びサブアプリケーションのデプロイメント情報を提供する。
実現するときに、サブアプリケーションルーティング登録を行うためのフロントエンドインターフェースを提供してもよく、該ページにより、ルーティング登録に必要なパラメータを設定することができ、設定する必要があるパラメータは、サービス名、サブアプリケーションフレームワーク、サブアプリケーションローカル開発環境アドレス、サブアプリケーションオンライン環境アドレス、サブアプリケーション登録サブルーティング、サブアプリケーションルーティングモード(hash又はhistory)、サブアプリケーションロードモードを含むが、これらに限定されない。
ルーティング登録サービス601は、HTTPサービスを提供するサーバであり、主にNode.jsによって実現され、Koaフレームワークによりルーティングの記録、ルーティングの削除、ルーティングのクエリ、ログイン認証などの1セットの機能を備えるウェブサーバを実現し、データベースは、MySQLを使用してもよく、他の形式のデータベースを使用してもよい。
実現するときに、ルーティング登録サービスはNodeバックエンドサービスであり得、該Nodeバックエンドサービスによりサブアプリケーションの登録情報を受信し、アプリケーションローダーが該Nodeバックエンドサービスによりサブアプリケーションを解析及び発見し、情報により如何にサブアプリケーションのリソースをロードするかを決定する。複数のNodeシングルサービスは、PM2によって起動され、PM2は、ロードバランシング機能を備えたNodeアプリケーションプロセスマネージャであり、また、ルーティング登録サービスは、ロードバランシングサービスをさらに含むことができ、サービスのディザスタリカバリ、キープアライブ及び容量拡張能力を提供するように構成される。
CLIツール602は、サブアプリケーション作成、サブアプリケーションアクセス、サービス登録及びデプロイメントなどを含む機能を提供する。
実現するときに、Inquirer.jsによりコマンドラインツールの1セットを提供し、サブアプリケーション作成、サブアプリケーションアクセス、サービス登録及びデプロイメントなどを含む機能を提供する。
サブアプリケーション作成を実現するときに、ユーザはまずコマンドラインでサブアプリケーション新規作成コマンドを入力し、サブアプリケーションリソース名、サブアプリケーションリソースアドレス、サブアプリケーションリソースタイプ、サブアプリケーションリソース登録パスを書き込み、サブアプリケーションテンプレートを選択してもよく、CLIツールは、対応するテンプレートを自動的に生成し、ルーティング情報を入れ込み、リソース情報をルーティング登録サービスに自動的に登録する。
サブアプリケーションアクセスを実現するときに、ユーザはコマンドラインでサブアプリケーションアクセスコマンドを入力し、サブアプリケーションリソース名、サブアプリケーションリソースアドレス、サブアプリケーションリソースタイプ、及びサブアプリケーションリソース登録パスを書き込むことができ、CLIツールは自動的にサブアプリケーションのエントリーファイルを検索し、メインアプリケーションに必要なライフサイクル関数を追加し、CLIツールはリソース情報をルーティング登録サービスに自動的に登録する。
サービス登録機能を実現するときに、CLIツールは、HTTP要求にサブアプリケーション新規作成コマンドを含ませ、サブアプリケーションリソース名、サブアプリケーションリソースアドレス、サブアプリケーションリソースタイプ、サブアプリケーションリソース登録パスなどのパラメータを書き込み、HTTP要求によりルーティング登録サービスに送信する。
デプロイメント機能を実現するときに、CLIツールはHTTP要求によりデプロイメント要求をルーティング登録サービスに送信する。
マイクロフロントエンド実行フレームワーク603は、メインアプリケーションで実行されるフレームワークであり、メインアプリケーションは、親アプリケーション又はアプリケーションシェル(APP shell)とも呼ばれ、APP shellは、パブリックリソースライブラリ、アプリケーションローダー、リソースパッケージ(Single-SPAのパッケージ)及び実行環境サンドボックスを含む。実行環境サンドボックスは、jsサンドボックス、WebWorkerインラインサンドボックス及びCSS環境隔離サンドボックスを含む。APP shellは、Iframeモードの実行もサポートする。
メインアプリケーションは、マイクロフロントエンド実行フレームワークにアクセスする任意のアプリケーションである。
図6の603に示すように、該マイクロフロントエンド実行フレームワークは、基礎機能ライブラリ、通信モジュール、データ管理モジュール、性能監視モジュール、エラー処理モジュール、統一ルーティングモジュール、サブアプリケーションロードモジュール及びサブアプリケーション実行モジュールを含む。
基礎機能ライブラリは、一般的なpolyfills、パブリックメソッド及びコンポーネントを提供し、グローバル変数及び関数などの方式により、サブアプリケーションによって使用されるためにサブアプリケーションに入れ込む。
通信モジュールは、Custom Eventによりイベント通信を提供し、PostMessageによりメッセージ通信を提供し、ライフサイクルにおけるProps伝送によりシステムデータ通信を提供する。
図7は、本出願の実施例によるマイクロフロントエンドシステムにおける通信メカニズムの模式図であり、図7に示すように、メインアプリケーションからサブアプリケーションへの通信方式はPropsとCustom Eventの2つの通信メカニズムを含むことができ、サブアプリケーションからメインアプリケーションへの通信方式は、Custom Event(コンポーネント)とCustom Event(window)の2つの通信メカニズムを含むことができ、サブアプリケーション間の通信方式は、PostMessageとブロードキャストチャネル(BroadcastChannel)の2つの通信方式を含むことができる。
データ管理モジュールは、Propsによって提供されるデータにより、データ双方向バインディング機能を実現し、親子アプリケーションのデータを共有する。
性能監視モジュールは、メインアプリケーションが関数によりサブアプリケーションのロード時間、実行時間などのデータの監視を実現するように構成される。
エラー処理モジュールは、ロード及び実行中におけるサブアプリケーションのエラー情報を監視及び処理するように構成される。
例として、メインアプリケーションはリスナーを登録することで、サブアプリケーションのエラーレポートを監視及び処理し、ここで、登録されたリスナーは、window.addEventListener(‘error’,errorHandler)及びwindow.addEventListener(‘unhandledrejection’,errorHandler)を含む。
統一ルーティングモジュールは、Single-SPAを使用してブラウザルーティング変更を監視し、指定されたフレームワークにおけるサブアプリケーション又はメインアプリケーションサブパスをロード、アクティブ化及び実行し、メインアプリケーション初期化時にルーティング登録サービスから該統一ルーティングモジュールにおけるサブアプリケーション登録パス、リソースなどの情報をプルする。
サブアプリケーションロードモジュールは、サブアプリケーションリソースをロードするように構成される。
図8は、本出願の実施例によるサブアプリケーションロードモジュールによってサブアプリケーションリソースをロードする実現フローの模式図であり、図8に示すように、該フローは以下のステップを含む。
ステップS801において、取得したネットワーク要求に基づいて、ルーティング登録サービスからルーティング及び静的リソースをプルする。
例として、該ネットワークアクセス要求にURLアドレスが含まれ、ステップS801を実現するときに、該URLアドレスに基づいて、ルーティング登録サービスから該URLアドレスに対応するアプリケーション識別子を決定し、ルーティング登録サービスは、該アプリケーション識別子に基づいて、対応するルーティング情報を決定し、ルーティング情報に基づいて静的リソースを取得することができる。
ステップS802において、リソースローダーはサブアプリケーションリソースをロードする。
リソースローダーは、異なるフレームワークのサブアプリケーションをロードすることができ、HTML Entry、JS Entryモード、Iframeモードをロードすることができ、HTMLモードはHTMLにおける参照リソースにより静的ファイルをロードし、jsモードはjsにより動的にリソースをロードし、サブアプリケーションをロードするために伝統的なIframeモードも提供する。
本出願の実施例では、性能とクロスドメインの影響を考慮して、リソースローダーはプリロード、キャッシュ、idleロードなどの手段も提供することができる。
ステップS803において、リソースローダーがサブアプリケーションリソースをロードした後、リソース情報を登録する。
例として、リソースローダーがサブアプリケーションリソースをロードした後、ロードしたサブアプリケーションリソース情報をメモリに登録する。
サブアプリケーションロードモジュールは、リソースローダーとリソースパッケージを含み、リソースパッケージは、Single-SPAに基づくパッケージであり、マルチフロントエンドフレームワークにおけるサブアプリケーションの実行能力を提供することができ、Single-SPAは、ルーティング監視の機能を提供し、アプリケーションのルーティングが切り替えられる場合、ライフサイクルに基づいて対応するサブアプリケーションのフレームワークコードとビジネスコードをロードし、それによって異なるフレームワークとマルチレベルルーティングにおけるアクティブ化を実行する能力を実現する。ロード関数を公開することにより、ルーティングの切り替えをシミュレートし、メインアプリケーションによる能動的な呼び出し、アクティブ化の能力を実現する。
サブアプリケーション実行モジュールは、JSサンドボックスとCSSサンドボックス(非伝統的なIframeモードが存在する)を含み、サブアプリケーション実行モジュールは、サブアプリケーションロードモジュールによってプルされたjsリソースをロードするという役割を果たす。
JSサンドボックスの設計は、図9に示され、with関数901とプロキシ902を使用して基本的なjsサンドボックスを実現し、本出願の実施例では、Proxyプロキシとスナップショットプロキシモードを実現することができ、スナップショットプロキシモードはES6Proxyをサポートしていない環境をコンパチブルする。図9に示すように、アプリケーションローダーのリソースローダーによって解析されたサブアプリケーションの実際コード903を、プロキシサンドボックスに入れることによって実行する。また、一般的なスコープからのエスケープについては、スタック検査とキーワード検査により防止され、それによって、サブアプリケーションが制御可能である前提で基本的な安全を実現する。
本出願の実施例では、次の3つのCSSサンドボックス手段が提供される。
1つ目は、サブアプリケーションのwebpackでのパッケージングによるプレフィックスに基づく手段である。サブアプリケーションは、パッケージングツールに統一にアクセスし、各サブアプリケーションのスタイルに個別の命名空間を割り当てる必要がある。
2つ目は、サブアプリケーションの実行時のプレフィックスに基づく手段である。
幾つかのスタイルは、例えば@keyframes、@font-face、@importなどをサポートしにくく、しかも動的にロードされる<link>スタイルには特別な処理が必要であるため、サブアプリケーションの実行時に、サブアプリケーションのスタイルにプレフィックスを追加することで、スタイルの衝突を回避することができる。
3つ目は、ShadowDomに基づく手段である。ShadowDomは、shadow境界、イベント紛失、アクセス制御(shadowRoot)などの問題を処理する必要がある。
本出願の実施例によって提供されるマイクロフロントエンドシステムは、ルーティング登録サービスを提供し、独立的にメンテナンス・実行するNodeサービスとしては、優れた容量拡張及びディザスタリカバリ能力を提供し、マイクロフロントエンドのサブアプリケーションの登録及びルーティングのロードをメンテナンスする。Single-SPAに基づいて、マルチフレームワークでのサブアプリケーション実行能力を提供し、カスタマイズされたロードソリューションに基づいて、メインアプリケーションがルーティングの登録に依存することなく、サブアプリケーションを能動的にレンダリングする能力を提供する。また、通信メカニズムでProps伝送、Custom Event、PostMessageを含む3つの通信サポートを提供し、Props伝送は、応答式の双方向データ伝送能力を提供することができ、Custom Eventは、コンポーネントに基づいてイベントの配布と登録を定義することができ、それによってアプリケーションが多くなる場合の無関係なイベントの影響を回避することができ、PostMessageは、グローバルなイベントの送受信を提供し、ブロードキャストクラスのメッセージ通知を実現するように構成され、各通信次元に応答する実現ソリューションがあり、手段が豊富で、副作用が小さい。該マイクロフロントエンドシステムは、クロスドメインをサポートするために、インターフェースリソースを含むサーバ側のCORSソリューションを提供し、プライベートの静的リソース、CDN静的リソースは、クロスドメインをサポートするために、CORSソリューションを提供し、WebWorkerは、ドメインを跨いでworkerを呼び出す問題を解決するために、インライン構築ローダーとインライン実行ローダーを提供し、サブアプリケーションのロード及び呼び出しを加速するために、キャッシュ、プリロード、WebWorkerなどの手段をさらに提供する。実行時にサブアプリケーションをロードするソリューションをさらに提供し、実行時にサブアプリケーションのレンダリングするコンテンツ、インタラクションのロジックを変更し、より高い自由性を提供することができる。
本出願の実施例は、コンピュータープログラム製品又はコンピュータープログラムを提供し、該コンピュータープログラム製品又はコンピュータープログラムはコンピューター命令を含み、該コンピューター命令はコンピューター可読記憶媒体に記憶される。コンピューター機器のプロセッサは、コンピューター可読記憶媒体から該コンピューター命令を読み取り、プロセッサは該コンピューター命令を実行して、該コンピューター機器に、本出願の実施例の上述のマイクロフロントエンドシステムに基づくサブアプリケーションロード方法を実行させる。
本出願の実施例は、実行可能な命令を記憶する記憶媒体を提供し、実行可能な命令が記憶され、実行可能な命令がプロセッサによって実行される場合、プロセッサに、本出願の実施例で提供されるサブアプリケーションロード方法、例えば、図3、図4及び図5に示すサブアプリケーションロード方法を実行させる。
いくつかの実施例では、記憶媒体は、コンピューター可読記憶媒体、例えば、強誘電体メモリ(FRAM:Ferromagnetic Random Access Memory)、読み取り専用メモリ(ROM:Read Only Memory)、プログラマブル読み取り専用メモリ(PROM:Programmable Read Only Memory)、消去可能なプログラマブル読み取り専用メモリ(EPROM:Erasable Programmable Read Only Memory)、電気的消去可能なプログラマブル読み取り専用メモリ(EEPROM:Electrically Erasable Programmable Read Only Memory)、フラッシュメモリ、磁気表面メモリ、光ディスク、又はコンパクトディスク読み取り専用メモリ(CD-ROM:Compact Disk-Read Only Memory)などのメモリであってもよく、上述のメモリの1つ又は任意の組み合わせを含む各種の機器であってもよい。
いくつかの実施例では、実行可能な命令は、プログラム、ソフトウェア、ソフトウェアモジュール、スクリプト又はコードの形式を採用することができ、任意の形式のプログラミング言語(コンパイル言語又はインタープリター言語、又は宣言型言語又は手続き型言語を含む)で書かれ、任意の形式で構成することができ、独立したプログラムとして構成されるか、又はモジュール、コンポーネント、サブルーチン、又は計算環境で使用するのに適した他のユニットとして構成されることを含む。
例として、実行可能な命令は、ファイルシステム内のファイルに対応することができるが、これに限らなく、他のプログラム又はデータを保存するファイルの一部に記憶されてもよく、例えば、ハイパーテキストマークアップ言語(HTML:Hyper Text Markup Language)ドキュメントの1つ又は複数のスクリプトに記憶され、係るプログラムに専用に構成された単一のファイルに記憶されるか、又は、複数の共同ファイル(例えば、1つ又は複数のモジュール、サブルーチン、又はコード部分を記憶するファイル)に記憶される。例として、実行可能な命令は、1つの計算機器上で実行されるか、又は1つのサイトに位置する複数の計算機器上で実行されるか、又は、複数のサイトに分散され、通信ネットワークによって相互接続された複数の計算機器上で実行されるように構成され得る。
上記の説明は、本出願の実施例だけであり、本出願の保護範囲を限定するように構成されていない。本出願の精神及び範囲内で行われるいかなる修正、同等の置換及び改良は、いずれも本出願の保護範囲に含まれる。
100 マイクロフロントエンドシステム
101 ルーティング登録サービス
102 コマンドラインツール
103 マイクロフロントエンド実行フレームワーク
1031 基礎機能ライブラリモジュール
1032 通信モジュール
1033 統一ルーティングモジュール
1034 サブアプリケーションロードモジュール
1035 サブアプリケーション実行モジュール
1036 データ管理モジュール
1037 性能監視モジュール
1038 エラー処理モジュール

Claims (19)

  1. マイクロフロントエンドシステムであって、
    ルーティング登録サービス、コマンドラインツール及びマイクロフロントエンド実行フレームワークを含み、
    前記ルーティング登録サービスは、独立的にメンテナンス・実行するノードNodeバックエンドサービスであり、メインアプリケーションのマイクロフロントエンド実行フレームワークに、サブアプリケーションのルーティング情報、前記サブアプリケーションのロード方式及び前記サブアプリケーションのデプロイメント情報を提供するように構成され、
    前記コマンドラインツールは、コマンドラインによりサブアプリケーション新規作成機能、サブアプリケーションアクセス機能、サービス登録機能を提供するように構成され、
    前記マイクロフロントエンド実行フレームワークは、前記メインアプリケーションで実行されるフレームワークであり、取得されたネットワーク要求に基づいて前記サブアプリケーションをロードして実行し、マルチフレームワークでのサブアプリケーション実行能力を提供するように構成される、マイクロフロントエンドシステム。
  2. 前記マイクロフロントエンドシステムは、さらに、
    前記ルーティング登録サービスに対応するフロントエンドインターフェースを含み、前記フロントエンドインターフェースは、サブアプリケーション登録に設定する必要があるサブアプリケーション登録情報を取得し、前記サブアプリケーション登録情報を前記ルーティング登録サービスに送信するように構成され、前記サブアプリケーション登録情報は、サブアプリケーションフレームワーク、サブアプリケーションルーティングモード及びサブアプリケーションロードモードを含み、
    前記ルーティング登録サービスは、さらに、前記サブアプリケーション登録情報を受信し、前記サブアプリケーション登録情報に基づいて前記サブアプリケーションを登録するように構成される、ことを特徴とする
    請求項1に記載のマイクロフロントエンドシステム。
  3. 前記コマンドラインツールは、さらに、サブアプリケーション新規作成コマンドを受信し、前記サブアプリケーションのルーティング情報、前記サブアプリケーションのリソース情報及びサブアプリケーションテンプレート情報を取得するように構成され、
    前記コマンドラインツールは、さらに、前記サブアプリケーションテンプレート情報に基づいてサブアプリケーションテンプレートを生成し、前記ルーティング登録サービスにサブアプリケーション新規作成要求を送信するように構成され、前記サブアプリケーション新規作成要求に前記ルーティング情報及び前記リソース情報が含まれ、
    前記コマンドラインツールは、さらに、サブアプリケーションデプロイメント要求をデプロイメントサーバに送信するように構成され、前記サブアプリケーションデプロイメント要求は、前記デプロイメントサーバが前記サブアプリケーションデプロイメント要求におけるサブアプリケーションリソースアドレスに基づいてリソースのデプロイメントを行うことをトリガーするために使用される、ことを特徴とする
    請求項1に記載のマイクロフロントエンドシステム。
  4. 前記コマンドラインツールは、さらに、サブアプリケーションアクセスコマンドを受信し、前記サブアプリケーションのルーティング情報及び前記サブアプリケーションのリソース情報を取得するように構成され、
    前記コマンドラインツールは、さらに、サブアプリケーションアクセス要求を前記ルーティング登録サービスに送信するように構成され、前記サブアプリケーションアクセス要求に、前記サブアプリケーションのルーティング情報及びリソース情報が含まれ、
    前記ルーティング登録サービスは、さらに、前記サブアプリケーションアクセス要求を受信し、前記サブアプリケーションのルーティング情報及びリソース情報に基づいてサブアプリケーション登録を行うように構成される、ことを特徴とする
    請求項2に記載のマイクロフロントエンドシステム。
  5. 前記マイクロフロントエンド実行フレームワークは、基礎機能ライブラリモジュール、通信モジュール、統一ルーティングモジュール、サブアプリケーションロードモジュール及びサブアプリケーション実行モジュールを含み、
    前記基礎機能ライブラリモジュールは、パブリックメソッド及びパブリックコンポーネントを提供し、グローバル変数及び関数の方式により、前記サブアプリケーションに使用される前記パブリックメソッド及び前記パブリックコンポーネントを前記サブアプリケーションに入れ込むように構成され、
    前記通信モジュールは、前記メインアプリケーションから前記サブアプリケーションへの、前記サブアプリケーションから前記サブアプリケーションへの、及び前記サブアプリケーションから前記メインアプリケーションへの通信メカニズムをサポートするように構成され、
    前記統一ルーティングモジュールは、ブラウザルーティング変更を監視するように構成され、
    前記サブアプリケーションロードモジュールは、前記ルーティング登録サービスからサブアプリケーションリソースアドレスを取得し、前記サブアプリケーションリソースアドレスに対応するリソースを取得してロードするように構成され、
    前記サブアプリケーション実行モジュールは、前記サブアプリケーションリソースアドレスに対応するリソースを実行し、サブアプリケーションのページをレンダリングするように構成される、ことを特徴とする
    請求項1に記載のマイクロフロントエンドシステム。
  6. 前記メインアプリケーションからサブアプリケーションへの通信メカニズムは、プロップProps伝送とカスタムイベントCustom Event伝送を含み、前記サブアプリケーションからサブアプリケーションへの通信メカニズムは、メッセージ送信PostMessage伝送を含み、前記サブアプリケーションからメインアプリケーションへの通信メカニズムは、Custom Event伝送を含み、
    前記サブアプリケーションロードモジュールが前記サブアプリケーションをロードするモードは、ハイパーテキストマークアップ言語HTMLエンティティモード、スクリプト言語JSエンティティモード及びページを嵌め込むIframeモードを含む、ことを特徴とする
    請求項5に記載のマイクロフロントエンドシステム。
  7. 前記マイクロフロントエンド実行フレームワークは、データ管理モジュール、性能監視モジュール及びエラー処理モジュールをさらに含み、
    前記データ管理モジュールは、Props伝送メカニズムによって提供されるデータにより、データ双方向バインディング機能を実現するように構成され、
    前記性能監視モジュールは、サブアプリケーションのロード時間長及び実行時間長を監視するように構成され、
    前記エラー処理モジュールは、ロード及び実行中におけるサブアプリケーションのエラー情報を監視及び処理するように構成される、ことを特徴とする
    請求項5に記載のマイクロフロントエンドシステム。
  8. 前記サブアプリケーションロードモジュールは、さらに、取得した前記サブアプリケーションのビジネスコードを解析し、解析後のビジネスコードを前記サブアプリケーション実行モジュールに伝送するように構成され、
    前記サブアプリケーション実行モジュールは、実行環境サンドボックスを含み、前記解析後のビジネスコードが前記実行環境サンドボックスで実行される、ことを特徴とする
    請求項5に記載のマイクロフロントエンドシステム。
  9. 前記実行環境サンドボックスは、JSサンドボックス、積層スタイルシートCSSサンドボックス及びバックグラウンドスクリプトWebWorkerサンドボックスを含む、ことを特徴とする
    請求項8に記載のマイクロフロントエンドシステム。
  10. 前記WebWorkerサンドボックスは、WebWorkerに割り当てられたスクリプトファイルをインラインで実行し、前記WebWorkerのクロスドメインでの呼び出しを実行するように構成される、ことを特徴とする
    請求項9に記載のマイクロフロントエンドシステム。
  11. 前記マイクロフロントエンドシステムは、クロスドメインリソース共有をサポートするサーバをさらに含む、ことを特徴とする
    請求項1乃至10のいずれか一項に記載のマイクロフロントエンドシステム。
  12. 電子機器が実行する、マイクロフロントエンドシステムに基づくサブアプリケーションロード方法であって、前記マイクロフロントエンドシステムは、ルーティング登録サービス、サブアプリケーションロードモジュール及びサブアプリケーション実行モジュールを含み、前記サブアプリケーションロード方法は、
    ネットワークアクセス要求を取得するステップであって、前記ネットワークアクセス要求に、アクセス対象ページのユニフォームリソースロケータ(URL)アドレスが含まれるステップと、
    前記URLアドレスに基づいて、前記ルーティング登録サービスから、対応するルーティング情報をプルするステップと、
    前記ルーティング情報に基づいて、前記アクセス対象ページがサブアプリケーションのページであると決定した場合、前記サブアプリケーションロードモジュールは、前記ルーティング情報に基づいて前記ルーティング登録サービスから前記ルーティング情報に対応するサブアプリケーションリソースを取得するステップと、
    前記サブアプリケーションリソースをロードする必要がある場合、前記サブアプリケーションロードモジュールは、前記サブアプリケーションリソースをロードするステップと、
    前記サブアプリケーション実行モジュールは、前記サブアプリケーションリソースを実行し、サブアプリケーションのページをレンダリングするステップと、を含む、サブアプリケーションロード方法。
  13. 前記サブアプリケーションロード方法は、さらに、
    前記サブアプリケーションリソースがプリロードされたか、又は開かれたかどうかを決定するステップと、
    前記サブアプリケーションリソースがプリロードされておらず、且つ開かれていない場合、前記サブアプリケーションリソースをロードする必要があると決定するステップと、を含む、ことを特徴とする
    請求項12に記載のサブアプリケーションロード方法。
  14. 前記サブアプリケーションロード方法は、さらに、
    サブアプリケーション登録に設定する必要があるサブアプリケーション登録情報を取得し、前記サブアプリケーション登録情報をルーティング登録サービスに送信するステップであって、前記サブアプリケーション登録情報は、サブアプリケーションフレームワーク、サブアプリケーションルーティングモード及びサブアプリケーションロードモードを含む、ステップと、
    前記ルーティング登録サービスにより前記サブアプリケーション登録情報を受信し、前記サブアプリケーション登録情報に基づいて前記サブアプリケーションを登録するステップと、を含む、ことを特徴とする
    請求項12に記載のサブアプリケーションロード方法。
  15. 前記サブアプリケーション登録に設定する必要があるサブアプリケーション登録情報を取得するステップは、
    前記ルーティング登録サービスに対応するフロントエンドインターフェースにより、サブアプリケーション登録に対する入力操作を取得するステップと、前記入力操作に基づいて前記サブアプリケーション登録情報を決定するステップ、
    又は、
    コマンドラインツールによりサブアプリケーション新規作成コマンドを受信し、前記サブアプリケーションのルーティング情報、前記サブアプリケーションのリソース情報及びサブアプリケーションテンプレート情報を取得するステップ、を含む、ことを特徴とする
    請求項14に記載のサブアプリケーションロード方法。
  16. 前記サブアプリケーションリソースをロードする必要がある場合、前記サブアプリケーションロードモジュールは、前記サブアプリケーションリソースをロードするステップは、
    前記サブアプリケーションリソースをロードする必要がある場合、前記サブアプリケーションのフレームワーク識別子及びリソースロードタイプを取得するステップと、
    前記リソースロードタイプに基づいて、前記フレームワーク識別子に対応するサブアプリケーションフレームワークで前記サブアプリケーションリソースをロードするステップと、を含む、ことを特徴とする
    請求項12に記載のサブアプリケーションロード方法。
  17. 前記サブアプリケーションロード方法は、さらに、
    前記ルーティング情報に基づいてアクセス対象ページがメインアプリケーションページであると決定した場合、ライフサイクルに基づいてメインアプリケーションに現在マウントされているサブアプリケーションを決定するステップと、
    前記現在マウントされているサブアプリケーションからレンダリングするべき目標サブアプリケーションを決定するステップと、
    公開されるロード関数と前記目標サブアプリケーションに基づいて、ルーティング切り替えをシミュレートし、前記目標サブアプリケーションのサブアプリケーションリソースとメインアプリケーションリソースを取得するステップと、
    前記サブアプリケーションリソースと前記メインアプリケーションリソースをロードして実行し、レンダリング済みの前記メインアプリケーションのページにサブアプリケーションをレンダリングするステップと、を含む、ことを特徴とする
    請求項12乃至16のいずれか一項に記載のサブアプリケーションロード方法。
  18. 電子機器であって、メモリと、プロセッサとを含み、前記メモリはコンピュータープログラムを記憶し、前記プロセッサは、前記コンピュータープログラムにより、請求項12至17のいずれか一項に記載のマイクロフロントエンドシステムに基づくサブアプリケーションロード方法を実行する、電子機器。
  19. プロセッサに、請求項12至17のいずれか一項に記載のマイクロフロントエンドシステムに基づくサブアプリケーションロード方法を実行させる、コンピュータープログラム。
JP2023515655A 2020-12-21 2021-12-10 マイクロフロントエンドシステム、サブアプリケーションロード方法、電子機器、及びコンピュータープログラム製品 Active JP7451825B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN202011520184.6A CN114647518A (zh) 2020-12-21 2020-12-21 微前端系统、子应用加载方法及计算机可读存储介质
CN202011520184.6 2020-12-21
PCT/CN2021/137072 WO2022135178A1 (zh) 2020-12-21 2021-12-10 微前端系统、子应用加载方法、电子设备、计算机程序产品及计算机可读存储介质

Publications (2)

Publication Number Publication Date
JP2023541033A JP2023541033A (ja) 2023-09-27
JP7451825B2 true JP7451825B2 (ja) 2024-03-18

Family

ID=81990618

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023515655A Active JP7451825B2 (ja) 2020-12-21 2021-12-10 マイクロフロントエンドシステム、サブアプリケーションロード方法、電子機器、及びコンピュータープログラム製品

Country Status (5)

Country Link
US (1) US20230036980A1 (ja)
JP (1) JP7451825B2 (ja)
KR (1) KR20230054474A (ja)
CN (1) CN114647518A (ja)
WO (1) WO2022135178A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115277637B (zh) * 2022-09-26 2023-01-13 中企云链(北京)金融信息服务有限公司 基于微前端架构的多域名项目的管理平台及高度聚合部署方法
CN115757268A (zh) * 2022-11-23 2023-03-07 中国人民财产保险股份有限公司 统一门户支持低代码快速对接各类作业系统的方法、设备
CN115883313A (zh) * 2022-11-30 2023-03-31 深圳航天智慧城市系统技术研究院有限公司 一种基于微前端的应用构建与管理方法
CN115987959A (zh) * 2022-12-02 2023-04-18 浪潮通信信息系统有限公司 一种基于远端加载的可定制app融合方法
CN115828021B (zh) * 2022-12-21 2024-02-13 北京深盾科技股份有限公司 一种网页通信方法、系统、电子设备及存储介质
CN116501364B (zh) * 2023-05-05 2024-06-07 南京领行科技股份有限公司 一种应用注册方法、装置和微前端系统
CN116301759B (zh) * 2023-05-12 2023-11-03 国网信息通信产业集团有限公司 一种移动组件共享方法、系统、设备及存储介质
CN116301870A (zh) * 2023-05-17 2023-06-23 北京天信瑞安信息技术有限公司 微前端框架及其构建方法和相关设备
CN116506215B (zh) * 2023-06-16 2023-09-12 中国联合网络通信集团有限公司 访问处理方法、装置、电子设备以及存储介质
CN116700834B (zh) * 2023-08-07 2023-10-24 天津华来科技股份有限公司 一种App模块化加载方法及系统
CN118331660B (zh) * 2024-06-13 2024-10-08 腾讯科技(深圳)有限公司 接口调用方法、装置、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004220151A (ja) 2003-01-10 2004-08-05 Fujitsu Ltd 新旧モジュールの切り替え機能を有するサーバ装置
CN110708368A (zh) 2019-09-25 2020-01-17 北京计算机技术及应用研究所 一种基于路由分发的微前端系统和方法
US20200285516A1 (en) 2019-03-01 2020-09-10 Capital One Services, Llc Systems and methods for developing a web application using micro frontends
CN111796860A (zh) 2020-06-28 2020-10-20 中国工商银行股份有限公司 微前端方案实现方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9826045B2 (en) * 2014-09-26 2017-11-21 Oracle International Corporation Efficient means to test server generated applications on mobile device
CN106598575A (zh) * 2016-11-30 2017-04-26 武汉斗鱼网络科技有限公司 一种前端数据模拟的实现方法及系统
CN109542538A (zh) * 2018-11-22 2019-03-29 郑州云海信息技术有限公司 一种子系统管理方法和系统
CN110377274B (zh) * 2019-07-08 2023-05-05 紫光云技术有限公司 基于Single-Spa的微前端架构系统及开发、部署方法
CN110806895A (zh) * 2019-11-04 2020-02-18 精硕科技(北京)股份有限公司 一种项目创建方法、装置及计算机可读存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004220151A (ja) 2003-01-10 2004-08-05 Fujitsu Ltd 新旧モジュールの切り替え機能を有するサーバ装置
US20200285516A1 (en) 2019-03-01 2020-09-10 Capital One Services, Llc Systems and methods for developing a web application using micro frontends
CN110708368A (zh) 2019-09-25 2020-01-17 北京计算机技术及应用研究所 一种基于路由分发的微前端系统和方法
CN111796860A (zh) 2020-06-28 2020-10-20 中国工商银行股份有限公司 微前端方案实现方法及装置

Also Published As

Publication number Publication date
KR20230054474A (ko) 2023-04-24
CN114647518A (zh) 2022-06-21
WO2022135178A1 (zh) 2022-06-30
JP2023541033A (ja) 2023-09-27
US20230036980A1 (en) 2023-02-02

Similar Documents

Publication Publication Date Title
JP7451825B2 (ja) マイクロフロントエンドシステム、サブアプリケーションロード方法、電子機器、及びコンピュータープログラム製品
US7849437B2 (en) Object oriented web application framework
US8578333B2 (en) Method and system for client-side user interface enhancement to enable application integration and portalisation
JP5439190B2 (ja) It向けサーバベースのウェブアプリケーションを作成するための方法およびシステム
US8595284B2 (en) Web application script migration
US20140149576A1 (en) Managing Application Log Levels in Cloud Environment
US20030149799A1 (en) System supporting unified event handling in ECMAScript
US20080104025A1 (en) Method and system for efficient execution and rendering of client/server interactive applications
CN107092473B (zh) 桌面应用开发方法及设备
US20070288644A1 (en) Systems and methods for developing and running applications in a web-based computing environment
US9798524B1 (en) System and method for exposing the dynamic web server-side
CN101154157A (zh) 为JavaScript应用提供全球化功能的系统和方法
KR20130105287A (ko) 클라이언트 어플리케이션 및 웹 페이지 통합
Xu et al. Caople: A programming language for microservices saas
CN113010170A (zh) 一种基于Vue3组件的页面渲染方法、装置、介质及电子设备
KR101907660B1 (ko) 웹 기반의 운영체제를 탑재한 단말 장치 및 이를 이용한 서비스 제공 방법
JP6055366B2 (ja) 仮想Webサーバプログラム及び機能代行方法
Börger et al. Contribution to a rigorous analysis of web application frameworks
Shepherd Microsoft ASP. NET 4 Step by Step
Yberg Native-like performance and user experience with Progressive Web Apps
Gupta Accelerated GWT: Building Enterprise Google Web Toolkit Applications
US20230229434A1 (en) Super-app extension discovery and configuration via source code management platform comments
Chin et al. JavaFX, the Web, and Cloud Infrastructure
Penberthy et al. Serverless
Nyfløtt Optimizing inter-service communication between microservices

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230308

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230308

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240221

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240226

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240306

R150 Certificate of patent or registration of utility model

Ref document number: 7451825

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150