Konvensi ke tempat mendeklarasikan module.exports pada file Javascript


11

Apakah ada konvensi di mana kita harus mendeklarasikan module.exportsfile modul no Javascript / Node.js?

Haruskah di awal file seperti:

module.exports = Foo;

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

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

Atau harus di akhir file:

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

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

module.exports = Foo;

Saya tahu tidak ada perbedaan teknis. Contoh pertama sangat valid karena pengangkatan deklarasi .

Jadi saya bertanya-tanya apakah ada beberapa praktik terbaik.


Satu keuntungan dari meninggalkannya pada akhirnya adalah bahwa Anda dapat menggunakan objek fungsi ( var Foo = function()...), dan cara lain untuk mendeklarasikannya secara langsung ( module.exports.Foo = function()...).
Marcelo

Saya bisa saja var Foo = function Foo()...dan itu akan berhasil juga.
Henrique Barcelos

Keuntungan meletakkannya di atas: Anda dapat melihat API modul Anda secara sekilas (tanpa harus menggulir ke bawah).
Adam Zerner

Jawaban:


4

Tentu ada banyak dan banyak pilihan, yang semuanya biasa digunakan. Tapi itu sangat menjengkelkan. Saya suka meletakkannya di akhir, karena itu berfungsi dalam semua keadaan. Setiap kali saya menemukan diri saya melakukan sesuatu yang mewah dengan module.exports, mungkin ada cara yang lebih baik untuk melakukannya.

Yang terpenting, seperti biasa, konsisten. Dan konsisten dalam tim Anda.

EDIT: Pada gagasan yang sama, saya ingin memiliki semua requirepernyataan di awal. File Node.js saya selalu terlihat seperti ini:

"use strict";

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


class MyOtherClass extends MyClass {}

module.exports = MyOtherClass;

Tidak ada yang mewah, seperti yang Anda harapkan. Satu kelas per file, satu file per kelas. File dinamai berdasarkan kelas yang dikandungnya, dengan konsisten atas / huruf kecil. Lihatlah modul simpul ini, untuk beberapa contoh: yaioc (penafian: saya penulisnya, dan ini iklan yang tidak tahu malu)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.