gpt4 book ai didi

Angular 4 (AOT) + Electron 和条件导入

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:13 24 4
gpt4 key购买 nike

Angular/Typescript 的新手,我正在使用 Electron 和 Angular 4 开发一个跨平台的桌面应用程序。我遇到的问题是我计划在我的不同组件中使用服务,但我希望根据应用程序运行的平台从不同的文件加载该服务

只是为了让您了解我要实现的目标:

if (process.platform === 'darwin') { // Mac
import { MyService } from './path/to/the/mac/service/file';
} else if (process.platform === 'windows' { // Windows
import { MyService } from './path/to/the/windows/service/file';
}

而且困扰我的是我需要使用AOT编译,所以我不能使用require();

我希望有人已经遇到过此类问题,并能为我指出正确的方向。

最佳答案

这似乎是使用 FactoryProvider 的好地方只要两种服务具有相同的接口(interface)。在我开发过的其他应用程序中,此模式适用于 AOT。

import { FactoryProvider } from '@angular/core';
import { MyService as MySerivceWindows } from './path/to/the/windows/service/file';
import { MyService as MyServiceMac } from './path/to/the/mac/service/file';

export abstract class MyService{};

export function myFactoryProvider(){
if (process.platform === 'darwin') { // Mac
return new MyServiceMac();
}else{
return new MySeviceWindows();
}
}

const MY_SERVICE_PROVIDER: FactoryProvider = {
provide: MyService,
useFactory: myFactoryProvider
};

然后您可以在需要的地方将抽象类导入和注入(inject)到您的组件中。

也可能最好提供流程并将其注入(inject)工厂的部门。

关于Angular 4 (AOT) + Electron 和条件导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45394753/

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