我只是注意到了一些事情,想了解为什么节点会以这种方式表现。
我有2个文件,如下所示:
src/api/index-api.ts
src/worker/index-worker.ts
他们都有一个简单的 console.log('Started xxx')
我注意到的是,当我跑node build/api/index-api.js
-我看到这两个Started API
和Started Worker
在控制台中。
我发现其中src/api/index-api.ts
有一条import
语句使用以下函数src/api/index-worker.ts
:
import { getContentFunction } from '../worker';
因此,我可以了解为什么他们都被称为。
但是,这的实际作用到底是什么?我的意思是确切发生了什么,为什么会这样呢?据我所知,我只是在导入特定的功能。
谢谢。
我假设您的console.log
呼叫位于src/worker/index-worker.ts
文件的根目录。
导入函数时,也会运行目标文件的全局命名空间中的任何声明,因为每个示例也可以实例化变量。导入单个函数并不能防止这种情况,仅意味着您只想保留对指定函数的引用,而不是对所有函数的引用。它还允许您将上述函数导入到全局名称空间中,而不必像worker.getContentFunction
每个示例那样。
TL; DR:您的工作程序文件仍然完全运行,您的导入仅决定您保留哪些引用。
关于CommonJS的注意事项:module.exports = {...}
文件末尾的语句设置文件导出的内容,该文件的运行方式与其中的任何其他代码相同。如果导入的文件不能完全运行,那么这样的声明本身肯定是没有用的。解释器必须知道文件中的内容,以便它可以执行您要求的操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句