我应该在 Angular 应用程序中有 API 模型和 UI 模型吗

电子

我正在开发一个应用程序,我使用 .Net Core 作为我的 API,SQL Server 作为数据库,Angular 作为 UI。我正在学习的课程没有提供太多解释他为什么这样做,所以我决定在谷歌搜索没有帮助后在这里发布几个问题。在 Angular 应用程序中,讲师使用 api-model(接口)使用 http 方法从服务中的 API 获取数据,然后在组件 .ts 文件中,他将可观察响应设置为要使用的 ui-model在模板中。

  1. 在前端使用 api 和 ui 模型而不是仅使用一个模型是标准还是好的做法?- 我在 API 中使用 DTO 和 DAO,并且了解原因,但不清楚在前端执行此操作有什么好处。
  2. 创建模型时使用接口而不是类有优势吗?到目前为止,这是我看到有人在创建模型时使用 Angular 中的接口的第一个示例。

UI 和 API 模型是相同的。他基本上将 API 获取的数据放入 API 模型中,并将其转储到 UI 模型中以在模板中使用在此处输入图像描述

在此处输入图像描述

克里斯·汉密尔顿

当您说模型时,我假设您只是指为数据(类型、接口或类)定义模式。它们的主要目的是确保您作为开发人员不会犯错误。如果你定义了一个数据类型并且你试图访问一个不存在的属性,打字稿编译器会捕捉到这个。另一个例子是,如果您尝试对id参数进行一些数学运算,编译器会告诉您这是一个字符串,而不是一个数字。

是的,你应该在两边都定义你的模式,否则你会到处犯这样的愚蠢错误。加上这种方式,您可以获得智能感知和代码完成。

至于接口和类的区别,typescript中定义数据类型的方式有以下三种:

类型

这只是一个定义了每个属性类型的对象类型。类型不支持继承,并且它们没有构造函数。

type Fruit = {
  name: string;
  color: string;
  weight: number;
  similarFruits: Fruit[];
  decompose: () => RottenFruit;
};

接口

接口本质上与类型相同,但它们可以extend相互关联,类可以implement

interface Fruit {
  name: string;
  color: string;
}

interface Banana extends Fruit {
  eat: () => string;
}

class BigYellowBanana implements Banana {
  name: string;
  color: string;
  eat: () => string;
  constructor() {
    this.name = 'Big Yellow Banana';
    this.color = 'Yellow';
    this.eat = () => 'mmmm banana';
  }
}

课程

类完全是另一种蠕虫,因为它们具有面向对象语言的所有功能。最值得注意的是,可以使用new关键字调用的构造函数。

class BigBanana extends SmallBanana implements Banana {
  name: string;
  color: string;
  private eatMessage = 'mmmm banana';
  constructor(color: string) {
    this.color = color;
    this.name = `Big ${color} Banana`;
  }

  eat() {
    return this.eatMessage;
  }
}

const greenBanana = new BigBanana('Green');

我为我愚蠢的例子道歉。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有 OrderService 和 TransactionService 时,我应该在哪里更新“交易”模型

我应该在Django模型中测试方法吗?

我应该在模型中抛出HttpStatus异常吗?

我应该在 React 应用程序中删除所有不必要的 usecallback 和 memo 吗?

我应该在开放源代码应用程序中发布我的Spotify API密钥吗?

我应该在Angular 4+应用程序中为每个组件创建一个模块吗?

ASP Identity OAuth令牌-我应该在移动应用程序流中使用ValidateClientAuthentication()和Secret吗?

我应该在Angular 2的angular-cli或index.html中包含css和js吗?

我应该在Angular中再次调用ngOnInit()吗?

SMS Retriever API 应该在 Messages 应用程序中显示消息吗?

在我的Angular.js应用程序中-我是否应该绑定到Web API提供的模型

我应该在Elixir Phoenix的控制器或模型中使用Ecto.Repo吗?

我应该在每个模型保存后关闭 Mongoose 连接吗?

我应该在实体框架模型的主键中使用int还是long吗

我应该在ReactiveCocoa MVVM中重新绑定模型吗?

Javascript-我应该在需要特定接口的地方使用继承模型吗?

Node jS API 和 Angular jS 应该在同一个项目上吗?

我应该在Django项目中使用内部API在应用之间进行通信吗?

我应该在活动/片段和视图模型来完成在MVVM

我应该在data()函数和v模型中做什么?

我应该在我的新闻应用程序项目中使用rss feed吗?

我应该在Docker映像中编译我的应用程序吗

我应该在我的网络应用程序中实现 cookie 吗?

我应该在我的应用程序内使用Facebook用户ID吗?

Power BI应该在星型模式模型中有粗支还是细支

我应该在所有脚本上都添加* .sh和* .rb文件扩展名吗?

如果我有主房间和备用房间,它们应该在不同的桌子中吗?

我应该在JavaScript应用程序中保留控制台语句吗?

我应该在应用程序前端遮盖数据库主键(ID)吗