我正在学习node.js
例如,我尝试
var server = require("./myserver.js");
和
var server = require("./myserver");
为什么两者都有效?这种东西叫什么?
如果查看require
-函数的节点源代码,可以看到require
的load
-函数调用函数findLongestRegisteredExtension
来确定文件扩展名。如果无法确定扩展,此函数将返回.js
作为其默认值:
function findLongestRegisteredExtension(filename) {
const name = path.basename(filename);
let currentExtension;
let index;
let startIndex = 0;
while ((index = name.indexOf('.', startIndex)) !== -1) {
startIndex = index + 1;
if (index === 0) continue; // Skip dotfiles like .gitignore
currentExtension = name.slice(index);
if (Module._extensions[currentExtension]) return currentExtension;
}
return '.js';
}
这就是为什么同时使用require("./myserver.js");
或require("./myserver");
将解析相同的模块。