Javascript dosyalarında module.exports'un nerede beyan edileceğine dair sözleşme


11

module.exportsJavascript / Node.js modül dosyalarını bildirmemiz gereken herhangi bir kural var mı ?

Dosyanın başında olması gerektiği gibi:

module.exports = Foo;

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

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

Veya dosyanın sonunda mı olmalıdır:

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

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

module.exports = Foo;

Teknik bir fark olmadığını biliyorum. İlk örnek, beyan kaldırma düzeni nedeniyle mükemmel bir şekilde geçerlidir .

Bu yüzden bir tür en iyi uygulama olup olmadığını merak ediyordum.


Sonunda bırakmanın bir avantajı, işlev nesnelerini ( var Foo = function()...) kullanabilmenizdir ve yine de bunu bildirmenin başka bir yolu da doğrudandır ( module.exports.Foo = function()...).
Marcelo

Sadece yapabilirdim var Foo = function Foo()...ve işe yarayacaktır.
Henrique Barcelos

En üste koymanın avantajı: modülünüzün API'sini bir bakışta görebilirsiniz (aşağı kaydırmak zorunda kalmadan).
Adam Zerner

Yanıtlar:


4

Hepsi yaygın olarak kullanılan kesinlikle çok sayıda seçenek vardır. Ama bu çok sinir bozucu. Sonuna koymak istiyorum, çünkü bu her koşulda işe yarıyor. Kendimi module.exports ile süslü bir şey yaparken bulduğumda, muhtemelen bunu yapmanın daha iyi bir yolu var.

En önemlisi, her zaman olduğu gibi tutarlı olun. Ve ekibinizde tutarlı olun.

EDIT: Aynı kavram, requirebaşlangıçta tüm ifadeleri istiyorum . Node.js dosyalarım her zaman şöyle görünür:

"use strict";

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


class MyOtherClass extends MyClass {}

module.exports = MyOtherClass;

Hiçbir şey fantezi, sadece beklediğiniz gibi. Dosya başına bir sınıf, sınıf başına bir dosya. İçerdikleri sınıftan sonra adlandırılan, üst / küçük harf içeren dosyalar. Bazı örnekler için bu düğüm modülüne bir göz atın: yaioc (feragatname: Ben yazarım ve bu utanmaz reklamdır)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.