2016-09-14 11 views
0

Ich habe eine Klasse (Modul) in einer anderen js-Datei in dem gleichen Ordner, der so aussieht.Ein Modul bekommen ES6

class MessageModule{ 

constructor(){ 

} 

sayHello(){ 
    alert('Hello from msg'); 
} 

} 

module.exports = MessageModule; 

Allerdings kann ich es nicht in der Haupt-js-Datei erfordern.

let $ = require('jquery'); 
global.jQuery = $; 
let bootstrap = require('bootstrap'); 
let messageModule = require('message'); 


messageModule.sayHello(); 

Wie soll ich das exportieren, oder eine Klasse?

Vielen Dank.

+3

'sayHello' eine Methode in der Klasse Prototyp. Sie benötigen eine Instanz von 'MessageModule' oder machen Sie sie statisch. – MinusFour

Antwort

0

Sie exportieren die Klassendefinition. Sie müssen eine Instanz erstellen, um dort eine beliebige nicht-statische Methode zu erreichen. Statische Methoden können vom Klassenobjekt aus erreicht werden.

Also, es ist entweder:

class MessageModule{ 

    constructor(){ 

    } 

    static sayHello(){ 
     alert('Hello from msg'); 
    } 

} 

module.exports = MessageModule; 

Oder:

let $ = require('jquery'); 
global.jQuery = $; 
let bootstrap = require('bootstrap'); 
let messageModule = require('message')(); 


messageModule.sayHello(); 
+1

Beachten Sie, dass Sie niemals eine 'Klasse' verwenden sollten, die nur statische Elemente enthält. – Bergi

0
export class MessageModule { 
    constructor() { 

    } 

    sayHello() { 
     alert('hello from msg') 
    } 
} 

Anruf, dass die Klasse in einer anderen Seite:

<script> 
    import {Message} from "/scripts/message.js"; 

    var message = new Message(); 
    message.sayHello(); 

    // or 

    //import {MessageModule} from "/scripts/message.js"; 

    //var message = new MessageModule(); 
    //message.sayHello(); 
</script> 
+0

Danke, es hat funktioniert! Aber wenn ich den Inhalt in meiner sayHello-Funktion von Alert in einen Test wie $ ('body') geändert habe, append ('test'). Es heißt $ ist nicht definiert, obwohl ich in der ersten Zeile in meinem Hauptskript definiert habe, weißt du? –

+0

@BjarneHansen Das könnte sein, dass Sie die JQuery-Datei nach der 'messenger.js'-Datei referenziert haben –