2017-06-18 5 views
3

私はIIFEを使用してモジュールを構造化することを学びました。簡単な例:私はどのようにこれらのjavascriptモジュールパターンを実行しますか?

import {test_module} from './test_module' 

を持っている別のファイルで

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

    var getHeight = function() 
    { 
     return height; 
    } 

    return{ 
     getHeight : getHeight 
    } 
}()); 

私はECMAScriptの6モジュールのエクスポートとインポートを使用してインポートおよびエクスポート生命維持モジュールに勉強したいと思います。私はバベルの蒸散器を設置しました。しかし、モジュールをエクスポートして別のファイルにインポートしようとすると、次のエラーが表示されます。

(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'構文を使用していなくても、それはまだそれらに慣れていくために良いことをします。私は(私もprototypical継承を避けるため)自分自身で 'class'構文を避けますが、業界ではかなり一般的です。 – 4castle

答えて

3

Babelレポートのように構文エラーがあります。代わりに

export test_module = 

のあなたはとにかく

export const test_module = 

を言わなければならない、ES6モジュールは(ほとんど)時代遅れの古い生命維持スタイルの "モジュール" を作ります。ちょうどあなたがあなたがそれを使用する場合、次に

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

    return height; 
} 

export { getHeight }; 

を好む場合は、

// my-module.js 

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

    return height; 
} 

を書いたり:

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

getHeight(); 

かについてのあなたの暴言については

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

myModule.getHeight(); 

私はそれが何をしなければならないか理解していないあなたの質問。 ES6でクラスが気に入らない場合は、それらを使用しないでください。クラスはES6モジュールとは何の関係もありません。他の値と同様に、クラスをエクスポートしてインポートすることができます。

+0

ありがとう。クラスを使用する\ – henrybbosa

+0

ありがとうしかし..どのように私はどのようなクラスのものなし完全なモジュールを構築することができます – henrybbosa

+0

あなたは私がちょうど1つの関数をエクスポートしたように感じるモジュールの概念を感じることはありませんでした – henrybbosa

関連する問題