👌

HarmonyOSモジュール開発実践:独立したルーティングと結合の解消戦略

に公開

まえがき

現代のソフトウェア開発において、モジュール化設計はプロジェクトの保守性と拡張性を高める鍵です。HarmonyOSは、その先進的なアーキテクチャ設計によって、開発者に強力なモジュール化開発ツールを提供しています。本稿では、HarmonyOSでモジュールの独立ルーティング設定を実現し、モジュール間の結合度を低下させ、単一モジュールの独立した実行と開発を可能にする方法を深く探ります。

一、アーキテクチャ設計の概要

モジュール化開発の基盤となるのは、明確なアーキテクチャ設計です。以下は、私が推奨するアーキテクチャ設計パターンです。

- baselibrary (基本共通フレームワークライブラリ)
  - プロジェクト内で共通して使用されるすべての基本機能とユーティリティクラスを含みます。
- commons (ビジネス共通フレームワークライブラリ)
  - uicomponents (共通ページ、コンポーネントライブラリ)
    - 再利用可能なすべてのUIコンポーネントとページテンプレートを格納します。
- features
  - collection (コレクションページコンポーネント)
  - message (メッセージページコンポーネント)
  - 各機能モジュールは、独自のビジネスロジックとUI実装を含みます。
- products
  - default (製品モジュール)
    - アプリケーションの主要な機能とエントリーポイントを含むデフォルトの製品モジュール。

二、ルーティング設定の詳細

1. 基本ルーティング設定

製品モジュールでは、まず基本ルーティングを定義する必要があります。これらのルーティングは、通常、アプリケーションの起動ページ、ホームページ、ログインページなどです。

基本ルーティング設定のコード例:

// ルーティング名の定数を定義する
export enum RouteName {
  SplashPage = 'SplashPage',
  MainPage = 'MainPage',
  OtherLogin = 'OtherLogin',
  OtherTest = 'OtherTest'
}

// ルーティング設定関数
@Builder
export function routeConfig(name: string, param?: object) {
  switch (name) {
    case RouteName.SplashPage:
      return SplashPage();
    case RouteName.MainPage:
      return MainPage();
    case RouteName.OtherTest:
      return TestPage();
    case RouteName.OtherLogin:
      return OtherLogin();
    default:
      return NullPage();
  }
}

2. アプリケーションエントリ設定

アプリケーションのエントリーファイルでは、ルーティングを設定し、ナビゲーションを初期化します。

アプリケーションエントリ設定のコード例:

@Entry
@Component
struct Index {
  // ルーティングスタック
  @Provide('NavPathStack') pageInfos = new NavPathStack();

  aboutToAppear() {
    // ルーティングを初期化する
    LibNavigator.init(this.pageInfos, routeConfig);
  }

  build() {
    Navigation(this.pageInfos) {
      MainPage();
    }
    .navDestination(routeConfig);
  }
}

三、モジュール化システムルーティング設定

1. モジュールルーティングページの作成

各モジュールごとに、モジュール内のページナビゲーションを実現するルーティングページコードを作成する必要があります。

モジュールルーティングページのコード例:

import { CommentComp } from '../pages/comment/CommentComp';

export enum MessageRouteName {
  Comment = "Comment"
}

@Builder
export function messageRouter(name: string, param?: object) {
  if (name === MessageRouteName.Comment) {
    return CommentComp();
  }
}

2. システムルーティングテーブル設定

システムの設定ファイルでは、モジュールのルーティングテーブルを設定し、モジュールの独立したルーティング実行を実現します。

システムルーティングテーブル設定のコード例:

{
  "routerMap": [
    {
      "name": "Comment",
      "pageSourceFile": "src/main/ets/router/MessageRouter.ets",
      "buildFunction": "messageRouter",
      "data": {
        "description": "Comment ページ"
      }
    }
  ]
}

module.json5設定の例:

{
  "module": {
    "name": "message",
    "type": "har",
    "deviceTypes": [
      "default",
      "tablet",
      "2in1"
    ],
    "routerMap": "$profile:route_map"
  }
}

四、おわりに

本稿の詳細な分析を通じて、HarmonyOSでモジュール化開発を実現し、独立したルーティング設定によってモジュール間の結合を低下させ、開発効率とアプリケーションの保守性を高める方法を学びました。本稿がHarmonyOSの開発者に実用的なガイダンスとインスピレーションを提供し、Harmonyエコシステムの繁栄発展に寄与することを願っています。

Discussion