【问题标题】:Why no Angular-CLI generate command for 'model' in Angular Project?为什么 Angular 项目中没有 Angular-CLI 为“模型”生成命令?
【发布时间】:2019-03-30 21:42:51
【问题描述】:

在学习 Angular 时,我只是通过各种 Angular-CLI 命令来生成 Angular 的各个部分,例如“组件”、“服务”、“接口”、“管道”等。

通过 Angular-CLI 生成 Angular 项目

ng g c components/comp-1 //generates component
ng g s services/service-1 // generates service
ng g i interfaces/interface-1 // generates interface

但是,我很惊讶为什么没有用于 'Model' 的生成命令(尽管 Interface 也做了几乎一些工作 - 但 model 更强大,因为它也可以在 Class 中包含方法)。

是我遗漏了什么还是 Team-Angular 在生成“自动生成模型”的命令时遗漏了——因为它们是 OOPS 框架的核心。

参考:

https://www.npmjs.com/package/angular-cli

【问题讨论】:

    标签: javascript angular angular-cli


    【解决方案1】:

    因为模型一个类,生成它使用--type这样的选项:

    ng generate class hero --type=model
    

    将导致:

    hero.model.ts
    

    【讨论】:

    • 但是,接口、管道、模块也是类。不是吗?
    • 你是对的,他们在技术上是正确的。但是模型是数据的骨架,是最接近泛型类的(但这并不是真正的借口)。我也很惊讶他们不只是添加model 命令,尽管它不是保留字或任何东西。
    • 如果您需要避免创建单元测试类 hero.model.spec.ts,只需键入 --spec=false。比如 ng generate class hero --type=model --spec=false
    • @Patrick 你只需要输入“class”这个词。因此,在您的示例类型中:ng g class hero --type=model,您将获得 hero.model.ts 和相关的 .spec 文件
    • @Patrick 这是因为缩写 c 代表 component(而 s 代表 service)。我经常使用的命令是ng generate interface hero --type=modelng generate i hero --type=model,因为它会创建一个接口(并且它不会创建规范/测试文件)。
    【解决方案2】:

    您不能直接生成模型。实际上模型是一个类。 ng generate 默认只允许生成以下类型。

    1. appShell
    2. 应用
    3. 组件
    4. 指令
    5. 枚举
    6. 守卫
    7. 界面
    8. 图书馆
    9. 模块
    10. 管道
    11. 服务
    12. 服务工作者
    13. 通用
    14. 网络工作者

    因此,在您的情况下,您可以使用 --type 选项来定义生成类。 假设你想要一个类似 bar.foo.ts 的类

    您只需使用以下选项定义它。

    ng generate class bar --type=foo
    

    在您的情况下,您可以使用此命令定义模块

    ng generate class nameOfYourModule --type=model
    

    它会生成nameOfYourModule.model.ts

    更多信息请参考ng generate options的官方documentation

    【讨论】:

      【解决方案3】:

      这个命令也生成模型

      ng generate class employee --type

      结果:

      employee.ts employee.spec.ts

      【讨论】:

        【解决方案4】:

        我只使用ng generate class(没有任何标志),我相信许多其他人也这样做。我认为我在 Angular 中使用纯类文件的唯一一次是模型。由于它们主要位于模型文件夹中,因此几乎没有理由使用 --type=model 添加额外的“模型”后缀。我相信这是 Angular 团队没有包含“ng generate model”命令的部分原因(因为它是类的重复)。

        【讨论】:

          【解决方案5】:

          只需在项目的根目录中运行:

          ng generate interface your_model_name --type=model
          # or in models folder
          ng generate interface models/your_model_name --type=model
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-05-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-01-12
            • 2019-10-28
            • 1970-01-01
            • 2016-09-26
            相关资源
            最近更新 更多