JavaScriptのモジュールの場合:

10795 ワード

Jsを駆動する環境

  • ブラウザ(ex)Chorome)
  • Node.js
  • モジュラシステム


    モジュールは関連オブジェクトの集合です.
    ブラウザ:ES 2015モジュール
    Node.js : CommonJS, AMD...

    どうしたんですか。モジュールを使うのですか?


    コードが複雑になると、これらの変数へのアクセスが競合することを防止できるからです.
    ex)
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <script src ='./a.js'></script>
    <script src ='./b.js'></script>
    <body>
    <script >
        console.log(a);
    </script>
    </body>
    </html>
    a.js
    let a = 100;
    b.js
    let a = 1000;
    この場合、対応する結果はb.js:1 Uncaught SyntaxError: Identifier 'a' has already been declaredと同様の衝突を生じる.

    モジュールの使用方法(ブラウザ)

  • scriptの場合typeをmodoleに設定
  • script内のコンテンツはimportで他のファイルから取得する必要があります.
  • 対応するインポートファイルはexportを設定する必要があります.
  • ex)
    <html>
      <head> 
        <meta charset="utf-8"/>
        <script src="greeting.js"></script> 
      </head>
    <body>
    <script type="module">								//1.
      import {welcome} from './greeting2.js';					//2.
        alert(welcome());
    </script>
    </body>
    </html>
    greeting2.js
    function welcome(){ return 'Hello world'; }
    export {welcome};								//3.

    requireの使い方(Node.js)


    module.出口です.出口ではありません.
    export.js
    module.exports.number = 0;
    
    module.exports.count = function(number){
      this.number++
    }
    
    module.exports.see = function(){
      console.log(this.number);
    }
    
    import.js
    var module = require("./export.js");
    module.count();
    module.see();
    Node.js実行時にインポートします.jsを実行すると、1が出力されます.