Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将ES6导入语句放在代码文件的底部有什么缺点吗?_Javascript_Typescript_Import_Module_Ecmascript 6 - Fatal编程技术网

Javascript 将ES6导入语句放在代码文件的底部有什么缺点吗?

Javascript 将ES6导入语句放在代码文件的底部有什么缺点吗?,javascript,typescript,import,module,ecmascript-6,Javascript,Typescript,Import,Module,Ecmascript 6,我最近在查看时才遇到这种做法-我没有意识到所有导入语句都可能位于.js文件的底部。这似乎是个好主意,因为在打开文件时,导入语句很少是我主要要处理的 在顺序无关紧要的情况下,我们是否应该意识到这种做法存在任何不利之处 这可能是同一家公司唯一的一个示例,但我不确定为什么它不能应用于生产代码。我们使用的是TypeScript,但我相信与vanilla ES6的关注点是一样的。通常,您希望先声明/定义一些东西,然后再使用它。首先使用它,然后定义它似乎很奇怪。阅读您的代码的人会希望导入位于文件的顶部 函数

我最近在查看时才遇到这种做法-我没有意识到所有导入语句都可能位于.js文件的底部。这似乎是个好主意,因为在打开文件时,导入语句很少是我主要要处理的

在顺序无关紧要的情况下,我们是否应该意识到这种做法存在任何不利之处


这可能是同一家公司唯一的一个示例,但我不确定为什么它不能应用于生产代码。我们使用的是TypeScript,但我相信与vanilla ES6的关注点是一样的。

通常,您希望先声明/定义一些东西,然后再使用它。首先使用它,然后定义它似乎很奇怪。阅读您的代码的人会希望导入位于文件的顶部

函数也是如此:您可以在声明它们之前使用它们,但是阅读代码的人希望在上面几行找到函数声明,而不是下面几行:

var result = add(10, 5);

// some other code

function add (a, b) {
  return a + b;
}
这似乎是个好主意,因为在打开文件时,导入语句很少是我主要要处理的

我不同意。当我查看一个文件时,我感兴趣的是它的依赖关系以及它与项目中其他文件的关系


假设您想了解某个文件是关于什么的。通常,您会浏览代码,首先查看导入,然后查看使用这些导入的代码。否则,你会遇到很多你从未见过的东西。

我想,一个缺点是可读性。通常,您希望在调用函数之前对其进行定义,尽管JS中的函数提升并不重要,但这样做仍然被认为是良好的做法。其中一个主要缺点是可读性,一旦您使用任何模块绑定器,它将抛出错误,并要求您将所有导入语句重新排序到顶部,这更有意义。打开文件时,导入语句很少是我主要要处理的,您可以在IDE中轻松折叠它们。另一方面,很多人可能想知道他们在当前文件中处理的是什么。瞧,貌似没有依赖关系的模块包含了大量的导入,在没有人期望的地方。这是一个多么聪明的方式来激怒其他开发人员。最好使用省略的分号、括号和
1==val
条件。@estus是的,“这是一个非标准约定”,作为缺点。VS代码更像是一个编辑器,而不是IDE。至少Webstorm/Phpstorm拥有它有一段时间了。当我研究开源代码并掌握它,或者在非常大的项目中导航时,我同意这一点。不过,我的大多数用例在任何给定功能上都使用相同数量的相对较少的文件。是的,这取决于您个人的喜好,但如果您希望其他人能够轻松阅读和理解您的代码,我认为您应该将导入语句放在文件的顶部。这是一个公平的观点。现代,当我想知道某物的定义在哪里时,我会选择F12,所以它是在上面还是在下面通常是无关紧要的。但目前看来这远远超出了惯例。谢谢你的想法!