2016-04-09 11 views
0

kullanarak başka bir dosyadan işlev nasıl kullanılır StackOverflow üzerinde bulduğum hiçbir soru, bu soruyu yanıtladı veya sorunuma bir çözüm verdi.require()

Spotify'ın API'sini kullanmak için bir uygulama oluşturuyorum. JavaScript’e göreceli olarak yeniyim, ancak diğer dillerde, özellikle OO dillerinde uzun zamandır bir kod yazarı oldum. API ile ilgilenmek için projemde OO-esque kodunu kullanmaya çalışıyorum.

Nasıl yapılacağını tam olarak anlayamayabilirim, ama işte benim temel anlayışım. smartspot.js adlı bir dosyada API ile ilgili tüm kodları kullanıyorum. Bu dosyanın içinde, aşağıdakine benzer bir şey var.

/** 
* Taps into the Spotify API to create a playlist with top songs from artists most like a certain artist. 
* @param {string} _clientId the client ID code given to the user by Spotify. 
* @param {string} _clientSecret the client secret code given to the user by Spotify. 
* @param {string} _redirectUri a Redirect URI that has been white-listed by Spotify. 
* @constructor creates a SmartSpot that can access the Spotify API. 
*/ 
function SmartSpot(_clientId, _clientSecret, _redirectUri) 
{ 
    //initialize the variables (omitted) 
    var clientId = _clientId; 
     clientSecret = _clientSecret; 
    //etc... 

    //various irrelevant variables and functions are ommited. 
    this.foo = function(param) 
    { 
     //does stuff  
    }; 
    //etc... 
} 

Şimdi, function SmartSpot(_clientId, _clientSecret, _redirectUri) (Java ve C++ gibi diller olduğu gibi) bir yapıcı olduğuna inanıyoruz. Eğer Yanlışsam beni düzelt. Yani, 'un bir kurucu olan olduğunu varsayarak, onu başka bir dosyada kullanmam gerekiyor: ekspres "yollarım" dosyam. Rotalar/index.js’de bulunur. dosyasının en üstünde
, ben Ancak bu

var SmartSpot = require('../SmartSpot'); //I have also tried require('../Smartspot.js'); 
//later on 
var smartSpot = new SmartSpot(clientId, clientSecret, redirectUri); 

//elsewhere 
smartSpot.foo(); 

koymak, derleyici beni bana şikayet ediyor: Ben burada eksik

TypeError: SmartSpot is not a function 
    at Object.<anonymous> 
    at Module._compile (module.js:409:26) 
    at Object.Module._extensions..js (module.js:416:10) 
    //etc... 

? Tüm bunlar için IntelliJ kullanıyorum ve bir işlev oluşturmam gerektiğini öneririm, bu yüzden yapıyorum ve index.js dosyasında yapıcı/işlev oluşturur. Kodu daha kolay anlaşılması ve kullanımı daha kolay hale getirmek için dosyaları ayırmak istiyorum.

Dışarıda bıraktığım bu soruyu cevaplamanız gereken bir şey varsa, bildirin.

+0

Bir HTML sayfasındaki bu JavaScript dosyalarını kullanıyor musunuz? Varsa, JS dosyalarını

İlgili konular