gpt4 book ai didi

node.js - 如何创建接受插件的 Node 项目

转载 作者:行者123 更新时间:2023-12-04 10:39:03 27 4
gpt4 key购买 nike

我有一个 react 项目,我们称之为 my-app。我希望其他人能够为我的应用程序创建插件。我有一个 typescript 接口(interface),插件应该导出一个实现它的类。我不知道的是如何编写项目之间的依赖关系。

看来插件项目应该对my-app有依赖,因为它需要导入接口(interface)。但是 my-app 应该依赖于插件,以便它可以调用实现类。这很糟糕,因为它需要从插件手动导入类并在 my-app 的代码中调用插件类的构造函数。它也是一种周期性依赖。

在 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 接口(interface)的一句话

请记住,TypeScript 提供 结构打字 而不是 标称类型 您可能熟悉 Java 和 C# 等静态类型语言。 TypeScript 的结构类型使您可以灵活地在两个模块之间强制执行“类型安全”,而无需引用通用接口(interface)定义。

这是一个很长的路要走,你可以完全在你的应用程序和插件之间没有共享接口(interface)定义。只要您的插件返回一个与您的应用程序期望的接口(interface)结构匹配的对象(或返回一个 TypeScript 可以“推断”以匹配您的应用程序期望的接口(interface)的对象),这就足够了。无需像在 Java 或 C# 中那样“继承”基类或“实现”接口(interface)。阅读有关 TypeScript 类型检查的更多信息:
  • 类型兼容性:https://www.typescriptlang.org/docs/handbook/type-compatibility.html
  • 类型推断:https://www.typescriptlang.org/docs/handbook/type-inference.html
  • 关于node.js - 如何创建接受插件的 Node 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60020591/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com