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 为您更改它,因为它是一个固执己见的框架。
我遇到了这个老问题,我认为值得为下一位访问者提供这个答案。
就像@Jay McDoiel提到的那样,这是一个非常自以为是的选择。无论哪种方式都是正确的。
但是,我发现 NestJS 库使用连字符分隔的user-role.service.ts文件命名作为其约定。
看看我下面附上的照片
| 归档时间: |
|
| 查看次数: |
3358 次 |
| 最近记录: |