在Javascript文件中声明module.exports的约定


11

是否应声明module.exports没有Javascript / Node.js模块文件的约定?

应该在文件的开头,例如:

module.exports = Foo;

function Foo() {
    this.bar = 'bar';
}

Foo.prototype.getBar = function() {
    return this.bar;
}

还是应该在文件末尾:

function Foo() {
    this.bar = 'bar';
}

Foo.prototype.getBar = function() {
    return this.bar;
}

module.exports = Foo;

我知道没有技术差异。第一个示例由于声明悬挂而完全有效。

所以我想知道是否存在某种最佳实践。


最后保留它的一个优点是可以使用函数对象(var Foo = function()...),而直接声明它的另一种方法是直接(module.exports.Foo = function()...)。
马塞洛

我可以var Foo = function Foo()...,它也可以工作。
Henrique Barcelos

将其放在顶部的优势:您可以一目了然地看到模块的API(无需向下滚动)。
亚当·泽纳

Answers:


4

当然,有很多选项都是常用的。但这真是令人讨厌。我喜欢将其结尾,因为这在所有情况下都适用。每当我发现自己对module.exports做一些幻想时,可能会有更好的方法。

最重要的是,始终如一。并与您的团队保持一致。

编辑:在同一个概念上,我希望require在一开始就包含所有语句。我的Node.js文件始终如下所示:

"use strict";

const fs = require("fs");
const MyClass = require("./MyClass");


class MyOtherClass extends MyClass {}

module.exports = MyOtherClass;

没什么好想的,只是您所期望的那样。每个文件一类,每个文件一类。以它们所包含的类命名的文件,包含上/下大写字母。让我们看一下这个节点模块,例如:yaioc(免责声明:我是作者,这是无耻的广告)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.