HarmonyOS NEXT 项目模块化

一、前言

	实际项目,我们通常项目进行拆分,分成不同Model,方便其他项目调用,本文对实际操作进行进行说明。
	API : API Version 12 Beta5
	Dev : 5.0.3.700

二、详细说明

  1. 项目右键New-Model,选择Shared Library,命名为“common”(叫啥都行)。
    在这里插入图片描述
  2. 在主App的引入新创建的common Lib。
    在这里插入图片描述
    3.在common中创建一个PreferencesUtil用户首选项工具类,类似于Android的Sp,并在common的Index中暴露这个工具类。
    在这里插入图片描述
    PreferencesUtil
import dataPreferences from '@ohos.data.preferences';
import preferences from '@ohos.data.preferences';
import { Log } from './Log';
import { ValueType } from '@kit.ArkData';

/**
 * 用户首选项工具类
 */
export class PreferencesUtil {
  static mPreferences ?: dataPreferences.Preferences

  /**
   * 初始化
   * @param context
   */
  static init(context: Context) {
    try {
      dataPreferences.getPreferences(context, 'Looper_Sp', (err, preferences) => {
        if (err) {
          Log.error(`Failed to get preferences. Code:${err.code},message:${err.message}`);
          return;
        }
        PreferencesUtil.mPreferences = preferences
        Log.info('Succeeded in getting preferences.');
        // 进行相关数据操作
      })
    } catch (err) {
      Log.error(`Failed to get preferences. Code:${err.code},message:${err.message}`);
    }
  }

  /**
   * 写数据
   * @param isFlush 是否持久化
   */
  static writeData(key: string, value: ValueType, isFlush: boolean): Promise<boolean> {
    return new Promise((resolve, reject) => {
      try {
        PreferencesUtil.mPreferences?.put(key, value, (err) => {
          if (err) {
            Log.error(`Failed to put data. Code:${err.code}, message:${err.message}`);
            reject(false);
            return;
          }
          Log.info('Succeeded in putting data.');
          if (isFlush) {
            PreferencesUtil.flushData()
          }
          resolve(true);
        })
      } catch (err) {
        Log.error(`Failed to check the key 'startup'. Code:${err.code}, message:${err.message}`);
        reject(false);
      }
    });
  }

  /**
   * 读取数据
   */
  static readData<D>(key: string): Promise<D> {
    return new Promise((resolve, reject) => {
      if (PreferencesUtil.mPreferences == null) {
        reject(new Error("mPreferences is null"));
      } else {
        PreferencesUtil.mPreferences.get(key, "", (err, value) => {
          if (err) {
            reject(err);
            return;
          }
          resolve(value as D);
        })
      }
    });
  }

  /**
   * 删除数据
   * @param isFlush 是否持久化
   */
  static delData(key: string, isFlush: boolean): Promise<string> {
    return new Promise((resolve, reject) => {
      if (PreferencesUtil.mPreferences == null) {
        reject(new Error("mPreferences is null"));
      } else {
        PreferencesUtil.mPreferences.delete(key, (err, value) => {
          if (err) {
            reject(err);
            return;
          }
          if (isFlush) {
            PreferencesUtil.flushData()
          }
          resolve("删除成功");
        })
      }
    });
  }

  /**
   * 删除整个库
   * @param isFlush 是否持久化
   */
  static delDB(context: Context, storeName: string): Promise<string> {
    return new Promise((resolve, reject) => {
      dataPreferences.deletePreferences(context, storeName, (err, value) => {
        if (err) {
          reject(err);
          return;
        }
        resolve("删除成功");
      })
    });
  }

  /**
   * 持久化
   */
  static flushData() {
    if (PreferencesUtil.mPreferences != null) {
      try {
        PreferencesUtil.mPreferences.flush((err) => {
          if (err) {
            Log.error(`Failed to flush. Code:${err.code}, message:${err.message}`);
            return;
          }
          Log.info('Succeeded in flushing.');
        })
      } catch (err) {
        Log.error(`Failed to flush. Code:${err.code}, message:${err.message}`);
      }
    }
  }
}

let preferencesUtil = new PreferencesUtil()

export default preferencesUtil as PreferencesUtil

Index

export { PreferencesUtil } from './src/main/ets/utils/PreferencesUtil'

4.然后就能在主App中使用这个工具类,这个工具类需要在初始化的时候调用一下init方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值