[JS]ESモジュール
11551 ワード
開発されたアプリケーションがますます大きくなると、ファイルを複数のファイルに分割する必要があります.
これらのファイルをモジュールと呼びます.
1つのライブラリは、1つのクラスまたは複数の特定の目的を持つ関数から構成されます.
JAvascriptもますます大きくなり、機能もますます複雑になります.
コミュニティはライブラリを作成し、モジュール化システムを実装します. AMD, CommonJS, UMD これらのモジュールシステムは現在よく使われていません.
ESモジュールシステムは2015年に標準、主要ブラウザまたはノードとして発表される.jsもサポートしています.
モジュールにはファイルが1つしかありません.
モジュールにインジケータ
機能共有.
スクリプトがモジュールであることをブラウザに知らせる.
モジュールは常に厳格モード
宣言されていない変数に値を割り当てるなど、コードにエラーが発生します.
モジュールには独自のスキャンがあります.
モジュール内で定義された変数または関数は、他のスクリプトからアクセスできません.
必要な機能は、グローバル変数の代わりに
ブラウザ環境では、
同じモジュールが複数の場所で使用されている場合は、最初の呼び出しのみが実行されます.
実行後の結果は、取得するモジュールのすべての場所に送信されます.
オブジェクトをエクスポートするモジュールを作成します.
つまり、同じオブジェクトがすべて渡されます.
最初に実行するモジュールの構成が設定されている場合、他のモジュールはこの設定を受け入れることができます.
最初の実行スクリプト
他のスクリプトに格納されている情報も表示できます.
変数、関数、クラスを宣言する場合は、
まず、
モジュールから導入する場合は、
コンストラクションツールは、使用されていない関数を決定します.したがって、最後のバンドルには含まれません.
モジュールは2種類あります.複数の関数を持つライブラリタイプ 1つのオブジェクトのみを宣言するモジュール( モジュールに1つのオブジェクトのみが宣言されている場合、
さらに、
1つのファイルは、通常、
これらのファイルをモジュールと呼びます.
1つのライブラリは、1つのクラスまたは複数の特定の目的を持つ関数から構成されます.
JAvascriptもますます大きくなり、機能もますます複雑になります.
コミュニティはライブラリを作成し、モジュール化システムを実装します.
ESモジュールシステムは2015年に標準、主要ブラウザまたはノードとして発表される.jsもサポートしています.
ESモジュール
モジュールにはファイルが1つしかありません.
モジュールにインジケータ
export
、import
を適用して、他のモジュールを呼び出すことができる.機能共有.
export
インジケータを使用してエクスポートします.export function sayHi(currentUser) {
alert(`hi ${currentUser}`);
}
import
インジケータを使用して読み込みます.//다른파일
import {sayHi} from './hello.js';
`
sayHi(currentUser);
モジュールは特殊なキーワードとともに使用されるため、プロパティを設定できます.スクリプトがモジュールであることをブラウザに知らせる.
<script type='module'>
import {sayHi} from './hello.js';
sayHi();
</script>
モジュールはローカルファイルでは機能しません.file://
プロトコルを使用してページを開くと、import
export
インジケータが動作しません.モジュールのコア機能
厳格なモードで動作
モジュールは常に厳格モード
use strict
にある.宣言されていない変数に値を割り当てるなど、コードにエラーが発生します.
モジュールレベルスキャン
モジュールには独自のスキャンがあります.
モジュール内で定義された変数または関数は、他のスクリプトからアクセスできません.
必要な機能は、グローバル変数の代わりに
hello.js
またはuser.js
を呼び出すことによって得ることができます.ブラウザ環境では、
type=module
によってモジュールを作成しても、独立したスキャンが発生します.<script type='module'>
let user = 'aa'
</script>
<script type='module'>
alert(user); // error
</script>
評価は1回のみ
同じモジュールが複数の場所で使用されている場合は、最初の呼び出しのみが実行されます.
実行後の結果は、取得するモジュールのすべての場所に送信されます.
オブジェクトをエクスポートするモジュールを作成します.
export let user = {
name : 'john',
}
このモジュールを使用するオブジェクトが多くても、評価は一度だけです.user
オブジェクトが作成され、そのオブジェクトがすべてのモジュールに渡されます.つまり、同じオブジェクトがすべて渡されます.
//1.js
import {user} from './user.js';
user.name = 'yuno';
//2.js
import {user} from './user.js';
alert(user.name) // yuno
これらのプロパティを使用すると、モジュール設定を簡略化できます.最初に実行するモジュールの構成が設定されている場合、他のモジュールはこの設定を受け入れることができます.
最初の実行スクリプト
init.js
で設定します.他のスクリプトに格納されている情報も表示できます.
エクスポートと読み込みの方法。
宣言の前にエクスポートを貼り付け
変数、関数、クラスを宣言する場合は、
export
を前に追加できます.export function init() {...}
export let id = 5;
export class User {...}
しゅつりょく
まず、
export
を一度に宣言することができます.function init() {...}
let id = 5;
export {init,id}; // init과 id를 내보냄
import
モジュールから導入する場合は、
import {...}
と記入するだけです.import {init, id} from './user.js'; // init과 id를 가져옵니다.
import *
import * as user from './user.js'; // user.js에서 내보낸 모든것을 가져옵니다.
しかしながら、import *
は、Webパッケージなどの構築ツールの最適化を妨げる可能性がある.コンストラクションツールは、使用されていない関数を決定します.したがって、最後のバンドルには含まれません.
as
as
キーワードを使用してインポートの名前を変更できます.export
でエクスポートする名前を指定することもできます.//user.js
export {sayHi as hi};
// main.js
import {hi as alertHi} from './user.js';
default
モジュールは2種類あります.
class User
)default
は1つのオブジェクトのみが宣言されていることを示します.export default class User {...}
これにより、カッコを使用せずにモジュールをインポートできます.import User from './user.js';
default
モジュールは1つのモジュールしかないので、名称が異なっていてもインポートできます.さらに、
defualt export
のオブジェクトに名前を付ける必要はありません.1つのファイルは、通常、
default export
およびnamed export
のみを使用します.Reference
この問題について([JS]ESモジュール), 我々は、より多くの情報をここで見つけました https://velog.io/@hanganda23/JS-ES모듈テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol