关于HarmonyOS NEXT中的模块化开发
今天不写页面和动画,斗胆给大家讲一讲软件工程。
软件工程讲究高内聚低耦合,意思就是把整个工程按照分工不同分成不同的模块,每一个模块紧密联系又互不影响。就像一座摩天大楼,它里面的电路网非常庞大和复杂,它们每一层楼每一个房间都能独立运行且互不影响,所有的房间电路都通过一个总开关控制。
软件工程亦是如此,让每一个模块职责明确,易于管理,可以提高代码的可维护性、可扩展性。
那么在鸿蒙中怎么实现模块化的开发,今天幽蓝君跟大家分享一下。
DevEco创建的项目一开始是没有进行模块化的,我们通常会在entry目录下的pages中进行项目的开发。

如果这个工程比较庞大,我们就可以尝试使用模块化的开发,比如把项目的首页、个人中心等模块各自分开。

现在尝试在工程目录下新建一个features文件夹,然后在features文件夹右键,新建Module,这里给了四个选项,第一个选项会创建一个可以独立编译的项目,这通常用于一个项目的不同版本,我们今天要选择的是最后一个Static Library,命名注意要小写,完成之后可以看到模块目录下有一些资源和配置文件。

这样我们就把工程中不同的模块分离开来,功能明确,互不打扰,打包的时候这些模块也会被单独打包为本地依赖库,非常完美。
那么,外部怎么引入这些模块呢。
首先注意每一个模块根目录下的Index文件,需要被外界引用的页面要先在这里导出。

导出之后,这些组件还是不能被外部直接引用的。要先在oh-package.json5中添加依赖,举个例子:
"dependencies": {
'home': 'file:../features/home'
}
这个写法非常有讲究,前面是名字,这个名字要和组件目录中oh-package.json5文件里的name一致,后面是以file开头的组件目录,然后就可以在页面中进行引用了。
import {MainPage} from 'home/Index'
以上就是鸿蒙模块化开发的基本配置,感谢您的阅读。
关于HarmonyOS NEXT中的模块化开发的更多相关文章
- Javascript模块化开发,使用模块化脚本加载工具RequireJS,提高你代码的速度和质量。
随着前端JavaScript代码越来越重,如何组织JavaScript代码变得非常重要,好的组织方式,可以让别人和自己很好的理解代码,也便于维护和测试.模块化是一种非常好的代码组织方式,本文试着对Ja ...
- 在Html中使用Requirejs进行模块化开发
在前端模块化的时候,不仅仅是js需要进行模块化管理,html有时候也需要模块化管理.这里就介绍下如何通过requirejs,实现html代码的模块化开发. 如何使用requirejs加载html Re ...
- 初学seaJs模块化开发,利用grunt打包,减少http请求
原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —di ...
- JS模块化开发:使用SeaJs高效构建页面
一.扯淡部分 很久很久以前,也就是刚开始接触前端的那会儿,脑袋里压根没有什么架构.重构.性能这些概念,天真地以为前端===好看的页面,甚至把js都划分到除了用来写一些美美的特效别无它用的阴暗角落里,就 ...
- iOS关于模块化开发解决方案(纯干货)
关于iOS模块化开发解决方案网上也有一些介绍,但真正落实在在具体的实例却很少看到,计划编写系统文章来介绍关于我对模块化解决方案的理解,里面会有包含到一些关于解耦.路由.封装.私有Pod管理等内容:并编 ...
- Angular 结合RequireJs实现模块化开发
angular的指令是模块化很好的一个体现,下面我将只使用指令(不用控制器),结合requirejs,实现模块化开发. 模块化关系图:
- .NET/ASP.NET MVC(模块化开发AraeRegistration)
阅读目录: 1.开篇介绍 2.AreaRegistration注册路由(传递路由上下文进行模块化注册) 1]开篇介绍 ASP.NET Routing 路由功能非常强大,设计的也很巧妙:如果说ASP.N ...
- Mvc 模块化开发
在Mvc中,标准的模块化开发方式是使用Areas,每一个Area都可以注册自己的路由,使用自己的控件器与视图.但是在具体使用上它有如下两个限制 1.必须把视图文件放到主项目的Areas文件夹下才能生效 ...
- 模块化开发--sea.js
当你的网站开发越来越复杂的时候,会经常遇到一下问题吗?1.冲突2.性能3.依赖如果在多人开发或者是复杂的开发过程中会经常遇到这些问 题,就可以用模块化开发来解决.以上问题是如何产生的?1.冲突:如果你 ...
- 详解JavaScript模块化开发
什么是模块化开发? 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了,jQuery,Ajax,Node.Js,MVC,MVVM等 ...
随机推荐
- 用 just 简化项目命令管理
在软件开发过程中,高效管理项目命令是提升开发效率的关键, 它们可以帮助我们自动化重复的任务,简化项目管理流程,提高效率. 今天,我们来介绍一个名为 just 的任务运行器. 它由 Casey 发起,用 ...
- DevExpress WPF 在RibbonControl的Header中添加搜索框
主要代码: <dxb:BarEditItem Name="txtSearch" EditHorizontalAlignment="Center"> ...
- C# USB 摄像头 OpenCV 视频picBox呈现,抓拍图像保存呈现。没有注释版本。
1.winform 应用程序,两个picturebox空间,一个用于视频呈现,一个用于抓拍呈现. 2.引用包OpenCvSharp4.OpenCvSharp4.Extensions.OpenCvSha ...
- C#短链接生成方法
public class Program { static void Main() { Random rd = new Random(); for (int i = 0; i < 10; i++ ...
- .NET 9.0 全栈技术的高效开源低代码平台(Vue3+Element-Plus)
前言 推荐一款基于.NET 9.0 全栈框架的新一代技术架构(Vue3+Element-Plus),开源低代码平台-Microi吾码. 平台不仅无限制地支持用户数.表单数.数据量及数据库数量,还通过跨 ...
- SpringSecurity5(1-快速入门)
依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spri ...
- Pwnable_orw
题源 题解 保护 只开启了栈保护 分析 进入ida分析 main函数如下 seccomp (Secure Computing Mode)是一种 Linux 内核安全机制,它可以 限制进程可执行的系统调 ...
- CORS 跨域请求一种解决方案
平常工作难遇到这类问题, 一般搭建新系统或搭建系统二时需要复用系统一一些前后端能力, 可能会遇到跨域拦截问题. 这里提供一种基于服务器解决方案. 更多其他方案, 详细细节可自行查阅更多资料, 写一些前 ...
- Kubernetes v1.16.3版本开启 Job ttlSecondsAfterFinished 自动清理机制
前言 Kubernetes v1.23 之前,Job 在处于 Completed 后,默认是不会被清理的. 完成的 Job 通常不需要留存在系统中.在系统中一直保留它们会给 API 服务器带来额外的压 ...
- go cobra实例讲解
概述 cobra 库是 golang 的一个开源第三方库,能够快速便捷的建立命令行应用程序. 优势:cobra 可以快速建立CLI程序,使我们更专注于命令需要处理的具体的业务逻辑. 举两个例子: hu ...