在ArkTS中,默认情况下一个ets文件中的顶层声明,包括常量、变量、函数、类、接口等,在其他文件中是不可见的。如果需要在模块外可见,则需要明确使用export导出。同时,使用时需要通过import导入所导出的模块中的变量、函数、类等。两个模块之间的关系是通过在文件级别上使用import和export建立的。

默认导出和导入

默认导出:指定一个模块,只能默认导出的 一个值或对象。使用时,可以 自定义 导入名称。

使用步骤:

  1. 当前模块中 导出模块

  2. 需要使用的地方 导入模块

  • 文件可以通过export default方式声明默认导出,演示代码如下:
//文件:File1.ets
export default function helloWorld() {
  console.log("您好,世界!")
}
  • 在另一个文件中,可以通过import导入模块,演示代码如下:
//文件File2.ets
import helloWorld from "./File1" //从文件文件File1.ets中导入模块
helloWorld(); //调用函数
/*注意使用的是相对路径,即:
    /:进入目录 
    ./:当前目录
    ../:上一级目录
*/

按需导入和导出

按需导出:指一个模块,按照需求,导出多个特性

  • 除了默认导出之外,可以通过export导出多个变量和函数等,演示代码如下:
//文件:maths.ets
export let pi = 3.14
export let e = 2718
export class RandomNumber {
  //省略类实现代码
}
export function abs(num: number) {
  console.log("" + num)
}
  • 对于文件maths.ets中的导出,可以在别的文件中通过使用import导入,演示代码如下:
//文件:app2.ets
import { pi, e, abs } from "./maths"

console.log("" + pi)
console.log("" + e)
abs(-100 * e)
  • 导入时,使用import {old as new}可以为已有的标识符重命名,演示代码如下:
// 文件: app3.ets
import { pi as π } from "./maths";   //以π作为pi的新名
console.log( π );
  • 导入时,使用* as name可以把所有导出的对象放入一个命名空间下,演示代码如下:
// 文件: app4.ets
import * as math from "./maths"       // 放到命名空间math下
console.log( math.pi )                      // 通过命名空间访问pi
const a = math.abs( math.e )          // 通过命名空间访问e

默认导出与按需导出的区别

  1. export为按需导出,export default为默认导出。
  2. 在一个文件或模块中,export、import可以有多个,export default只能有一个,即默认导出只能有一个。
  3. 通过export方式导出,在导入时需要加花括号{ },使用export default导出的,在导入时则不需要加花括号{ }。

演示代码如下:

//文件:file7.ets
export const s1 = "something"
export function log( s ) {
   return s;
}
const   s2= "something"
export default  s2                   // 注意export default导出只能有一个
// 另外一个文件
import { s1, log } from './file7     // 注意带花括号,也可以分开导入两次
import s2 from './fils7';              // 导入时不带花括号

export default s2           // export default导出只能有一个,这里再次导出s2
  • 另外,使用export default为模块指定默认输出,可以不需要知道所要加载模块的标识符名称。演示代码如下:
//文件:file7.ets
let s = "something"
export default s
//这里相当于为s变量值"something"起了一个系统默认的变量名default
//default只能有一个值,所以一个文件内不能有多个export default
//文件:file8.ets
import any1 from "./file7"
import any2 from "./file7"
// 本质上,teste.ets文件的export default输出一个叫做default的变量,
// 系统允许为它取任意名字,且不需要用花括号包含
console.log( any1 )    // 输出something
console.log( any2 )    // 输出something

在鸿蒙应用开发过程中,往往需要使用鸿蒙SDK提供的各种能力,这时就需要导入相应的接口模块。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐