HarmonyOS: HarmonyOS は、2019 年 8 月 9 日に Huawei によって正式にリリースされたオペレーティング システムです。これは、あらゆるシナリオを指向した分散オペレーティング システムであり、超仮想端末が相互接続された世界を作成し、人、機器、シナリオを有機的に接続します。従来の単一デバイスのシステム機能に基づいて、HarmonyOS は、同じシステム機能セットに基づいて、複数の端末デバイスをサポートできる複数の端末形式に適応する分散コンセプトを提案します。
消費者にとって、HarmonyOSは、ライフシナリオにおけるさまざまな端末の機能を統合して「スーパー仮想端末」を形成することができ、異なる端末デバイス間の高速接続、相互支援、リソース共有を実現し、適切なデバイスをマッチングし、スムーズなフルシナリオ体験を提供することができます。アプリケーション開発者にとって、HarmonyOS はさまざまな分散テクノロジーを採用しているため、さまざまな端末デバイスの形状の違いに関係なくアプリケーションの開発と実装を行うことができ、開発の困難さとコストが軽減されます。これにより、開発者は上位レベルのビジネス ロジックに集中し、より便利かつ効率的にアプリケーションを開発できるようになります。デバイス開発者向けに、HarmonyOS はコンポーネントベースの設計スキームを採用しており、デバイスのリソース能力とビジネス特性に応じて柔軟に調整して、さまざまなタイプの端末デバイスのオペレーティング システム要件を満たすことができます。
OpenHarmony: OpenHarmony は、主に IoT アプリケーションとスマート デバイス向けに Huawei によって開発されたオペレーティング システムです。マイクロカーネルアーキテクチャを採用しており、高効率、安全性、安定性が特徴です。OpenHarmony は、JavaScript、Java、C/C++ などの複数言語での開発をサポートする開発フレームワークとツールを提供します。開発者は、OpenHarmony が提供する ArkUI、ArkJS、ArkCompiler などの開発ツールやコンポーネントを使用して、ユーザー インターフェイス、アプリケーション モジュール開発、データ ストレージなどのサービスを構築できます。
アプリケーション開発: アプリケーション開発とは、プログラミング言語、ツール、およびフレームワークを使用して、1 つ以上のアプリケーションをコンセプトから実際の運用まで進めるプロセスを指します。アプリケーション開発には通常、次の手順が含まれます。
- 要件の決定: アプリケーション開発の前に、機能要件、パフォーマンス要件、セキュリティ要件など、アプリケーションの要件を明確にする必要があります。
- 設計:要件に従って、アーキテクチャ設計、インターフェース設計、データ構造設計などを含むアプリケーションプログラムを設計します。
- コーディング:設計書や仕様書に従って、プログラミング言語を使用してアプリケーションをコーディングします。
- テスト: コーディングが完了したら、アプリケーションが適切に動作し、要件と設計に準拠していることを確認するためにテストが必要です。
- 導入: アプリケーションをターゲットのデバイスまたはプラットフォームに導入し、ユーザーが使用できるようにします。
- メンテナンス: アプリケーションが稼働した後は、バージョンの更新、バグ修正、パフォーマンスの最適化などを含むメンテナンスが必要です。
アプリケーション開発では、Java、Python、JavaScript などのさまざまなプログラミング言語と開発フレームワークを使用できます。同時に、アプリケーション開発では、アプリケーションの品質と信頼性を確保するために、ユーザー エクスペリエンス、パフォーマンスの最適化、セキュリティなどの要素も考慮する必要があります。それぞれの言語とフレームワークには、それぞれの利点と使用例があります。同時に、アプリケーションの品質と信頼性は、プログラミング言語や開発フレームワークだけでなく、ユーザー エクスペリエンス、パフォーマンスの最適化、セキュリティなどの要素にも依存します。アプリケーション開発プロセスでは、最終的に提供されるアプリケーションがユーザーのニーズを満たし、優れたユーザー エクスペリエンスを提供し、安定性とセキュリティを確保できるように、継続的な反復と最適化が必要です。
HarmonyOS/OpenHarmony は、ファーウェイが発売したオペレーティング システムで、主に IoT アプリケーションやスマート デバイスに使用されます。Android とは異なり、HarmonyOS はマイクロカーネル アーキテクチャを採用しており、より効率的で安全かつ安定しています。
HarmonyOS/OpenHarmonyアプリケーション開発に関しては、ファーウェイが開発フレームワークとツールを提供しており、開発者はJavaScript、Java、C/C++などの言語を使用して開発できます。
JavaScript、Java、および C/C++ は 3 つの異なるプログラミング言語であり、それぞれに異なる特性とアプリケーション シナリオがあります。
- JavaScript: JavaScript は、主に Web 開発で使用されるスクリプト言語です。通常、フロントエンド開発でユーザー対話、フォーム検証、ページダイナミクスなどを処理するために使用されます。JavaScript は、Node.js を使用したサーバーサイド プログラミングなどのバックエンド開発にも使用できます。JavaScript は、主に Web 開発で使用されるスクリプト言語です。通常、フロントエンド開発でユーザー対話、フォーム検証、ページダイナミクスなどを処理するために使用されます。JavaScript は、Node.js を使用したサーバーサイド プログラミングなどのバックエンド開発にも使用できます。JavaScript は、事前にコンパイルしなくてもブラウザーで直接実行できるインタープリタ型言語です。JavaScript は、学習しやすい構文と豊富な API のおかげで、Web 開発で最もよく使用される言語の 1 つになりました。Web開発だけでなく、モバイルアプリ開発やゲーム開発などにも活用できます。
JavaScript の応用シナリオは非常に幅広く、以下にその一部を示します。
- フロントエンド開発: JavaScript は通常、ユーザー操作、フォーム検証、ページ ダイナミクスなどを処理するために使用されます。Web ページをより動的かつインタラクティブにし、ユーザー エクスペリエンスを向上させることができます。
- サーバーサイド開発: Node.js を使用すると、JavaScript をサーバーサイド開発にも使用できます。これにより、フロントエンドとバックエンドのコードを共有できるため、開発や保守の負担が軽減されます。
- モバイル アプリ開発: JavaScript と、React Native や Ionic などの関連フレームワークを使用して、クロスプラットフォームのモバイル アプリケーションを開発できます。
- ゲーム開発: JavaScript と、Phaser や Unity などの関連ゲーム エンジンを使用して、2D および 3D ゲームを開発できます。
- Java: Java は、プラットフォームに依存せず、さまざまなオペレーティング システムやハードウェア上で実行できるオブジェクト指向プログラミング言語です。エンタープライズアプリケーション開発、モバイルアプリケーション開発、ゲーム開発などの分野で広く使用されています。
Java は、プラットフォームに依存せず、さまざまなオペレーティング システムやハードウェア上で実行できるオブジェクト指向プログラミング言語です。エンタープライズアプリケーション開発、モバイルアプリケーション開発、ゲーム開発などの分野で広く使用されています。
Java には次のような機能があります。
- プラットフォームの独立性: Java の仮想マシン (JVM) により、プラットフォームごとに個別にコンパイルする必要がなく、JVM をサポートする任意のプラットフォームで Java コードを実行できます。
- オブジェクト指向: Java は、カプセル化、継承、ポリモーフィズムなどのオブジェクト指向プログラミングの概念をサポートするオブジェクト指向言語であり、コードをよりモジュール化して拡張可能にします。
- セキュリティ: Java には、コード インジェクション、バッファ オーバーフロー、その他のセキュリティ問題を防ぐためのセキュリティ メカニズムが組み込まれています。
- 豊富なライブラリとフレームワーク: Java には、Spring、Hibernate、Android SDK など、開発を高速化し、コードの品質を向上させる豊富なライブラリとフレームワークがあります。
- 優れたパフォーマンス: Java はインタープリター型言語ですが、その JIT (ジャストインタイム コンパイル) テクノロジによりホット コードをローカル マシン コードにコンパイルできるため、C++ に近いパフォーマンスを実現できます。
Java のアプリケーション シナリオは非常に幅広く、以下にその一部を示します。
- エンタープライズ レベルのアプリケーション開発: Java は、電子商取引、金融、物流、その他の分野などのエンタープライズ レベルのアプリケーション開発で広く使用されています。
- モバイル アプリケーション開発: Java および Android SDK を使用して、Android プラットフォーム用のモバイル アプリケーションを開発できます。
- ゲーム開発: 2D および 3D ゲームは、Java と LibGDX や jMonkeyEngine などのゲーム エンジンを使用して開発できます。
- Web 開発: Web アプリケーションは、Java および Spring や Struts などの関連フレームワークを使用して開発できます。
- C/C++: C および C++ は、効率的なパフォーマンスと基盤となるハードウェアへの直接アクセスを備えたコンパイル言語です。これらは、システムレベルのプログラミング、ゲーム開発、組み込みシステムなどの分野で広く使用されています。C++ は、オブジェクト指向プログラミングの概念を導入した C の拡張機能です。
C言語には次のような特徴があります。
- 低水準言語: C 言語はメモリとハードウェアを直接操作できるため、バイナリ データと基礎となるハードウェアを効率的に処理できます。
- 構造化言語: C 言語は構造化されており、エントリー ポイントは 1 つ (main 関数) のみです。プログラムでは、すべてのコードを関数内に配置する必要があります。
- 静的型付け言語: C 言語は静的型付け言語であり、コンパイル時に変数の型を決定する必要があります。
- 型付けが弱い言語: C 言語は型チェックが比較的緩く、オーバーフローやクロスボーダーなどの問題に悩まされやすいです。
- 効率的なコード: C 言語はメモリとハードウェアを直接操作できるため、生成されるコードは非常に効率的です。
C 言語の応用シナリオは非常に幅広く、以下にその一部を示します。
C++ 言語のアプリケーション シナリオは非常に幅広く、以下にその一部を示します。
- システム プログラミング: C 言語は、オペレーティング システム、ドライバー、コンパイラーなどのシステム レベルのソフトウェアの主要なプログラミング言語です。
- 組み込みシステム: C 言語は、スマート ホーム、スマート ウェアラブル デバイスなどの組み込みシステムの主要なプログラミング言語でもあります。
- ゲーム開発: C 言語は、ゲーム エンジン、物理エンジンなどのゲーム開発でも広く使用されています。
- ネットワーク プログラミング: C 言語は、TCP/IP プロトコル スタック、ルーター プロトコルなどのネットワーク プログラミングで広く使用されています。
C++ 言語には次のような特徴があります。
- 低レベル言語: C++ 言語はメモリとハードウェアを直接操作できるため、バイナリ データと基礎となるハードウェアを効率的に処理できます。
- 構造化言語: C++ 言語は構造化されており、エントリー ポイントは main 関数のみです。プログラムでは、すべてのコードを関数内に配置する必要があります。
- 静的型付け言語: C++ 言語は静的型付け言語であり、コンパイル時に変数の型を決定する必要があります。
- 厳密に型指定された言語: C++ 言語の型チェックは比較的厳密であるため、エラーを効果的に減らすことができます。
- オブジェクト指向: C++ 言語は、クラス、オブジェクト、継承、ポリモーフィズムなどの機能を備えたオブジェクト指向プログラミングをサポートしており、コードの再利用性と保守性を向上させることができます。
- STL: C++ 言語の標準ライブラリは、データ構造とアルゴリズムの実現を容易にする多数のコンテナ、アルゴリズム、その他のコンポーネントを提供します。
- システム プログラミング: C++ 言語は、オペレーティング システム、ドライバー、コンパイラーなどのシステム レベルのソフトウェアの主要なプログラミング言語の 1 つです。
- ゲーム開発: C++ 言語は、ゲーム エンジンや物理エンジンなどのゲーム開発でも広く使用されています。
- 科学計算: C++ 言語は、科学計算、数値計算、および数値シミュレーション、画像処理などのその他の分野で広く使用されています。
- Web 開発: C++ 言語は、Cherry フレームワークを使用した Web アプリケーションの開発など、Web 開発でも使用されます。
3 つの言語は文法と構造にいくつかの類似点がありますが、適用シナリオと特性は異なります。プログラミング言語を選択するときは、特定のアプリケーションのシナリオとニーズに応じて最適な言語を選択する必要があります。
具体的には、HarmonyOS は次の開発ツールとコンポーネントを提供します。
- ArkUI: レスポンシブかつアダプティブなレイアウトをサポートするユーザー インターフェイスを構築するための開発ツール。
ArkUI は、HarmonyOS アプリケーション インターフェイスを構築するための宣言型 UI 開発フレームワークです。最小限の UI 情報構文、豊富な UI コンポーネント、およびリアルタイム プレビューを使用して、開発効率を向上させます。
- ArkJS: Node.js と WebAssembly をサポートする JavaScript ランタイム環境。
ArkJS は JavaScript アプリケーション開発フレームワークであり、JavaScript、C/C++ などのさまざまなプログラミング言語で実装されています。ArkJS には、コンパイラー JS フロントエンド、JS バックエンド、JS ランタイム、JS デバッガーなどの複数のコンポーネントが含まれます。このうち、Ark JS Runtime (Ark JS Runtime) は、OpenHarmony 上の JavaScript アプリケーションで使用されるランタイムで、JS オブジェクト アロケーターとガベージ コレクター、ECMAScript 仕様に準拠した標準ライブラリ、Ark フロントエンド コンポーネントによって生成される Ark バイトコード (Ark Bytecode) を実行するためのインタープリター、隠しクラスを格納するためのインライン キャッシュ、外部関数インターフェイス (AFFI) およびその他のモジュールが含まれます。
- ArkCompiler: AOT および JIT コンパイルをサポートするコンパイラー。アプリケーションのパフォーマンスと応答速度を向上させることができます。
ArkCompiler は、まったく新しいシステムおよびアプリケーションのコンパイルおよび運用メカニズムであり、すべての Java セマンティクスの静的コンパイルを実装し、Java 言語を機械語に直接「変換」し (静的コンパイル)、仮想マシンの動的コンパイルの余分なオーバーヘッドを排除し、開発と運用効率の両立を実現します。
- ArkUIWidget: 開発者がユーザー インターフェイスを迅速に構築できるように、ボタンやテキスト ボックスなどの一般的に使用される UI コンポーネントを提供します。
ArkUIWidget は、HarmonyOS アプリケーションの UI 開発のために Huawei によって開始された UI コンポーネント ライブラリです。ボタン、フォーム、ポップアップ ウィンドウ、メニュー、レイアウトなどを含む豊富な UI コンポーネントとスタイルが提供されます。開発者はこれらのコンポーネントを直接使用して、美しく使いやすい UI インターフェイスを迅速に構築できます。同時に、ArkUIWidget はカスタム テーマやスタイル拡張機能などの機能もサポートしているため、開発者はニーズに応じて独自の UI スタイルをカスタマイズできます。
- ArkModule: モジュール式アプリケーションを構築し、モジュール式開発とモジュール式ロードをサポートするための開発ツール。
ArkModule は、HarmonyOS アプリケーションの開発と管理のために Huawei が立ち上げたモジュール式アプリケーション開発フレームワークです。アプリケーション管理、モジュール管理、サービス管理、データ管理、その他の機能を含む一連のモジュール式コンポーネントと API が提供されており、開発者はニーズに応じてさまざまなコンポーネントと API を選択して、高度にモジュール式でスケーラブルなアプリケーションを迅速に構築できます。同時に、ArkModule は、開発者がアプリケーションの開発、テスト、リリースを容易にするために、アプリケーションのパッケージ化、アプリケーションのデバッグ、アプリケーションの公開などの一連のツールとプラットフォームのサポートも提供します。
- Ark ストレージ: ローカル ストレージ、リモート ストレージ、データベース ストレージなど、いくつかのデータ ストレージ オプションを提供します。
- Ark サービス: プッシュ サービス、ログイン サービス、支払いサービスなどのいくつかの共通サービスを提供します。
ArkTS 言語で、HarmonyOS/OpenHarmony アプリケーション開発にメッセージ イベント リフレッシュ カード コンテンツを実装するには、次の手順が必要です。
-
カード内にメッセージ イベントを定義します。次に例を示します。
@Component({
selector: 'my-card',
template: `
<div>
<h1>{
{title}}</h1>
<p>{
{content}}</p>
<button (click)="onRefresh()">Refresh</button>
</div>
`,
directives: [FORM_DIRECTIVES],
events: ['onMessage']
})
export class MyCardComponent implements OnInit {
title: string;
content: string;
onMessage(event: any) {
// 处理message事件,刷新卡片内容
this.title = event.title;
this.content = event.content;
}
ngOnInit() {
// 监听message事件,刷新卡片内容
this.onMessage({title: 'Title', content: 'Content'});
}
onRefresh() {
// 触发message事件,刷新卡片内容
this.onMessage({title: 'New Title', content: 'New Content'});
}
}
これは、タイトルやコンテンツなどのカードのコンテンツを表示するために使用され、更新ボタンを提供する MyCardComponent コンポーネントのコード例です。コンポーネントは @Component デコレーターを使用して、コンポーネントの名前、テンプレート、命令、およびイベントを指定します。
このコンポーネントは双方向データ バインディングを使用し、 { {}} 構文を通じてテンプレート内のタイトルとコンテンツの値を表示します。同時に、メッセージ イベントを処理し、イベントの発生時にカードのコンテンツを更新するために使用される onMessage メソッドも定義します。ngOnInit メソッドでは、コンポーネントはメッセージ イベントをリッスンし、カードの初期化時にコンテンツを更新します。onRefresh メソッドでは、コンポーネントはメッセージ イベントをトリガーし、カードのコンテンツを更新します。
このコンポーネントは FORM_DIRECTIVES ディレクティブを使用するため、FORM_DIRECTIVES をコンポーネントにインポートする必要があることに注意してください。同時に、このコンポーネントは、他のコンポーネントまたはページにカードのコンテンツを更新するように通知するために使用される onMessage イベントも定義します。
2. 親コンポーネントでメッセージ イベントをトリガーします。例:
@Component({
selector: 'my-app',
template: `
<my-card (onMessage)="onMessage($event)"></my-card>
`,
directives: [MyCardComponent]
})
export class AppComponent {
onMessage(event: any) {
// 触发message事件,刷新卡片内容
this.messageEvent = event;
}
}
これは、MyCardComponent コンポーネントを含み、その onMessage イベントをリッスンする AppComponent コンポーネントのコード例です。
コンポーネントは @Component デコレーターを使用して、コンポーネントの名前、テンプレート、ディレクティブ、およびその他の情報を指定します。このうち、MyCardComponent コンポーネントはテンプレートで使用され、(onMessage)="onMessage($event)"
その onMessage イベントが構文を通じてリッスンされます。
AppComponent の onMessage メソッドでは、MyCardComponent によって渡された onMessage イベントを受け取り、それを messageEvent 変数に割り当てます。messageEvent 変数が変更されると、関連するビジネス ロジックがトリガーされて、カードのコンテンツが更新されます。
3. 親コンポーネントでメッセージ イベントを定義します。例:
@Component({
selector: 'my-app',
template: `...`,
directives: [MyCardComponent]
})
export class AppComponent {
messageEvent: any;
}
これは、MyCardComponent コンポーネントを含み、その onMessage イベントをリッスンする AppComponent コンポーネントのコード例です。
コンポーネントは @Component デコレーターを使用して、コンポーネントの名前、テンプレート、ディレクティブ、およびその他の情報を指定します。このうち、MyCardComponent コンポーネントはテンプレートで使用され、(onMessage)="onMessage($event)"
その onMessage イベントが構文を通じてリッスンされます。
AppComponent では、MyCardComponent によって渡された onMessage イベントを格納する messageEvent 変数を宣言します。messageEvent 変数が変更されると、関連するビジネス ロジックがトリガーされて、カードのコンテンツが更新されます。
HarmonyOS/OpenHarmony アプリケーション開発では、メッセージ イベントは通常、コンポーネント間でデータを転送したり、カードのコンテンツを更新したりするために使用されます。メッセージ イベントを使用してカードのコンテンツを更新するには、次の手順に従います。
-
MyCardComponent コンポーネントで、メッセージ イベントを処理する onMessage メソッドを定義します。例えば:
@Component({ selector: 'my-card', template: `...`, directives: [FORM_DIRECTIVES], events: ['onMessage'] }) export class MyCardComponent implements OnInit { title: string; content: string; onMessage(event: any) { // 处理message事件,刷新卡片内容 this.title = event.title; this.content = event.content; } }
これは、カードのコンテンツを表示し、メッセージ イベントをリッスンしてカードのコンテンツを更新するために使用される MyCardComponent コンポーネントのコード例です。
コンポーネントは @Component デコレーターを使用して、コンポーネントの名前、テンプレート、ディレクティブ、およびその他の情報を指定します。その中で、テンプレートにはタイトルや内容などのカードの内容が表示されます。同時に、FORM_DIRECTIVES ディレクティブを使用するため、コンポーネントに FORM_DIRECTIVES をインポートする必要があります。
このコンポーネントは、メッセージ イベントを処理するための onMessage メソッドも定義します。コンポーネントはメッセージ イベントを受信すると、イベント内のタイトル プロパティとコンテンツ プロパティをコンポーネントのタイトル プロパティとコンテンツ プロパティに割り当て、それによってカードのコンテンツを更新します。
親コンポーネントで MyCardComponent を使用する場合、
(onMessage)="onMessage($event)"
構文を通じてその onMessage イベントをリッスンし、onMessage メソッドでイベントを処理してカードのコンテンツを更新できます。 -
MyCardComponent コンポーネントのテンプレートで、ボタン要素を追加し、クリック イベントをバインドしてメッセージ イベントをトリガーします。例えば:
<button (click)="onRefresh()">Refresh</button>
このコードは Angular のテンプレート構文で、クリックされたときに onRefresh メソッドをトリガーするボタンを表します。具体的には、
<button>
これは HTML のボタン要素であり、(click)
クリック イベントをリッスンすることを意味します。 -
コンポーネント クラスでは、onRefresh メソッドを定義する必要があります。
onRefresh()
これは、クリック イベントを処理する Angular コンポーネント クラスのメソッドです。import { Component } from '@angular/core'; @Component({ selector: 'app-my-component', template: '<button (click)="onRefresh()">Refresh</button>', }) export class MyComponent { onRefresh() { // 点击按钮后执行的逻辑 } }
-
onRefresh メソッドでは、ボタンをクリックした後に実行する必要があるロジックを記述できます。
これは、クリックされたときに onRefresh メソッドをトリガーするボタンを表示するために使用される、MyComponent コンポーネントのコード例です。具体的には:
import { Component } from '@angular/core'
: Angular のコア モジュールからコンポーネント デコレーターをインポートします。@Component
: コンポーネント デコレータを使用して、コンポーネント名、テンプレート、命令、その他の情報を含むコンポーネントを定義します。selector
: 指定されたコンポーネントの CSS セレクター。テンプレート内のコンポーネントを参照するために使用されます。template
: 指定されたコンポーネントのテンプレート。ボタンが表示され、クリック イベントがバインドされます。onRefresh()
: クリック イベントを処理するメソッド、つまりボタンがクリックされた後に実行されるロジックを定義します。<app-my-component></app-my-component>
MyComponent コンポーネントを使用した例を次に示します。コンポーネントがレンダリングされると、ボタンが表示され、クリック イベントをリッスンします。ユーザーがボタンをクリックすると、onRefresh メソッドがトリガーされ、対応するロジックが実行されます。
この例では、構文を介して MyComponent コンポーネントが
<app-my-component></app-my-component>
使用されます。この構文は、MyComponent コンポーネントをテンプレートに挿入してレンダリングするように Angular に指示します。コンポーネントがレンダリングされると、@Component
デコレータで定義されたテンプレートに従ってボタンが表示され、クリック イベントをリッスンします。ユーザーがボタンをクリックすると、onRefresh メソッドがトリガーされ、対応するロジックが実行されます。-
MyCardComponent コンポーネントの onRefresh メソッドで、メッセージ イベントをトリガーします。例えば:
@Component({ selector: 'my-app', template: ` <my-card (onMessage)="onMessage($event)"></my-card> `, directives: [MyCardComponent] }) export class AppComponent { onMessage(event: any) { // 触发message事件,刷新卡片内容 this.messageEvent = event; } }
これは、MyCardComponent コンポーネントを含み、その onMessage イベントをリッスンする AppComponent コンポーネントのコード例です。
コンポーネントは @Component デコレーターを使用して、コンポーネントの名前、テンプレート、ディレクティブ、およびその他の情報を指定します。このうち、MyCardComponent コンポーネントはテンプレートで使用され、
(onMessage)="onMessage($event)"
その onMessage イベントが構文を通じてリッスンされます。AppComponent の onMessage メソッドでは、MyCardComponent によって渡された onMessage イベントを受け取り、それを独自の messageEvent 変数に割り当てます。messageEvent 変数が変更されると、関連するビジネス ロジックがトリガーされて、カードのコンテンツが更新されます。
-
ユーザーが MyCardComponent コンポーネントの [更新] ボタンをクリックすると、MyCardComponent はメッセージ イベントをトリガーし、新しいタイトルとコンテンツを AppComponent に渡します。AppComponent はメッセージ イベントを受信すると、独自の messageEvent 変数を更新してカードのコンテンツを更新します。
ユーザーが MyCardComponent コンポーネントの [更新] ボタンをクリックすると、MyCardComponent は onRefresh メソッドをトリガーします。このメソッドでは、raise メソッドを呼び出し、新しいタイトルとコンテンツをパラメータとしてイベントに渡すことによってメッセージ イベントがトリガーされます。
AppComponent コンポーネントは、構文を通じて
(onMessage)="onMessage($event)"
MyCardComponent の onMessage イベントをリッスンします。AppComponent はメッセージ イベントを受信すると、独自の onMessage メソッドを呼び出します。このメソッドでは、イベント パラメーターのタイトルとコンテンツを独自の messageEvent 変数に割り当てます。messageEvent 変数は AppComponent のプロパティであるため、変更されると、関連するビジネス ロジックがトリガーされ、カードのコンテンツが更新されます。
つまり、HarmonyOS/OpenHarmony アプリケーション開発では、開発者はその開発フレームワークとツールに精通し、複数の言語を柔軟に使用して開発できる必要があります。同時に、開発者はアプリケーションの品質と安定性を確保するために、ユーザー エクスペリエンスとパフォーマンスの最適化にも注意を払う必要があります。