ES6:自导入与订购导出以供参考



我有一个包含utils方法的文件。每个都会单独导出。我的处境是一个实用程序需要另一个。我目前定义了在使用之前使用的函数。但是我遇到了ES6的循环依赖关系,使用它就不需要仔细组织util函数了。我有什么理由不使用它吗?

简化,例如:目前:

export const safeParsing = (str) =>  { 
try { return JSON.parse(str); }
catch (e) { return {}; }
};
export const parseToken = (t) => safeParsing(t); 

使用循环dep:

import * as self from 'src/jsUtils';
export const parseToken = (t) => self.safeParsing(t);
export const safeParsing = (str) => {...}

编辑:使用循环导入还使我能够使用spyOn(Jest(内部函数。例如:

test('parseToken uses safe parsing', () => { ... spyOn safeParsing ... });

相关参考文献:

ES6模块:导出单一类别的静态方法或多个单独的方法

https://stackoverflow.com/a/40242291/958598

https://stackoverflow.com/a/35225936/958598

https://stackoverflow.com/a/55193363/958598

如果使用function safeParsing() { ... }将它们定义为普通函数,而不是将它们分配给常量变量,则排序不再重要,因为所有函数定义都被提升到作用域的顶部。因此,您可以按任何顺序使用所有函数。如果执行const safeParsing = ...,则必须非常小心地对声明进行排序,因为只有在指定声明之后才能使用声明。这就是我使用正则命名函数声明而不是函数表达式(如您所示(的原因之一。

而且,你仍然可以做export function safeParsing() {...}。只需使定义成为函数声明,而不是函数表达式。

相关内容

  • 没有找到相关文章

最新更新