我对如何在我的节点项目中导入模块感到有些困惑。我看到有两种方法可行,但正确的方法是什么;或者有任何区别吗? 我指的是我导入的模块至少是一个目录的情况。
#p>方式#1:List<Object[]> result = (List<Object[]>) query.list();
for(Object[] current : result ){
Integer userId = (String)current[0];
Float rating = (Float) current[1];
.....
}
方式#2:
const myModule = require('../myModule');
另外,我看到一些导入是使用文件扩展名完成的,而其他导入则不是。什么是正确的方法?
const myModule = require('./../myModule');
或
const myModule = require('./myModule');
非常感谢任何反馈。
答案 0 :(得分:2)
结果没有区别,两者都有效。第二个是不必要的冗长(这在很大程度上是无害的,但我不会使用./../myModule.js
)。 modules documentation说:
前缀为
'/'
的必需模块是文件的绝对路径。例如,require('/home/marco/foo.js')
会将文件加载到/home/marco/foo.js
。前缀为
'./'
的必需模块与调用require()
的文件相关。也就是说,circle.js
必须与foo.js
require('./circle')
位于同一目录中才能找到它。如果没有前导
'/'
,'./'
或'../'
来指示文件,模块必须是核心模块或从node_modules文件夹加载。
重新编辑:
另外,我看到一些导入是使用文件扩展名完成的,而其他导入则不是。什么是正确的方法?
同样的文档在前面引用的上面解决了这个问题:
如果找不到确切的文件名,Node.js将尝试使用添加的扩展程序加载所需的文件名:
.js
,.json
,最后.node
。
.js
个文件被解释为JavaScript文本文件,.json
个文件被解析为JSON文本文件。.node
个文件被解释为使用dlopen加载的已编译的插件模块。