作者:Dmitri Pavlutin翻译:疯狂的技术宅
原文:https://dmitripavlutin.com/ja...
未经允许严禁转载
1.命名导入和自动完成
假设你编写了一个简单的 JavaScript 模块:
// stringUtils.js
export function equalsIgnoreCase(string1, string2) {
return string1.toLowerCase() === string2.toLowerCase();
}
这是一个模块 stringUtils
。该模块有一个导出为 equalsIgnoreCase
的函数,该函数用来比较 2 个忽略大小写的字符串。
一切看起来都没什么问题。
现在让我们尝试在另一个 JavaScript 模块 app
中,从 stringUtils
模块导入 equalsIgnoreCase
函数:
// app.js
import { equalsIgnoreCase } from './stringUtils';
equalsIgnoreCase('Hello', 'hello'); // => true
你很可能会通过以下方式编写代码:
首先,你必须先写好 import {}
。在此步骤中,IDE 无法提供任何有关要导入的模块名称的建议。
然后,你继续敲下 from './stringUtils'
。然后移回大括号并展开自动完成提示来选择要导入的名称。
尽管 ES2015 的模块优点很多,但 import module 语法使自动完成功能难以使用。
2. Python 是怎么做的
现在,让我们看看在 Python 中导入命名组件是否存在同样的问题。
这是在 Python 中实现的相同模块 stringUtils
和函数 equalsIgnoreCase
的代码:
# stringUtils.py
def equalsIgnoreCase(string1, string2):
return string1.lower() == string2.lower()
在 Python 中,你无需明确指出要导出的函数。
现在,在另一个 Python 模块 app
内,让我们尝试从 stringUtils
中导入函数 equalsIgnoreCase
:
# app.py
from stringUtils import equalsIgnoreCase
equalsIgnoreCase('Hello', 'hello') # => true
你很可能会通过以下方式编写 app
模块:
在 Python 中,首先指出要从中导入的模块:from from stringUtils
。然后再编写要导入的内容 import ...
。
如果你想了解更多可以导入的函数,实际上编辑器早已经知道模块名称并能够提供必要的建议。做的不错!
3. 解决方案
对 JavaScript 中的命名导入启用自动完成功能,我可以找到的唯一解决方案是向 IDE 寻求帮助。
例如,在 Visual Studio Code 中,你可以安装 JavaScript (ES6) code snippets 插件。
启用插件后,通过先敲下 imd
并按 tab
键,光标会首先跳到你编写模块路径的位置。然后再按 tab
键,光标跳回到大括号内的导入位置。运作方式如下:
4. 结论
在 JavaScript 中,import 语法会强制你先指出要导入的项目(函数、类、变量),然后再指明模块的路径。这种方法对自动完成是很不友好的。
相反,在 Python 中首先指定模块名称,然后指定要导入的组件:from stringUtils import equalsIgnoreCase
。使用此语法可以轻松自动完成导入的项目。
通过使用 IDE 的可能性,例如 ES6 code snippet 插件,你可以部分解决 JavaScript 中命名导入自动完成的问题。总比没有好。
本文首发微信公众号:前端先锋
欢迎扫描二维码关注公众号,每天都给你推送新鲜的前端技术文章
欢迎继续阅读本专栏其它高赞文章:
- 深入理解Shadow DOM v1
- 一步步教你用 WebVR 实现虚拟现实游戏
- 13个帮你提高开发效率的现代CSS框架
- 快速上手BootstrapVue
- JavaScript引擎是如何工作的?从调用栈到Promise你需要知道的一切
- WebSocket实战:在 Node 和 React 之间进行实时通信
- 关于 Git 的 20 个面试题
- 深入解析 Node.js 的 console.log
- Node.js 究竟是什么?
- 30分钟用Node.js构建一个API服务器
- Javascript的对象拷贝
- 程序员30岁前月薪达不到30K,该何去何从
- 14个最好的 JavaScript 数据可视化库
- 8 个给前端的顶级 VS Code 扩展插件
- Node.js 多线程完全指南
- 把HTML转成PDF的4个方案及实现
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。