dışa aktarmanın herhangi bir yolu, belirli bir dosyada TÜM işlevleri dışa aktarmak için herhangi bir kısayol var mı? Ünite testlerim üretim kodumdan ayrı bir dosyada olduğu için ünite test amaçları için bunu yapmak istiyorum.node.js: node.js dosyasında bir dosyadaki tüm işlevleri (ör., Birim sınamasını etkinleştirmek için) tek tek veya birer birer
exports.myFunction = myFunction;
Ancak bunu yapmak için daha basit/yağmurluk yol olup olmadığını merak ediyorum:
Ben geçmesi ve olduğu gibi manuel olarak her işlev vermek biliyorum.
(Ve evet, modülerlik nedenlerinden ötürü, tüm işlevleri dışa aktarmanın her zaman iyi bir fikir olmadığını biliyorum, ancak birim sınama amacıyla, tüm küçük işlevleri görmek istiyorsunuz, böylece parçaları parça parça olarak test edebilirsiniz.)
Teşekkürler!
// save this into a variable, so it can be used reliably in other contexts
var self = this;
// the scope of the file is the `exports` object, so `this === self === exports`
self.fnName = function() { ... }
// call it the same way
self.fnName();
Ya da bu:
// You can declare your exported functions here
var file = module.exports = {
fn1: function() {
// do stuff...
},
fn2: function() {
// do stuff...
}
}
// and use them like this in the file as well
file.fn1();
Ya da bu:
// each function is declared like this. Have to watch for typeos, as we're typing fnName twice
fnName = exports.fnName = function() { ... }
// now you can use them as file-scoped functions, rather than as properties of an object
fnName();
Teşekkürler - ama yine de her işlevi açıkça adlara göre listelemek anlamına gelir. Yani sanırım "ihracat *" tipi bir kavram yok mu? – sethpollack
Hayır, böyle bir şey yok. Düzenlenmiş cevabıma bakarsanız, bu sorunu hallederken kullandığım bir yöntem göreceksiniz. Bu, nesnenizdeki tüm işlevlerinizi bildirmenizi ve bunları dosya boyunca kullanabilmenizi sağlar. – benekastah
Clever - teşekkürler. Dolayısıyla, buradaki tradeoff, işlevleri artık doğrudan isimle arama ve bunun yerine file.fn1() sözdizimini kullanmak zorunda kalmıyor. – sethpollack