2016-09-14 75 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文件 –