2016-09-14 3 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 Возможно, вы указали файл jquery после файла 'messenger.js' –