2012-02-01 23 views
10

Node modülünü/gereksinimlerini en iyi şekilde kullanmak için biraz uğraşın/require()/export uygun OO programlama yapmak için ayarlayın. Küresel ad alanı oluşturmak ve ihracatı kullanmamak (müşteri tarafında js uygulama geliştirmede olduğu gibi) iyi bir uygulama mıdır? Yani, modülde (Namespace.Constructor.js):Node.js ad alanı

Namespace = Namespace || {}; 
Namespace.Constructor = function() { 
    //initialise 
} 
Namespace.Constructor.prototype.publicMethod = function() { 
    // blah blah 
} 

... ve sadece kullanmak dosyayı çağrısında ...

requires('Namespace.Constructor'); 
var object = new Namespace.Constructor(); 
object.publicMethod(); 

Teşekkür

node.js ise
+3

kullanın 'exports' veya' module.exports' sizin örnekte

aşağıdaki kullanın. Modülünüz zaten adlandırılmış. Sadece bu dokümanları takip edin (http://nodejs.org/docs/latest/api/modules.html). – nicerobot

cevap

16

, modül konum ad alanıdır, bu nedenle açıkladığınız kodda ad alanına gerek yoktur. Bence bununla ilgili bazı sorunlar var, ama bunlar yönetilebilir. Düğüm, yalnızca module.exports nesnesine eklediğiniz kodu ve verileri gösterecektir. Sonra

var Constructor = function() { 
    // initialize 
} 
Constructor.prototype.publicMethod = function() {} 
module.exports = Constructor; 

Ve senin çağıran kodu:

var Constructor = require('./path/to/constructor.js'); 
var object = new Constructor(); 
object.publicMethod(); 
+1

Ama eğer var kullanmazsak, bir global oluşturulur ve arayan için kullanılabilir. O halde neden ihracata ihtiyacımız var? – hacklikecrack

+1

Küresel alanda bir isim çarpışmasını önlemek için. Elbette kendi ad alanı sisteminizi yaratabilirsiniz, ancak require() oldukça iyi çalışır ve node.js geliştirmesindeki net standarttır. –

+7

hacklikecrack: Bir modülde bir var eksik, arayandan elde edilebilir bir global oluşturmaz. Düğüm bunu önlemek için modül kodunuzu otomatik olarak bir işlevde sarar. –