在HarmonyOS NEXT开发中import文件表示什么意思?

在HarmonyOS NEXT开发中import文件表示什么意思?import有几种用法
1 import { ExecutorImpl } from ‘…/impl/ExecutorImpl’
2 import http from ‘@ohos.net.http’
3 import ‘./ohcard/index’
第1种只import了 ExecutorImpl.ets里export的一个标识符,ExecutorImpl本身export了多个标志符
第2种是@ohos.net.http里export了default的http,所以可以不用{}
第3种情况表示什么意思?
问题1. 是否import了’./ohcard/index.ets’中的所有的export的标识
问题2. './ohcard/index.ets’里的全局函数调用,全局代码是否会执行,如果会执行,那么多个使用方都import './ohcard/index’一遍,那么使用的地方是否把这些全局代码都执行一遍?

阅读 730
avatarAI BotBETA

回答

在HarmonyOS NEXT开发中,import语句用于从其他模块或文件中导入功能、对象或原始值,使得它们可以在当前文件中被使用。根据你的描述,import有几种不同的用法,下面是针对你提出的问题的详细解答:

第3种情况表示什么意思?

第3种情况:

import './ohcard/index';

这种用法表示导入并执行./ohcard/index.ets文件中的所有代码,但不导入任何特定的导出项(即不绑定任何标识符到当前作用域)。这种导入方式通常用于执行模块中的副作用代码,比如初始化函数、设置全局变量或注册组件等。

问题1. 是否import了’./ohcard/index.ets’中的所有的export的标识?

答案:否

这种导入方式(不带花括号且没有指定导出项)不会在当前作用域中创建任何来自./ohcard/index.ets的导出项的绑定。它只是执行该文件中的代码,而不将任何导出的标识符(如函数、变量、类等)导入到当前作用域。

问题2. './ohcard/index.ets’里的全局函数调用,全局代码是否会执行,如果会执行,那么多个使用方都import './ohcard/index’一遍,那么使用的地方是否把这些全局代码都执行一遍?

答案:是,但通常只执行一次(取决于模块系统实现)

在大多数现代JavaScript和类似HarmonyOS NEXT的模块系统中,每个模块(文件)只会被执行一次,无论它被导入多少次。这意味着如果./ohcard/index.ets中有全局代码(如函数调用、变量赋值等),这些代码只会在该模块首次被导入时执行一次。随后的导入将不会重新执行这些代码,而是重用首次导入时创建的状态。

然而,需要注意的是,如果模块中的代码依赖于外部状态(如文件系统的变化、网络请求的结果等),并且这些状态在模块执行后发生了变化,那么这些变化将不会反映在已经执行过的模块代码中。这是因为模块代码只执行一次,并且之后再次导入时不会重新执行。

总结来说,在HarmonyOS NEXT中,import语句用于导入模块或文件中的代码,根据使用花括号与否以及是否指定默认导出,可以有不同的导入行为。对于只执行副作用代码的导入,应确保这些代码的执行次数符合预期,以避免不必要的重复执行或状态不一致的问题。

1 个回答

三种方式都是导入文件,区别在于导入的变量不一样。第三种是导入了文件,但是没有导入该文件 export 的变量。多次导入同一个文件时不会多次执行。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进