鸿蒙NEXT开发【默认开启模块化编译模式】优化构建

应用模块化编译是指基于ESModule的Bundleless编译模式,使用原生ES Module规则构建源码。API 10及以上版本的Stage工程默认开启模块化编译,可有效缩短增量编译时间、减小编译后的包体积。

当前已知模块化编译如果存在re-export语法、引用了没有对应声明文件 (.d.ts) 的 native 文件 (.so)、使用export * from 'x.js’导出js文件中的符号等情况将导致工程报错

说明

FA 模板创建的工程依然使用基于bundle打包的构建方式。

模块化编译解决了Bundle编译打包模式引入的如下问题:

  • 同一个模块多次引用导致的重复打包及运行时加载,运行状态无法共享,单例模式运行异常;
  • 修改单个模块文件,需要完整重新编译打包,耗时过长;
  • 全局变量污染问题。

模块化编译模式有以下价值:

  • 修改单个模块代码无需整包编译构建,增量编译构建时间极大减少;
  • 基于ESModule规则,模块缓存利用率高,模块内变量变化能够及时反映到模块本身,动态实时绑定;
  • 解决了单例问题;
  • 减少了包的ROM size;
  • 解决了变量污染等问题,各模块基于接口进行开发,提升开发效率。

使用规格约束

  • 支持工程内hap引用同工程下其他hap代码,但不推荐使用此引用方式,建议使用har包方式组织公共代码并引用;
  • 支持工程内hap通过配置文件(oh-package.json5)使用ohpm包管理的方式引用同工程下其他hap代码,不推荐使用此引用方式,建议使用har包方式组织公共代码并引用;
  • 不支持引用工程外的代码以及工程内任意创建目录下的代码,否则工程编译报错;
  • 推荐使用hap通过har(static library)的方式引用公共代码;
  • 推荐使用hap通过hsp(shared library)的方式引用共享库,共享状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值