然后我们再来看鸿蒙中的模块如何导入导出。
其实就跟Java中的import是一个意思的。
只不过我们如果想把一个类中的某个方法导入到另一个类中,
那么首先要在这个类中去导出这个方法。
可以看到导出的关键字是export。
然后导入的关键字是import。
然后我们写个例子去看一下,首先我们写一个moduleA.ts文件
可以看到在这个文件中我们提供了一个hello方法,
然后我们使用export暴露出这个hello方法,然后我们又定义了一个 str这个常量
我们同样使用export把这个常量暴露出去,另外我们还定义了一个num常量,
这个常量我们没有暴露。
然后我们再来写一个modelB.ts文件
在这个里面可以看到我们通过input可以导入 hello这个方法,还有str,被暴露出来的这两个,
一个是hello方法,一个是str常量,但是num我们没有暴露,所以在这个地方无法
导入,导入的话就会报错。
当我们导入了以后,我们就可以直接使用了,可以看到上面是使用的效果,
也是可以正常使用的。
另外如果你使用的vs code进行编码的话,你在modelB这个文件中直接输入hello敲回车,它会自动进行导入。
当然前提是在其他的模块文件中有暴露出来的hello这个方法。
可以看到你敲入hello,然后直接点回车,它就自动导入进来了。
自动把导入的这个代码帮你写出来了。
另外在导入的时候还需要避免命名上的冲突。
比如我们在写一个modelC.ts这样一个文件,然后里面同样也写上hello这个方法,
并且把这个方法也暴露出来,同时我们再写一个 str这个常量,并且也使用export暴露出来。
我们实际的把这个模块做出来。
然后如果我们在modelB这个文件中同样去导入modelC中的hello方法,可以看到就报错了。报错内容是有重复的方法名。
那么这个时候我们在导入的时候就可以使用。多种方式来解决命名冲突。
看到一种方式就是通过起别名来解决。
可以看到,只要在导入的时候给hello这个方法去起一个别名就可以正常使用了。
另外还可以直接把整个模块导入进来。
这样的话可以把某个文件直接作为一个对象导入进来,然后使用的时候直接去点来使用就可以了。
当然点的时候只能点出对应的文件中暴露出来的方法。
可以看到上面是我们写的例子。
当然我们也可以直接把导入的对象去打印一下看看,实际上他是一个对象。
可以看到打印的结果是用花括号包裹的,其实就是一个对象。
另外它还支持默认的导入和导出。
首先看默认的导出,在导出方法的时候需要加上default这个关键字。
我这里默认导出。要记住,一个文件当中只能有一个默认导出。
因为在默认导入的时候没有必要关注导入项的名称,
所以对于默认导出来说也可以使用匿名函数,直接不写名字就可以了。
同时在默认导入的时候,对应导入的名字也可以自己随便写,因为无需关注。导入的文件中,他默认导入的名字是什么
因为一个文件中只能有一个默认导入项,所以说无需关注,
那么导入的时候自己就随便起个名字就可以了。
我们用实际的例子去看一下,首先我们在modelA这个文件中默认导出一个hello这个方法。
然后我们在modelB中去默认导入这个moduleA中的方法。
可以看到import h from './moduleA/'
这里的一次就是我随便起的,因为不用关心默认导入他的名字是什么,所以这里不用非要写成hello。
然后调用的时候也直接使用自己起的名字去调用就可以了。
同时上面我们也说了,默认导入实际上是无需关注导入项的名称,所以默认导出也是
支持匿名函数。
可以看到,比如说在modelA中我们写一个匿名函数,然后把这个匿名函数进行默认导出。
然后同样我们在modelB这个文件中也可以正常的进行导入。
不需要关注默认导入它的方法名是什么?
可以看到默认导出,只能最多导出一个。
这个是语法上的规则。