今天不写页面和动画,斗胆给大家讲一讲软件工程。

软件工程讲究高内聚低耦合,意思就是把整个工程按照分工不同分成不同的模块,每一个模块紧密联系又互不影响。就像一座摩天大楼,它里面的电路网非常庞大和复杂,它们每一层楼每一个房间都能独立运行且互不影响,所有的房间电路都通过一个总开关控制。

软件工程亦是如此,让每一个模块职责明确,易于管理,可以提高代码的可维护性、可扩展性。

那么在鸿蒙中怎么实现模块化的开发,今天幽蓝君跟大家分享一下。

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中的模块化开发的更多相关文章

  1. Javascript模块化开发,使用模块化脚本加载工具RequireJS,提高你代码的速度和质量。

    随着前端JavaScript代码越来越重,如何组织JavaScript代码变得非常重要,好的组织方式,可以让别人和自己很好的理解代码,也便于维护和测试.模块化是一种非常好的代码组织方式,本文试着对Ja ...

  2. 在Html中使用Requirejs进行模块化开发

    在前端模块化的时候,不仅仅是js需要进行模块化管理,html有时候也需要模块化管理.这里就介绍下如何通过requirejs,实现html代码的模块化开发. 如何使用requirejs加载html Re ...

  3. 初学seaJs模块化开发,利用grunt打包,减少http请求

    原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —di ...

  4. JS模块化开发:使用SeaJs高效构建页面

    一.扯淡部分 很久很久以前,也就是刚开始接触前端的那会儿,脑袋里压根没有什么架构.重构.性能这些概念,天真地以为前端===好看的页面,甚至把js都划分到除了用来写一些美美的特效别无它用的阴暗角落里,就 ...

  5. iOS关于模块化开发解决方案(纯干货)

    关于iOS模块化开发解决方案网上也有一些介绍,但真正落实在在具体的实例却很少看到,计划编写系统文章来介绍关于我对模块化解决方案的理解,里面会有包含到一些关于解耦.路由.封装.私有Pod管理等内容:并编 ...

  6. Angular 结合RequireJs实现模块化开发

    angular的指令是模块化很好的一个体现,下面我将只使用指令(不用控制器),结合requirejs,实现模块化开发. 模块化关系图:

  7. .NET/ASP.NET MVC(模块化开发AraeRegistration)

    阅读目录: 1.开篇介绍 2.AreaRegistration注册路由(传递路由上下文进行模块化注册) 1]开篇介绍 ASP.NET Routing 路由功能非常强大,设计的也很巧妙:如果说ASP.N ...

  8. Mvc 模块化开发

    在Mvc中,标准的模块化开发方式是使用Areas,每一个Area都可以注册自己的路由,使用自己的控件器与视图.但是在具体使用上它有如下两个限制 1.必须把视图文件放到主项目的Areas文件夹下才能生效 ...

  9. 模块化开发--sea.js

    当你的网站开发越来越复杂的时候,会经常遇到一下问题吗?1.冲突2.性能3.依赖如果在多人开发或者是复杂的开发过程中会经常遇到这些问 题,就可以用模块化开发来解决.以上问题是如何产生的?1.冲突:如果你 ...

  10. 详解JavaScript模块化开发

    什么是模块化开发? 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了,jQuery,Ajax,Node.Js,MVC,MVVM等 ...

随机推荐

  1. 牛客题解 | 单组_spj判断数组之和

    题目 题目链接 解题思路 后台有spj代码,能对同学们的输出数据进行校验,符合条件即可通过. 附赠 spj 代码 #include <iostream> #include <fstr ...

  2. 自助式BI:灵活应变的商业智能

    在这个信息爆炸的时代,商业智能(BI)已经成为企业决策的必备工具.无论是哪个行业,哪个规模的企业,似乎都无法忽视这一强大工具的存在.然而,传统的BI模式往往存在着一些限制,使得企业无法灵活地应对各种业 ...

  3. [BZOJ2741][FOTILE模拟赛] L 题解

    相当好的题目,虽然和我前几天出的题重了qwq. \(lmx\) 是我们的红太阳,没有他我们就会死!!! 暴力枚举一个端点,然后用可持久化 \(01\ Trie\) 或者离线 \(Trie\)(当然这题 ...

  4. KUKA库卡机器人保养维修

    KUKA机器人由机械手和控制柜组成,每日机器人保养包括:控制箱.教导盒.手腕之表面擦拭,还有噴槍之清洁. KUKA机器人控制柜保养1)断掉控制柜的所有供电电源.2)检查主机板.存储板.计算板.以及驱动 ...

  5. Linux服务器快速卸载安装node环境(简单上手)

    这篇文章主要介绍了Linux服务器快速卸载安装node环境(简单上手) 1.先卸载npm sudo npm uninstall npm -g 2.卸载node yum remove nodejs np ...

  6. Windows下快捷方式 (*.lnk) 的使用技巧整理

    日常应用中,许多软件都会在安装过程最后一步添加多个命令,针对其应用创建快捷方式发送到桌面以及快速启动栏和开始菜单,供人们快速找到并打开.在我的使用习惯中也会将诸多常用的应用右键-发送到-桌面快捷方式来 ...

  7. ABC391E题解

    大概评级:绿. 题目传送门. 显然动态规划,设 \(f_{i,k}\) 表示经过 \(i\) 次变换后能将 \(a_k\) 取反的最大值,显然答案为 \(f_{n,1}\),状态转移很简单,枚举 \( ...

  8. AI回答:一个简洁的php中间件类

    <?php class MiddlewareStack { private $middlewares = []; private $request; private $response; /** ...

  9. redmine 127访问成功,其他机器不能访问

    添加防火墙 入站规则

  10. libvirt和qga的区别?

    本文分享自天翼云开发者社区<libvirt和qga的区别?>,作者:乐道 Libvirt是一个开源项目,提供了一组API.工具.库,用于管理和控制虚拟化平台. 在Openstack环境中, ...