2017-06-18 77 views
3

我已經學會了使用IIFE構造模塊。簡單的例子:如何執行這些javascript模塊模式?

export test_module = (function{ 
    var name = "henry"; 
    var age = 26; 
    var height ="6 monthe"; 

    var getHeight = function() 
    { 
     return height; 
    } 

    return{ 
     getHeight : getHeight 
    } 
}()); 

在另一個文件中我有

import {test_module} from './test_module' 

我想了解導入和導出IIFE模塊使用ECMAScript 6個模塊出口和進口。我安裝了Babel翻譯。但是,當我出口我的模塊,並嘗試將其導入在另一個文件中,我得到一個錯誤說:

(function (exports, require, module, __filename, __dirname) { import {text_module} from './test_module' 
                   ^^^^^^ 
SyntaxError: Unexpected token import 
    at createScript (vm.js:56:10) 
    at Object.runInThisContext (vm.js:97:10) 
    at Module._compile (module.js:542:28) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.runMain (module.js:604:10) 
    at run (bootstrap_node.js:393:7) 
    at startup (bootstrap_node.js:150:9) 

什麼是我的問題嗎?我的語法錯了嗎?

+1

不幸的是,由於自動分號插入,'return'不能像預期的那樣按照預期工作。 '{getHeight:getHeight}'永遠不會被返回。您需要將大括號'{'放在'return'的同一行上。 – 4castle

+0

非常感謝那個@ 4castle – henrybbosa

+0

順便說一句,即使你不親自使用'class'語法,它仍然會有一些好處來適應它們。我自己避免使用'class'語法(因爲我也避免了原型繼承),但它們在行業中相當普遍。 – 4castle

回答

3

正如Babel報告的那樣,您有語法錯誤。取而代之的

export test_module = 

你必須說

export const test_module = 

反正ES6模塊使舊IIFE式 「模塊」 過時的(幾乎)。只要寫

// my-module.js 

export function getHeight() { 
    var name = "henry"; 
    var age = 26; 
    var height = "6 monthe"; 

    return height; 
} 

或者,如果你喜歡

function getHeight() { 
    var name = "henry"; 
    var age = 26; 
    var height = "6 monthe"; 

    return height; 
} 

export { getHeight }; 

然後,當你想使用它:

import { getHeight } from './my-module'; 

getHeight(); 

import * as myModule from './my-module'; 

myModule.getHeight(); 

至於你提到的咆哮類,我不明白它與什麼有關你的問題。如果你不喜歡ES6中的課程,那麼不要使用它們。類與ES6模塊無關,除了像任何其他值類可以導出和導入的明顯事實。

+0

,因爲我在網上看到了Evvery的例子。使用類\ – henrybbosa

+0

謝謝雖然..我怎麼能沒有任何類的東西結構完整的模塊 – henrybbosa

+0

從你給的答案我不覺得模塊的概念我覺得我只是導出了一個功能 – henrybbosa