只是想知道我们如何在node.js 8中导入模块-我们仍在使用require
吗?
还是我们仍然需要babel来使用import
?
我一直在挖掘,但似乎没有答案。如果我们仍然必须使用require,为什么节点import
还不能实现?
简短答案
我们仍在使用require
长答案
ESM加载已部分降落在8.5.0
2017年9月发布的node
上。正因为如此,它已经成为规范的一部分,并且已经作为实验功能存在了一段时间:请参阅此处的API文档。注意事项包括需要--experimental- modules
标志和使用.mjs
模块的新扩展。
在ESM加载稳定且功能完善之前,V8中仍需要进行一些更改,因此,按照我的原始答案,require
如果您尚未使用Babel进行其他工作,我仍然建议您坚持使用CommonJS。
看到这篇文章更多的教学解释
这两种实现在幕后完全不同,因此它所具有的不仅仅是眼前一亮的
得出的结论是,有关规范的问题/问题仍然存在(一直到V8),因此import
如果不使用编译器,当前无法在Node中实现。
请参阅以下贡献者的评论(日期为2017年2月):
在当前时间点上,在Node.js甚至开始研究可支持的ES6模块实现之前,ES6和虚拟机方面仍需要解决许多规范和实现问题。工作正在进行中,但将需要一些时间-
我们目前至少需要一年左右的时间。
请记住,编译器只是将ES6模块语法转换为CommonJS模块语法,因此目前没有性能优势。换句话说,如果您还没有Babel管道,那么import
除了主动语法的观点之外,没有太多的动机来创建仅使用新提议的语法的管道。
有关实现方式差异的更多详细信息,请参见本文
问题内容: 我已尝试找到有关最佳使用还是全面的指南。我刚开始使用Python,并且正在尝试着眼于最佳实践。 基本上,我希望有人能分享他们的经验,其他开发人员有什么喜好,以及避免遇到麻烦的最佳方法是什么? 问题答案: 和之间的区别主要是主观的。选择最喜欢的一个,并在使用中保持一致。这里有一些要点可以帮助你做出决定。 优点: - 减少维护你的import报表。无需添加任何其他导入即可开始使用模块中的另
问题内容: 假设我有一个模块和一个子模块。如果要在中使用方法,我是否需要直接导入还是足够导入? 例如,以下引发错误: 和以下作品: 但是我不确定这是否通常是需要的,或者我的代码本身是否有问题。(我认为通常需要直接导入子模块…但是我可能发誓我看到没有直接导入子模块的代码仍然可以正常工作。) 问题答案: 如果要在中使用方法,我是否需要直接导入还是足够导入? 您需要显式导入子模块。执行将自动导入父模块,
问题内容: 我不清楚如何正确命名这个问题。 情况1 假设我具有以下目录结构。 如果我有 我如何知道要导入哪个条(或)?有没有简单的方法可以自动检测到这种情况? 情况二 如果other.py有这一行 我如何知道要导入哪个foo(foo或foo.foo)?再次,这是否是一种简单的方法来自动检测到这种情况? 问题答案: TLDR;如果程序包位于同一目录中,则它们优先于相同名称的模块。 从文档: “当导入
我回到Java并回顾了我的一些旧代码,我看到了很多我已经做过的地方 或者从swing/awt包中实际导入特定类。我不记得是否需要导入java。awt.*在javax中使用任何东西。摇摆。*或者我会导入java。awt.*还有别的原因吗?换句话说,导入java的目的是什么。awt.*?我觉得使用JButton、JFrame等所需的一切都是javax。摇摆。
问题内容: 在我所有的组件中,我目前都包括这样的反应: 我不明白为什么不使用它时每个人都包括React,因此想检查删除它是否安全? 问题答案: JSX需要它才能工作。 基本上,JSX处理器的作用是: 到这个: 有多种方法可以告诉它使用其他函数,例如然后而不是总是导入-这 与 改进 相反 ,您无论如何都不应这样做。
根据这个答案,您可以使用来使用类似这样的相对导入: 为什么相对导入不适用于sklearn。特征提取。文本 我验证了是一个具有以下功能的模块: 编辑 “不工作”,我的意思是它不导入模块。 我正在使用Python 3.4 绝对方式工作: 相对方式不: