【问题标题】:How to properly use the same Class in Anglular and NodeJs server with Typescript如何使用 Typescript 在 Angular 和 Node Js 服务器中正确使用相同的类
【发布时间】:2019-08-01 08:48:00
【问题描述】:

我有一个名为 models.ts 的文件

import {BusStage} from "./busStage";

export class BusRoute {
    name: string;
    origin_direction_1: string;
    origin_direction_2: string;
    stops: number;
    id: string;
    meta: object;
    path: Direction;
    prev: string;
    next: string;
    arrival: Arrival;
}
export class Arrival {
    busstop_id: string;
    busstop_name: string;
    arrival_in: string;
    bus_left: string;
    all_arrivals: ArrivalSchedule[];
}
export class ArrivalSchedule{
    minutesLeft: string;
    arrivalTime: string;
    arrivalStatus:string;
}
export class Direction {
    direction1: BusStage[];
    direction2: BusStage[];
    direction3: BusStage[];
}

我的后端是支持 Typescript 的 NodeJs,它为我的前端(Angular 作为静态文件)提供服务。我的服务器还公开了一个 API,允许两端通信 json 请求和响应。现在我想在前端和后端使用相同的 models.ts 文件,而不必在每次进行更改时复制文件并手动同步。

这样做的正确方法是什么?我正在考虑编写一个脚本来监视任何文件更改,并在每次发生更改时将其复制到后端和前端文件夹中。但是,我认为它更像是一种解决方法而不是解决方案。我想要实现的目标是否可行?

这是我的文件夹结构:

|models.ts
   |_frontend/
      |_src
      |_package.json
      |_tsconfig.json
      |_...

   |_backend/
      |_src
          |_server.ts
      |_dist/
      |_package.json
      |_tsconfig.json
      |_...

【问题讨论】:

  • 我不喜欢搞乱客户端和服务器代码。当您说“无需复制”时,这是什么意思(您想节省磁盘空间)?制作独立零件要好得多。有可能,就像@M U 所说的将常用方法引入根文件夹...

标签: node.js angular typescript


【解决方案1】:
  1. 不要写任何观察者! :)
  2. Yarn 工作区可以提供帮助。
  3. 创建只有包 JSON 的根项目以指定工作空间。
  4. 将后端和前端放在不同的文件夹中。
  5. 将 tsconfig.base(或类似的东西)放在根级别,同时添加"baseUrl": ".", ,这样您就可以在顶层使用一个提升的 node_modules 并且所有模块都会正确解析。
  6. 创建文件夹,例如libstypes 并将其添加到工作区。
  7. 创建一个包,可以在顶级文件夹类型中,也可以在一些嵌套文件夹中,例如 @your-project/types
  8. 将此包添加到前端和后端的开发部门。
  9. 现在,您可以在前端/后端之间使用类型、接口或类,并且始终免费同步。

我希望它是你要找的。​​p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-12
    • 2021-07-24
    • 2020-12-13
    • 1970-01-01
    • 2019-09-08
    • 2017-11-24
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多