假设我创建了一个名为App
的应用。它会安装一个名为package
的npm依赖项。
现在假设package
要求App
具有以下文件结构:
在App/node_modules/package/index.js
内,它需要导入/获取位于App/folder/file.js
的文件。
例如:
import File from "../../folder/file";
这是最好的方法吗?有什么方法可以在导入中引用应用程序的根目录,而不需要使用../../
?
答案 0 :(得分:1)
不。这不是最好的方法。模块不应来自其用户。
改为使用依赖项注入-让您的用户向您传递所需的对象:
package / index.js
let File = null;
function init (fileModule) {
File = fileModule;
}
export init;
// ...
通过这种方式,您可以从主应用程序传递File
对象:
App / index.js
import { init } from 'package';
import File from './folder/file';
init(File);
如何设计API以传递“中间件”取决于您。以上仅是一个建议。您可以将其作为参数传递给构造函数,例如:
const package = new Package(File);
实际上,这就是Express等框架的工作方式。它允许Express在不知道代码结构的情况下进行扩展:
app.use(someMiddleware); // Express never "requires" your middleware
// instead it allows you to pass middleware to itself