一. 模块之间的依赖 ------ 详细解析官网购物应用优秀案例(鸿蒙开发)

一. 项目目录简介

├──**common**                            // 公共能力层
│  ├──components
│  │  ├──CommodityList.ets           // 商品列表组件
│  │  ├──CounterProduct.ets          // 数量加减组件
│  │  └──EmptyComponent.ets          // 无数据显示组件
│  ├──constants
│  │  ├──BreakpointConstants.ets     // 断点常量类
│  │  ├──GridConstants.ets           // 栅格常量类
│  │  └──StyleConstants.ets          // 样式常量类
│  ├──utils
│  │  ├──BreakpointSystem.ets        // 断点工具类
│  │  ├──CommonDataSource.ets        // 数据封装类
│  │  ├──LocalDataManager.ets        // 数据操作管理类
│  │  ├──Logger.ets.ets              // 日志工具类
│  │  └──Utils.ets                   // 方法工具类
│  └──viewmodel
│     ├──CommodityModel.ets          // 商品数据实体类
│     ├──OrderModel.ets              // 订单数据实体类
│     ├──ProductModel.ets            // 购物车商品数据实体类
│     └──ShopData.ets                // 商品应用数据
├──**features**                          // 功能模块层
│  ├──commoditydetail                // 商品详情内容区
│  │  ├──components
│  │  │  ├──CapsuleGroupButton.ets   // 自定义按钮组件
│  │  │  ├──CommodityDetail.ets      // 商品详情组件
│  │  │  └──SpecificationDialog.ets  // 商品规格弹框
│  │  ├──constants
│  │  │  └──CommodityConstants.ets   // 商品详情区常量类
│  │  └──viewmodel
│  │     ├──CommodityDetailData.ets  // 商品详情数据类
│  │     └──TypeModel.ets            // 实体类
│  ├──**home**                           // 首页内容区
│  │  ├──components
│  │  │  └──Home.ets                 // 首页内容组件
│  │  └──viewmodel
│  │     └──HomeData.ets             // 首页数据
│  ├──**newproduct**                     // 新品内容区
│  │  ├──components
│  │  │  └──NewProduct.ets           // 新品内容组件
│  │  └──viewmodel
│  │     └──NewProductData.ets       // 新品数据
│  ├──**orderdetail**                    // 订单相关内容区
│  │  ├──components
│  │  │  ├──AddressInfo.ets          // 收件人信息组件
│  │  │  ├──CommodityOrderItem.ets   // 商品订单信息组件
│  │  │  ├──CommodityOrderList.ets   // 商品订单列表组件
│  │  │  ├──ConfirmOrder.ets         // 确认订单组件
│  │  │  ├──HeaderBar.ets            // 标题组件
│  │  │  ├──OrderDetailList.ets      // 订单分类列表组件
│  │  │  ├──OrderListContent.ets     // 订单分类列表内容组件
│  │  │  └──PayOrder.ets             // 支付订单组件
│  │  ├──constants
│  │  │  └──OrderDetailConstants.ets // 订单区常量类
│  │  └──viewmodel
│  │     └──OrderData.ets            // 订单数据
│  ├──**personal**                       // 我的内容区
│  │  ├──components
│  │  │  ├──IconButton.ets           // 图片按钮组件
│  │  │  ├──LiveList.ets             // 直播列表组件
│  │  │  └──Personal.ets             // 我的内容组件
│  │  ├──constants
│  │  │  └──PersonalConstants.ets    // 我的常量类
│  │  └──viewmodel
│  │     ├──IconButtonModel.ets      // 按钮图标实体类
│  │     └──PersonalData.ets         // 我的数据
│  └──**shopcart**                       // 购物车内容区
│     ├──components
│     │  └──ShopCart.ets             // 购物车内容组件
│     └──constants
│        └──ShopCartConstants.ets    // 购物车常量类
└──products                          // 产品层
   └──**phone**                          // 支持手机、平板
      ├──constants
      │  └──PageConstants.ets        // 页面常量类
      ├──entryability
      │  └──EntryAbility.ets          // 程序入口类
      ├──pages
      │  ├──CommodityDetailPage.ets  // 订单详情页
      │  ├──ConfirmOrderPage.ets     // 确认订单页
      │  ├──MainPage.ets             // 主页
      │  ├──OrderDetailListPage.ets  // 订单分类列表页
      │  ├──PayOrderPage.ets         // 支付订单页
      │  └──SplashPage.ets           // 启动过渡页
      └──viewmodel
         └──MainPageData.ets         // 主页数据

二. 主模块依赖静态模块

该项目有分了多个模块,其中主模块是phone。其他是公共静态模块,以下讲解主模块怎么依赖公共静态模块

一) 如何找出项目中的主模块(看module.json5的type)

1. 在product->phone->src->main->module.json5中可以看到type为entry。即该模块是项目的主模块 。mainElement字段是模块的入口Ability。

2. 其他模块的type都为har。即表示静态公共包。用于写公共代码,资源等。可被复用。

二) phone模块依赖common示例

phone模块的SplashPage页面调用common模块的BreakpointSystem类
        1. 创建项目

        

                1. 将entry改为phone,并放入product文件夹中。

                2. 创建SplashPage.ets,并把loadContent加载页面改为此页面

        2. 创建公共静态模块common

                  1.     

                    

                          

                2. src->main->ets下新建constans文件夹和utils文件夹并创建BreakpointConstants.ets和BreakpointSystem.ets文件

                3. index.ets声明导出类

                    

                4. 修改oh-package.json5的name为@ohos/common。在phone导入时别名就是@ohos/common。

        3. 主模块依赖公共静态模块

                1. 进入命令行。进入phone模块执行ohpm install ../../common。就会在phone下的oh-package.json5中添加依赖"@ohos/common": "file:../../common"。并且生成oh-moudles文件。

                 

                2. 在需要使用的文件中,先导入,就可以使用了。

                

注意:

        1. 使用ohpm,需要先配置环境变量

        2. 电脑配置的npm环境变量和deveco studio的node.js是同一个路径。我就是因为忘记之前配置的node不一样,所以耽误了一会。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/259801.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库原理及应用·关系数据库

3.1 概念模型的E-R表示法 3.1.1 关系 现实生活中的关系:指人与人之间,人与事物之间,事物与事物之间的相互联系,采用自然语言直接进行描述。 比如张三是李四的老师,王五是赵六的老师,常常表述为张三和李四…

官方指定Jmeter配置JVM堆内存方式

1.概述 在使用Jmeter做性能测试过程中,可能会应为默认设置的堆内存值较小出现堆内存溢出问题,此时解决的方式有两种,分布式测试和调大堆内存。下面介绍官方推荐调整堆内存方法。 2.调整Jmeter堆内存 2.1.介绍官方推荐堆内存调整方法(jmete…

【Proteus仿真】【Arduino单片机】智能垃圾桶设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用报警模块、LCD1602液晶模块、按键模块、人体红外传感器、HCSR04超声波、有害气体传感器、SG90舵机等。 主要功能: 系统运行后&am…

渗透测试和漏洞扫描有什么区别

渗透测试和漏洞扫描是网络安全领域中非常重要的两种技术手段,它们都可以帮助组织或企业发现和修复系统中的漏洞和弱点。然而,这两种技术手段在目的、深度、方法和时间和成本等方面存在显著的区别。 首先我们来了解下渗透测试和漏洞扫描分别是什么&#x…

2023优秀开源项目获选榜名单(开放原子开源基金会)|JeecgBoot 成功入选

JeecgBoot 是一个开源的企业级低代码开发平台,它成功入选2023年度生态开源项目,这是对其十年坚持开源的认可。作为一个开源项目,JeecgBoot 在过去的十年里一直秉承着开放、共享、协作的理念,不断推动着开源社区的发展。 2023年开放…

异步编程Promise

文章目录 前言一、关于 Promise 的理解与使用1.相关知识补充区别实例对象和函数对象同步回调异步回调Js中的错误(error)和错误处理 2.promise是什么 二、Promise 原理三、Promise 封装 Ajax四、async 与 await总结 前言 在项目中,promise的使…

数据可视化---直方图

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…

使用阿里云性能测试工具 JMeter 场景压测 RocketMQ 最佳实践

作者:森元 需求背景 新业务上线前,我们通常需要对系统的不同中间件进行压测,找到当前配置下中间件承受流量的上限,从而确定上游链路的限流规则,保护系统不因突发流量而崩溃。阿里云 PTS 的 JMeter 压测可以支持用户上…

Apache Tomcat httpoxy 安全漏洞 CVE-2016-5388 已亲自复现

Apache Tomcat httpoxy 安全漏洞 CVE-2016-5388 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建漏洞利用修复建议 总结 漏洞名称 漏洞描述 在Apache Tomcat中发现了一个被归类为关键的漏洞,该漏洞在8.5.4(Application Server Soft ware)以下。受影响的是组…

【科技前沿】数字孪生技术改革智慧供热,换热站3D可视化引领未来

换热站作为供热系统不可或缺的一部分,其能源消耗对城市环保至关重要。在双碳目标下,供热企业可通过搭建智慧供热系统,实现供热方式的低碳、高效、智能化,从而减少碳排放和能源浪费。通过应用物联网、大数据等高新技术,…

PaddleOCR Docker 容器快捷调用,快捷调用OCR API

文章目录 搞环境命令行测试Python调用测试转fastapi服务打包成镜像服务快速启动paddleOCR paddleOCR迎来大更新,搞一把新的api接口,直接用起来。 搞环境 搞容器: FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 ENV DEBIAN_FRONTENDno…

亚马逊云科技-如何缩容/减小您的AWS EC2根卷大小-简明教程

一、背景 Amazon EBS提供了块级存储卷以用于 EC2 实例,EBS具备弹性的特点,可以动态的增加容量、更改卷类型以及修改预配置的IOPS值。但是EBS不能动态的减少容量,在实际使用中,用户也许会存在此类场景: 在创建AWS EC2…

CleanMyMac X2024(Mac清理工具) 4.15苹果MAC电脑版

CleanMyMac X中文2024版是一款mac系统清理垃圾软件,CleanMyMac已经完成了向全面清理,优化和管理工具的转变。它的算法和功能变得更加智能,但外观仍然像您预期的那样简单。CleanMyMac X以极其快速和时尚的方式为您提供及时的建议,组…

WEB渗透—PHP反序列化(六)

Web渗透—PHP反序列化 课程学习分享(课程非本人制作,仅提供学习分享) 靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场 课程地址:PHP反序列化漏洞学习_哔哩…

高级算法设计与分析(一) -- 算法引论

系列文章目录 高级算法设计与分析(一) -- 算法引论 高级算法设计与分析(二) -- 递归与分治策略 高级算法设计与分析(三) -- 动态规划 未完待续【 高级算法设计与分析(四) -- 贪…

客服聊天机器人的设计方法

本文会来讨论基于文本的客服聊天机器人的设计方法。 两种客服模式 人工客服 传统的人工客服,完全由人工来提供客服服务,就是客服坐在电脑旁边,同时开n个聊天窗口回复客户。这种方式需要投入很多的人力,效率比较低下。人工客服经…

零售EDI:如何与EDEKA 建立EDI连接?

艾德卡EDEKA 是德国最大的食品零售商,因其采用“指纹付款”的方式进行结算,成为德国超市付款方式改革的先驱。 与EDEKA建立EDI连接,首先需要填写EDEKA提供的调查问卷,其中包括公司信息、EDI负责人信息、EDI供应商信息、销售部门信…

Jmeter实现CSV数据批量导入

CSV:逗号分隔值,是一种简洁且常见的数据存储格式。 1、参数化: 在Jmeter中,可以通过“用户自定义的变量”来实现参数化使操作方便,使用语法位:${参数名},如下图: 而CSV也同理&…

android11-开机自启脚本

1. 编写myshell脚本 diff --git a/device/rockchip/rk356x/ok3568_r/myshell.sh b/device/rockchip/rk356x/ok3568_r/myshell.sh new file mode 100644 index 0000000000..c78b6d93bd --- /dev/nullb/device/rockchip/rk356x/ok3568_r/myshell.sh-0,0 1,4 #!/vendor/bin/shec…

ThinkPad E550c

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:…