我可以在Angular和Node之间共享服务吗?

时间:2017-11-17 13:40:18

标签: javascript node.js angular typescript angular5

我的Angular5 Typescript应用程序中有一个标准的实用程序服务。 我想与我的节点应用程序共享它,该节点应用程序正在为应用程序提供服务。

我无法找到有关它的任何信息,但我发现问题为:

  • 使用require()导入TS文件,以及生成的js文件 生活在同一个地方
  • 忽略作为装饰者的@Injectable 用于角度服务。

我认为这是可能的,因为这是使用完整堆栈Javascript的一个主要好处,但它怎么能完成?

我在NodeJs中尝试过以下操作,这会引发错误:

const utilService = require('../../src/app/services/util/util.service');

3 个答案:

答案 0 :(得分:2)

我会创建一个包含您的实用程序请求的private npm package

然后将其导入角度项目和节点项目。

答案 1 :(得分:1)

我能想到如何实现这一目标的唯一方法是提供util.service的编译(ES2015及以下)表示。这样做可能是构建脚本/管道的自动化部分。

或者,如果util.service不经常更改,请使用

手动编译
tsc ./src/app/services/util/util.service.ts --out ./src/app/services/util/util.service.js

答案 2 :(得分:1)

你不能,打字稿它是无效的javascript。

为了实现这一点,您还需要编译节点代码,基本上有两个不同的打字稿配置,一个定位浏览器,另一个具有不同的入口点,定位节点。

如果您这样做,那么您将能够在后端和前端之间共享一些代码。虽然使用@injectable()装饰器的服务不起作用。为什么?没有任何Injector可用于处理您的依赖注入。