源码 https://github.com/webabcd/HarmonyDemo
作者 webabcd
开天辟地 HarmonyOS(鸿蒙) - ArkTS 类: 模块
示例如下:
pages\arkts\module\Main.ets
import { TitleBar, MyLog } from '../../TitleBar';// 从指定的模块中导入指定的被 export 的变量或函数或对象
import { name, hello } from './a';
// 从指定的模块中导入指定的被 export 的变量或函数或对象
import { name_b, hello_b } from './b';
// 从指定的模块中导入指定的被 export 的变量或函数或对象(并重命名)
import { name as name_c, hello as hello_c } from './c';
// 从指定的模块中导入指定的被 export 的变量或函数或对象(并重命名)
import { name as name_d, hello as hello_d } from './d';
// 从指定的模块中导入被 export default 的变量或函数或对象,并为其命名
// 注:对于 export default 导出的对象,在 import 的时候不需要加 {}
import class_e from './e';
// 从指定的模块中导入被 export default 的变量或函数或对象,并为其命名
// 注:对于 export default 导出的对象,在 import 的时候不需要加 {}
import obj_f from './f';
// 从指定的模块中导入指定的被 export 的变量或函数或对象
import { name as name_g, hello as hello_g } from './g';
// 从指定的模块中导入被 export 的全部内容
import * as obj_h from './h';
// 将 './i' 文件导入并编译
import './i';// j 中 myClass 对象的 name 属性的值为 i am j
// k 导入了 j 中的 myClass 对象,并将其 name 属性的值修改为 i am k
// l 导入了 j 中的 myClass 对象,并将其 name 属性的值修改为 i am l
// 这里导入 j, k, l 并分别输出 myClass 对象的 name 属性的值,结果都是 i am l
// 所以,当一个变量被多个其他文件导入时,实际上引用的是同一个变量,也就是说,它们共享同一个内存中的实例,而不是为每个导入创建新的副本
import { myClass as j } from './j';
import { myClass as k } from './k';
import { myClass as l } from './l';@Entry
@Component
struct MainDemo {build() {Column() {TitleBar()Text("代码示例结合 HiLog 日志一起看")}}
}// 下面这句会编译时报错,因为 import 进来的变量是只读的,无法修改其本身(注:如果导入的是一个对象的话,可以修改对象的属性)
// name = 'xxx';MyLog.d(`a: ${name} ${hello()}`);
MyLog.d(`b: ${name_b} ${hello_b()}`);
MyLog.d(`c: ${name_c} ${hello_c()}`);
MyLog.d(`d: ${name_d} ${hello_d()}`);
MyLog.d(`e: ${new class_e("name").name} ${new class_e("name").hello()}`);
MyLog.d(`f: ${obj_f.name} ${obj_f.hello()}`);
MyLog.d(`g: ${name_g} ${hello_g()}`);
MyLog.d(`h: ${obj_h.name} ${obj_h.hello()}`);MyLog.d(`j: ${j.name}`);
MyLog.d(`k: ${k.name}`);
MyLog.d(`l: ${l.name}`);
pages\arkts\module\a.ets
let name = "name";
let hello = () => {return "hello";
};// 导出指定的变量或函数或对象
export { name, hello }
pages\arkts\module\b.ets
let name = "name";
let hello = () => {return "hello";
};// 导出指定的变量或函数或对象(并重命名)
export { name as name_b, hello as hello_b};
pages\arkts\module\c.ets
// 导出指定的变量或函数或对象
export let name = "name", hello = ()=> { return "hello"; };
pages\arkts\module\d.ets
// 导出指定的变量或函数或对象
// 一个模块中可以有多个 export
export let name = "name";
export let hello = ()=> { return "hello"; };
pages\arkts\module\e.ets
// 导出 default 变量或函数或对象
// 一个模块中只能有一个 export default
export default class MyClass{public name: string;constructor(name: string) {this.name = name;}hello() {return "hello";}
}
pages\arkts\module\f.ets
class MyClass{public name: string;constructor(name: string) {this.name = name;}hello() {return "hello";}
}let obj = new MyClass("name");// 导出 default 变量或函数或对象
// 一个模块中只能有一个 export default
export default obj;
pages\arkts\module\g.ets
// 从指定的模块中导出全部内容
export * from './a';
pages\arkts\module\h.ets
let name = "name";
let hello = () => {return "hello";
};// 导出指定的变量或函数或对象
export { name, hello }
pages\arkts\module\i.ets
import { MyLog } from '../../TitleBar';let myName = "i am webabcd";
MyLog.d(myName);
pages\arkts\module\j.ets
export class MyClass {name: string;constructor(name: string) {this.name = name;}
}
export let myClass = new MyClass("i am j");
pages\arkts\module\k.ets
import { myClass, MyClass } from './j';
myClass.name = 'i am k'
// 下面这句会编译时报错,因为 import 进来的变量是只读的,无法修改其本身
// myClass = new MyClass("xxx")export { myClass }
pages\arkts\module\l.ets
import { myClass, MyClass } from './j';
myClass.name = 'i am l'
// 下面这句会编译时报错,因为 import 进来的变量是只读的,无法修改其本身
// myClass = new MyClass("xxx")export { myClass }
源码 https://github.com/webabcd/HarmonyDemo
作者 webabcd