gpt4 book ai didi

dependency-injection - 在浏览器之外使用 Angular2

转载 作者:行者123 更新时间:2023-12-03 12:22:37 25 4
gpt4 key购买 nike

我希望构建一个 Angular2 应用程序,它可以以两种不同的方式运行——在 Electron 中或通过 CLI。

基本上,应用程序的底层组件是一组服务。在应用程序的 Electron 版本中,这些服务将通过一组交互式组件公开,但是,对于 CLI 版本,它们将可以使用 node.js 访问。

目前,我处于研究/PoC 阶段 - 试图确认这是可能的,并且出现了 2 个问题:

  • Angular 是否支持任何其他平台?似乎引导方法仅适用于浏览器。
  • Angular2 似乎不支持在服务中注入(inject)服务,除非它们都在组件/应用程序级别定义(即服务没有注入(inject)器)。我并不热衷于在应用程序级别为我的所有服务添加所有依赖项 - 实际上这不会起作用,因为我需要非单例。有没有人为此开发了解决方法?

  • 也许 Angular2 不适合这个。

    最佳答案

  • 您所说的“其他平台”到底是什么意思?
    Angular2 是浏览器的 Web 框架。 Electron 使用浏览器,因此可以在那里使用。 Ionic 有一个从 Angular 到它的原生表示的转换层。

  • Angular 的构建方式可以扩展为在其他平台上使用。
  • Angular2 确实支持向服务注入(inject)服务。它不支持在服务级别声明提供程序。仅支持 bootstrap()以及组件或指令。

  • I am not keen to add all my dependencies for all of my services at the application level



    您可以在包含所需提供程序的模块中创建数组变量。如果一个模块需要它使用或导出的多个模块的提供者,则一个模块可以导出包含来自其他模块的此类变量的此类变量。 Provider可以任意嵌套。然后您可以导出一个或多个这样的顶级变量以添加到 bootstrap()或根组件或应定义提供程序范围的其他组件。

    in fact this won't work as I need non singletons. Has anyone developed a workaround for this?



    前者与非单例无关。根据您需要的非单件类型,有不同的方法。

    如果将提供程序添加到组件,则此组件是维护单个实例的范围的根。该组件及其所有子组件(如果它们没有注册相同的提供者)将在每个请求上获得由该提供者维护的单个实例。

    如果您将提供程序注册为工厂函数,则可以注入(inject)工厂以为工厂函数的每次调用获取一个新实例。

    关于dependency-injection - 在浏览器之外使用 Angular2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37799122/

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