当前位置: 首页 > 科技观察

你知道JS中模块导入的缺点吗?

时间:2023-03-13 05:59:07 科技观察

1。命名导入和自动完成假设我写了一个简单的JavaScript模块://stringUtils.jsexportfunctionequalsIgnoreCase(string1,string2){returnstring1.toLowerCase()===string2.toLowerCase();}模块stringUtils有一个导出创建了一个函数exequalsIgnoreCase比较两个忽略大小写的字符串。看起来不错,没关系。现在导入函数exequalsIgnoreCase/app.jsimport{equalsIgnoreCase}from'./stringUtils';equalsIgnoreCase('Hello','hello');//=>true我们大多数人会这样介绍它:首先,你必须写导入名称导入{}。在此步骤中,IDE无法提供有关要导入的可用名称的任何建议。然后,继续写from'./stringUtils',然后将大括号移回并展开自动完成以选择要导入的名称。尽管ES6模块有很多优点,但导入模块语法使得自动完成难以使用。2.Python中的模块现在让我们尝试在Python中导入命名组件。它有同样的问题吗?相同的模块stringUtils和函数equalsIgnoreCase在Python中实现如下:#stringUtils.pydefequalsIgnoreCase(string1,string2):returnstring1.lower()==string2.lower()在Python中,没有必要明确指定要导出的函数。现在,在另一个Python模块应用程序中,将stringUtils导入equalsIgnoreCase函数:在Python中,首先指示从:fromstringUtils导入模块的位置。如果想知道可以导入的功能,小编已经知道模块名称,并给出必要的建议,比较友好。3.变通办法我能找到的在JavaScript中为命名导入启用自动完成的唯一解决方案是调用IDE寻求帮助。例如,在VisualStudioCode中,您可以安装JavaScript(ES6)代码片段插件。启用插件后,使用imd代码段,按tab键,光标先跳转到写模块路径的地方。然后,按下Tab键后,光标跳回花括号内的导入。它是这样工作的:总之,在JavaScript中,import语法强制我们首先指出要导入的项目(函数、类、变量),然后是模块的路径。这种方法不是很友好。相反,在Python中,首先指定模块名称,然后是要导入的组件:fromstringUtilsimportequalsIgnoreCase。使用此语法可以轻松自动完成导入的项目。JavaScript中命名导入的自动完成问题可以通过使用IDE的扩展来缓解,例如ES6代码片段插件,总比没有好。