Nest.js 中的文件命名

File naming in Nest.js

这个问题是关于 Nestjs 中的代码样式的。 该框架建议文件命名小写字母和圆点。

示例:

文件user.service.ts

export class UserService {
}

另一个文件

import { UserService } from './user.service'

在大多数情况下,每个文件都包含一个 class。我发现将此 class 导出为默认值然后导入同名文件

很方便

文件UserService.ts

export default class UserService {
}

另一个文件

import UserService from './UserService'

因为它更快更容易。

你能告诉我为什么我不应该这样做吗?我也不明白为什么文件中的唯一实体没有默认导出。 您对在 Nest JS 中使用文件名感到满意吗?

更新。还有一个问题: 如果我有一个 class 名字由几个单词组成。例如 “用户角色服务”。我应该给这个文件起什么名字?

userrole.service.ts

user-role.service.ts

user_role.service.ts

user.role.service.ts

看起来很奇怪,不可读。我认为 CamelCase 会更可取,但在这里我们回到我们开始的地方

这是一个非常自以为是的问题,值得一个自以为是的答案。

文件名

由于多种原因,文件名按原样分开。

1) Angular 就是这样做的,Nest 的灵感来自 Angular

2) 这意味着将大写和小写文件名视为相同的操作系统不会混淆(如 MacOS)

3) 它为开发人员提供了一个易于查看的文件名分隔点

4) 文件编辑器中的一些工具可以根据文件名显示不同的图标。 .ts 可能只表示打字稿文件,但 .service.ts 表示用打字稿编写的服务文件。 (Material 图标主题与 VSCode 给出不同的图标)

出口

您提出的另一个问题是命名与默认导出。除了导入的工作方式外,这些没有太大区别,但要认识到的重要一点是,对于命名导出 (export class <ClassName>),您 必须 导入 class 在另一个具有相同名称的文件中(尽管您可以使用 as 为其指定别名)。使用 default exports 您可以将每个文件导出为默认值一次,但您可以将其导入到另一个具有任何名称的文件中。所以如果你想要,你可以有 export default MyClass,然后有 import SomethingNotRelatedToTheName from path/to/MyClass

如果您对此有强烈的感觉,您可以随时重写和重命名您的文件名和导出,但不要指望 Nest 会为您更改它,因为它是一个固执己见的框架。

我遇到了这个老问题,我认为值得为下一个访问者提供这个答案。

@Jay McDoiel所述,这是一个非常固执己见的选择。无论哪种方式都是正确的。

但是,我发现 NestJS 库使用连字符分隔的 user-role.service.ts 文件命名作为其约定。

看看我下面附上的照片