Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CreateReactApp:在运行时嵌入最终用户插件_Javascript_Reactjs_Webpack_Create React App - Fatal编程技术网

Javascript CreateReactApp:在运行时嵌入最终用户插件

Javascript CreateReactApp:在运行时嵌入最终用户插件,javascript,reactjs,webpack,create-react-app,Javascript,Reactjs,Webpack,Create React App,我们使用CreateReactApp创建/部署了一个React应用程序 这个应用程序能够显示一些小部件。我们已经使用自己的应用程序部署了预定义类型的小部件。我们希望应用程序的最终用户能够使用Webstorm/VisualStudio等开发工具开发自己类型的小部件,并将其部署到我们的应用程序中 我们的应用程序需要提供一个公共API和一个插件开发库 我们希望插件能够使用我们的应用程序正在使用的库(例如React、materialui…) 我们需要一种方法来“加载”使用我们的公共API注册新小部件类型

我们使用CreateReactApp创建/部署了一个React应用程序

这个应用程序能够显示一些小部件。我们已经使用自己的应用程序部署了预定义类型的小部件。我们希望应用程序的最终用户能够使用Webstorm/VisualStudio等开发工具开发自己类型的小部件,并将其部署到我们的应用程序中

  • 我们的应用程序需要提供一个公共API和一个插件开发库
  • 我们希望插件能够使用我们的应用程序正在使用的库(例如React、materialui…)
  • 我们需要一种方法来“加载”使用我们的公共API注册新小部件类型的最终用户代码
  • 我们可以使用CreateReactApp来完成吗?还是需要弹出


    做这件事的最佳实践是什么?

    我有更多的建议而不是答案,最佳实践可能取决于您当前项目的结构,因此我认为没有正确的答案。我写了一个小的概念证明,如果有帮助的话,可以随意使用:

  • 我们的应用程序需要提供一个公共API和一个插件开发库
  • 要解决这个问题,您可以创建一个文件夹结构,让用户上传他们的组件项目

    您需要一个名称或id来链接此新上载的项目,以便稍后加载

  • 我们希望插件能够使用我们的应用程序正在使用的库(例如React、materialui…)
  • 如果只允许使用您已经拥有的库,那么您不必担心它们的
    package.json

    如果您希望允许用户使用自己的libs,那么在运行时如何处理它会增加一些复杂性

  • 我们需要一种方法来“加载”使用我们的公共API注册新小部件类型的最终用户代码

  • 在这种方法中,您可以使用create-react-app,但您可能需要一个入口点的良好定义(在我的示例项目中,我使用
    Index.js
    作为我将用作项目主要组件的文件),或者某种
    描述符(可能扩展
    package.json
    )因此,您可以阅读应用程序中的内容,以了解如何加载组件。我会使用第一种方法,
    约定优于配置
    更简单,您可以在以后使用描述符进行扩展。

    通过弹出,您可以自定义您想要的任何内容,但您必须自己配置和维护它,我认为基于您的标准,使用CreateReactApp也是一个好主意。我希望这能帮助你

    谢谢大家!!
    MSS-

    他们可以将小部件发布到npm(或私人注册表),应用程序可以使用它。@Marc Polizzi也许你可以提供一些使用场景?理想的工作流程是什么?比如,用户注册了一些小部件。之后会发生什么,对应用程序有什么影响?