Node.js 如何创建接受插件的节点项目
我有一个react项目,让我们称之为我的应用程序。我希望其他人能够为我的应用程序创建插件。我有一个typescript接口,插件应该导出一个实现它的类。我不知道的是如何编写项目之间的依赖关系 插件项目似乎应该依赖于我的应用程序,因为它需要导入接口。但是我的应用程序应该依赖于插件,这样它就可以调用实现类。这很糟糕,因为它需要手动从插件导入类,并在我的应用程序代码中调用插件类的构造函数。而且,这是一种周期性依赖Node.js 如何创建接受插件的节点项目,node.js,typescript,Node.js,Typescript,我有一个react项目,让我们称之为我的应用程序。我希望其他人能够为我的应用程序创建插件。我有一个typescript接口,插件应该导出一个实现它的类。我不知道的是如何编写项目之间的依赖关系 插件项目似乎应该依赖于我的应用程序,因为它需要导入接口。但是我的应用程序应该依赖于插件,这样它就可以调用实现类。这很糟糕,因为它需要手动从插件导入类,并在我的应用程序代码中调用插件类的构造函数。而且,这是一种周期性依赖 在package.json中编写依赖项以实现此插件体系结构的正确方法是什么?您对尝试执行
在package.json中编写依赖项以实现此插件体系结构的正确方法是什么?您对尝试执行的操作的描述非常详细。关于周期性依赖性,这个很容易修复。只需在单独的项目(没有依赖项)中发布界面,并在应用程序和插件中引用它。请参阅下面的更多信息 关于如何实例化插件,请记住,无论如何,应用程序必须调用构造函数(或工厂方法)来实例化插件对象。这没问题 下面是一个示例:查看
ExpressJS
库。还有cors
插件。在应用程序中编写它们的方式如下:
import express from "express"
import cors from "cors";
const app = express(); // here's your express app
app.use(cors()); // here you have instantiated the cors plugin and given it to your express app to use.
关于TypeScript接口的一句话 请记住,TypeScript提供的是结构类型,而不是标称类型,您可能会熟悉Java和C等静态类型语言。TypeScript的结构类型为您提供了在两个模块之间强制执行“类型安全”的灵活性,而无需引用公共接口定义 这是一个很长的路要说,你可以完全没有一个共享的接口定义之间的应用程序和你的插件。只要插件返回与应用程序期望的接口结构匹配的对象(或者返回TypeScript可以“推断”与应用程序期望的接口匹配的对象),就足够了。无需像在Java或C中那样“继承”基类或“实现”接口。阅读有关TypeScript类型检查的更多信息:
- 类型兼容性:
- 类型推断:
复合功能获取本地依赖性;或者简单地将interface.ts文件复制到两个项目中(如果在某处进行更改,则必须手动更新所有副本)。