2016-09-14 6 views
0

私はこのように見える同じフォルダ内の別のjsファイルにクラス(モジュール)を持っています。モジュールを取得するES6

class MessageModule{ 

constructor(){ 

} 

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

} 

module.exports = MessageModule; 

ただし、メインjsファイルでは要求できません。

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


messageModule.sayHello(); 

これ、またはどのクラスをエクスポートする必要がありますか?

ありがとうございます。

+3

'sayHello'がクラスのメソッドでありますプロトタイプ。あなたは 'MessageModule'のインスタンスを必要とするか、静的にします。 – MinusFour

答えて

0

クラス定義をエクスポートしています。静的でないメソッドに到達するには、インスタンスを作成する必要があります。静的メソッドには、クラスオブジェクトから到達できます。

だから、それだ次のいずれか

class MessageModule{ 

    constructor(){ 

    } 

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

} 

module.exports = MessageModule; 

または:別のページで

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


messageModule.sayHello(); 
+1

静的メンバーだけを持つ 'class'を使用しないでください。 – Bergi

0
export class MessageModule { 
    constructor() { 

    } 

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

コールそのクラス:

<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

ありがとう、それは働いた!しかし、sayHello関数の内容を警告から$( 'body')のようなテストに変更したときにappend( 'test')を実行しました。それは$が定義されていないと主なスクリプトの最初の行で定義していますが、あなたは知っていますか? –

+0

@BjarneHansenこれは、あなたが 'messenger.js'ファイルの後にjqueryファイルを参照している可能性があります –

関連する問題