2016-09-14 194 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

注意你不應該使用只有靜態成員的''''類。 – 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函數中的內容從alert中更改爲像$('body')。append('test')這樣的測試。它說$沒有定義,即使我在主腳本的第一行定義了,你知道嗎? –

+0

@BjarneHansen這可能是你在'messenger.js'文件之後引用了jquery文件 –