美文网首页
从零开始仿抖音做一个APP(2.0 模块化框架搭建)

从零开始仿抖音做一个APP(2.0 模块化框架搭建)

作者: MardaWang | 来源:发表于2024-11-18 09:10 被阅读0次

前面已经创建了一个HelloWorld项目,同时创建了包含工具、业务、启动等功能的多个业务模块模板,今天开始串联Har模块和Hap模块,此外,为项目添加一个欢迎页。

Har模块和Hap模块关联

我们创建的各个Har模块根目录下都有一个Index.ets文件,该文件是HAR导出声明文件的入口,HAR需要导出的接口,统一在Index.ets文件中导出。Index.ets文件是DevEco Studio默认自动生成的,用户也可以自定义,在模块的oh-package.json5文件中的main字段配置入口声明文件,配置如下所示:

{
  "main": "Index.ets"
}

如下图所示,可以看到通过export导出了名为MainPage的 ArkUI组件。当前HAR对外暴露的接口,在Index.ets导出该MainPage.ets文件:

image.png

接下来,在entry模块中引用Har资源,在该模块根目录找到oh-package.json5,在dependancie引入依赖module,

  "dependencies": {
    "base": "file:../../common/base",
    "feature_home": "file:../../features/feature_home"
  }
image.png

接下来在entry模块的具体ets文件中引入module的接口或view组件,以创建欢迎页为例。

Module中添加资源并导出

在base模块中创建并导出了Constants.ets文件,同时创建了多个Utils文件,如下图


image.png

在entry模块创建欢迎页并引用module的资源

创建splash.ets文件并设置欢迎页、读秒跳转,可通过用户首选项设置欢迎页的展示逻辑,具体代码如下图所示:


image.png

可以看到, Constants 接口和 PreferencesUtil 工具类都是base模块中创建,在entry模块经过import后可直接调用:

import { Constants, PreferencesUtil } from 'base';

同样的,可通过$r引用HAR中的资源,例如在HAR模块的src/main/resources里添加字符串资源(在string.json中定义,name:hello_har)和图片资源(icon_har.png),然后在Entry模块中引用该字符串和图片资源。

欢迎页的样式和逻辑已完成,接下来需要修改EntryAbility的页面加载路径,即在onWindowStageCreate()将
windowStage.loadContent()的路径改为 ‘pages/Splash’ :

export default class EntryAbility extends UIAbility {
    ......
  onWindowStageCreate(windowStage: window.WindowStage): void {
    // Main window is created, set main page for this ability
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
    windowStage.loadContent('pages/Splash', (err) => {
      if (err.code) {
        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
    });
  }

    ...... 
}

最终的效果:


image.png

至此,module之间相互依赖和欢迎页创建都完成了,大家运行自己的代码即可看到效果,遗留问题(比如欢迎页没有全屏,顶部底部有白块、项目名称、start_icon修改等)相信大家也注意到了,我们下一期进行优化。

小知识点:

  • 本文创建的多个HAR模块可以作为二方库和三方库提供给其他应用使用,如果需要对代码资产进行保护时,建议开启混淆能力。

    混淆能力开启后,DevEco Studio在构建HAR时,会对代码进行编译、混淆及压缩处理,保护代码资产。

  • 仅Stage模型的ArkTS工程支持混淆。

可以在HAR模块的build-profile.json5文件中的ruleOptions字段下的enable进行设置,配置如下所示:

image.png

相关文章

网友评论

      本文标题:从零开始仿抖音做一个APP(2.0 模块化框架搭建)

      本文链接:https://www.haomeiwen.com/subject/edkpjjtx.html