节点需要目录而不是特定的文件
这两个陈述是否相同?
const deviceModule = require('..').device; const deviceModule = require('../device');
我认为需要一个模块(我们没有path)作为参数。 它是如何提供一个目录以及.device是做什么的?
感谢任何能够帮助我更好地理解node.js和javascript的人。
require('..').device
需要父目录的index.js
,然后从该文件中获取device
。
所以,如果你有以下结构:
- index.js - /foo - - bar.js
用index.js
有以下几点:
module.exports = { device: "baz" };
然后在bar.js
require("..").device
会给你"baz"
。
以下是加载目录的规范:
LOAD_AS_DIRECTORY(X) 1. If X/package.json is a file, a. Parse X/package.json, and look for "main" field. b. let M = X + (json main field) c. LOAD_AS_FILE(M) 2. If X/index.js is a file, load X/index.js as JavaScript text. STOP 3. If X/index.json is a file, parse X/index.json to a JavaScript object. STOP 4. If X/index.node is a file, load X/index.node as binary addon. STOP
所以在你的例子中,它会:
- 查找
package.json
并获取main
属性,然后加载它(如果存在) - 如果第1步不存在,它将加载
index.js
如果存在) - 如果第2步不存在,它将加载
index.json
如果存在) - 如果第4步不存在,它将加载
index.node
如果存在)
您可以使用模块require-file-directory。
1-帮助要求只有名字的所有文件。 不需要给文件的绝对path。
2-一次有多个文件。