Nest.js 中的文件命名

Ste*_*lin 6 coding-style node.js nestjs

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

例子:

文件 user.service.ts

export class UserService {
}
Run Code Online (Sandbox Code Playgroud)

另一个文件

import { UserService } from './user.service'
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,每个文件都包含一个类。我发现将这个类作为默认导出然后导入同名文件很方便

文件 UserService.ts

export default class UserService {
}
Run Code Online (Sandbox Code Playgroud)

另一个文件

import UserService from './UserService'
Run Code Online (Sandbox Code Playgroud)

因为它更快更容易。

你能反驳我为什么我不应该这样做吗?另外我不明白为什么文件中唯一的实体没有作为默认导出。您是否习惯在 Nest JS 中使用文件名?

更新。还有一个问题:如果我有一个由几个单词组成的类名。例如“UserRoleService”。我应该给这个文件起什么名字?

用户角色.service.ts

用户角色.service.ts

user_role.service.ts

用户角色.service.ts

它看起来很奇怪而且不可读。我认为 CamelCase 会更可取,但我们又回到了开始的地方

Jay*_*iel 10

这是一个非常有主见的问题,值得有主见的答案。

文件名

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

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

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

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

4) 文件编辑器中的一些工具可以根据文件名显示不同的图标。.ts除了打字稿文件外,可能不意味着任何其他内容,而是.service.ts指用打字稿编写的服务文件。(Material Icon Theme with VSCode 给出了不同的图标)

出口

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

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

  • 就我个人而言,我喜欢“first-name-part.type.ext”方法,因此您可以拥有“user-role.service.ts”或“ogma-core.module.ts”之类的东西。这与 Nest 使用的文件名方法相同。对于目录也是如此,使用连字符将文件保留为具有多个部分的一个名称 (4认同)

Pon*_*leu 7

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

就像@Jay McDoiel提到的那样,这是一个非常自以为是的选择。无论哪种方式都是正确的。

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

看看我下面附上的照片

在此处输入图片说明