モジュール包装におけるCommon JSとES 6 Moduleの導入と導出問題の詳細
目次 Common JS Common JSモジュール Common JSモジュール導出 Common JSモジュール導入 ES 6 Module ES 6モジュール ES 6 Module導出 命名導出 デフォルトのエクスポート ES 6 Module導入 命名導入 デフォルト導入 ハイブリッド導入 複合書き方 Common JS
Common JSモジュール
Common JSモジュール
の2つの き は に じです.
2:
3:エクスポート はモジュールの ではありません.
Common JSモジュール
1.
の を てください.
ES 6モジュール
の を てください. の
ES 6 Moduleエクスポート
1. のエクスポート2. エクスポート
きエクスポート
モジュールは の でエクスポートできます. つの いがあります.
を ってエクスポートする 、
のエクスポートとは なり、モジュールのデフォルトのエクスポートは つしかありません. えば:
のインポート
の は、これらの (
ネーミング と に、
インポート
:ここの
き
き は では、あるモジュールを してすぐに き す があります. えば、すべてのページやコンポーネントを するための り ファイルなどです.この は な き ができます.
:Common JSとES 6 Moduleの な の :
Webpackの : 、 と の み: :ECMAScript 6 ----Moduleの
たちは に します.
=========Talk is chap、show me the code=======================================================================
Common JSモジュール
CommonJS
では、各ファイルはモジュールであると規定されています.各モジュールはそれぞれの作用領域を有し、それぞれの作用領域の変数は互いに影響しない.// calculator.js
var name = 'calculator.js';
// index.js
var name = 'index.js';
require('./calculator.js');
console.log(name); // index.js
ここでは、calculator.js
を導入してindex.js
中のname
フィールドを上書きしないことが分かります.これは直接
タグでページに するのとは って、
タグを した の の が な であり、 および を う にグローバル を するという があります.CommonJS
モジュールにカプセル すると、モジュール に するスコープが されます.すべての と は だけでアクセスできます. は えません.Common JSモジュール
の2つの き は に じです.
module.exports = {
name: 'calculater',
add: function(a, b) {
return a + b;
}
};
に しいexports.name = 'calculater';
exports.add = function(a, b) {
return a + b;
};
その のメカニズムはexports
をmodule.exports
に けたものであり、module.exports
は には のオブジェクトである.CommonJS
は、 モジュールのヘッダにデフォルトで のコードを したと に できる.var module = {
exports: {},
};
var exports = module.exports;
したがって、exports.add
のための は、module.exports
オブジェクトにadd
を したものに する. 1:exports
に を えないでください.そうでないと になります. えば:exports = {
name: 'calculater'
};
のコードでは、exports
に して け が われており、 しいオブジェクト{name: 'calculater'}
を しているが、module.exports
は の のオブジェクトであるため、name
は されない.2:
module.exports
をexports
と しないでください.exports.add = function(a, b) {
return a + b;
};
module.exports = {
name: 'calculater'
};
のコードは、exports
を してadd
を し、module.exports = { add: function(){...}}
に し、module.exports
を のオブジェクトに り てする.これはadd
を っていたオブジェクトが われ、 に されたのはname
だけである.3:エクスポート はモジュールの ではありません.
module.exports = {
name: 'lcylcy'
};
console.log('end');
module.exports
またはexports
の のコードはそのまま されます.たとえば、 のconsole
は、コンソール で「end
」を ち しますが、 の では、 み り を めるために、 のような き を せずに、module.exports
およびexports
をモジュールの に くべきです.Common JSモジュール
CommonJS
において、require
を いてモジュール を う. えば:// calculator.js
module.exports = {
add: function(a, b) {return a + b;}
};
// index.js
const calculator = require('./calculator.js');
const sum = calculator.add(2, 3);
console.log(sum); // 5
index.js
にcalculator
モジュールを し、add
を び しました.require
モジュールがある 、 つの があります.1.
require
のモジュールは めてロードされます.この はまずモジュールを して、 をエクスポートします.2.require
のモジュールがロードされていた.このモジュールのコードは されません. した を エクスポートします.の を てください.
// calculator.js
console.log('running calculator.js');
module.exports = {
name: 'calculator',
add: function(a, b) {
return a + b;
}
};
// index.js
const add = require('./calculator.js').add;
const sum = add(2, 3);
console.log('sum:', sum);
const moduleName = require('./calculator.js').name;
console.log('end');
コンソールの は の りです.running calculator.js
sum: 5
end
から、 のrequire
はcalculator.js
ですが、console.log('running calculator.js');
は だけ されました.モジュールは、モジュールがロードされたかどうかを するための module
があるloaded
オブジェクトがあります.その はデフォルトではfalse
であり、モジュールが にロードされ、 された にtrue
にセットされ、 に ロードされたときにmodule.loaded
がtrue
であると されたら、モジュールコードは されない.モジュールをロードする もありますが、その されたコンテンツを する はなく、それを することによって、グローバルオブジェクトに するなどの らかの を たしたいだけです.require('./test.js');
また、require
は、この を してモジュールロードパスを に することができます.const moduleNames = ['foo.js', 'bar.js'];
moduleNames.forEach(name => {
require('./' + name);
});
ES 6 ModuleES 6モジュール
require
も ファイルを つのモジュールとして しており、 モジュールは の を しており、 なるのは 、 である.ES6 Module
およびimport
もまた、 キーとしてexport
バージョンに わっている(ES6
のCommonJS
はキーワードに しない).の を てください. の
module
とcalculator.js
をindex.js
を って き えました.// calculator.js
export default {
name: 'calculator',
add: function(a, b) {
return a + b;
}
};
// index.js
import calculator from './calculator.js';
const sum = calculator.add(2, 3);
console.log(sum); // 5
ES6
は、ES6 Module
(ES5
)において、 に しいモードを する. は、ファイルの にECMAScript 5.0
を えるかどうかを することによって、 なモードを することができました.“use strict”
では、 にES6 Module
があるかどうかに わらず、 なモードを しています. “use strict”
であったモジュールまたは なモードを いていないコードをCommonJS
に き える 、この に しなければならない.ES 6 Moduleエクスポート
ES6 Module
において、ES6 Module
コマンドを してモジュールを する.export
には2つの があります.1. のエクスポート2. エクスポート
きエクスポート
モジュールは の でエクスポートできます. つの いがあります.
// 1
export const name = 'calculator';
export const add = function(a, b) { return a + b; };
// 2
const name = 'calculator';
const add = function(a, b) { return a + b; };
export { name, add };
1の き は の とエクスポートを に くことです.2 は に を い、 じexport
で する. つの き の は じです.を ってエクスポートする 、
export
キーワードで の を できます. えば:const name = 'calculator';
const add = function(a, b) { return a + b; };
export { name, add as getSum }; // name getSum
デフォルトのエクスポートのエクスポートとは なり、モジュールのデフォルトのエクスポートは つしかありません. えば:
export default {
name: 'calculator',
add: function(a, b) {
return a + b;
}
};
as
を にexport default
という が されたと できますので、ネーミング のように を う がなく、 を き せばいいです.//
export default 'This is calculator.js';
// class
export default class {...}
//
export default function() {...}
ES 6 Module default
では、ES6 Module
シンタックス モジュールを する.まず、ネーミング きモジュールのロード を ます. の を てください.のインポート
// calculator.js
const name = 'calculator';
const add = function(a, b) { return a + b; };
export { name, add };
// index.js
import { name, add } from './calculator.js';
add(2, 3);
きエクスポートモジュールをロードする は、 に じてインポートします.import
の に された をimport
と にくるむ があり、これらの は された と に する がある.の は、これらの (
{ }
およびname
)が の で されていることに し、これを することはできません.つまり、 されたすべての は み り です.ネーミング と に、
add
キーワードによって された の を することができます. えば:import { name, add as calculateSum } from './calculator.js';
calculateSum(2, 3);
の を する には、 に することもできます. えば:import * as calculator from './calculator.js';
console.log(calculator.add(2, 3));
console.log(calculator.name);
as
を して、 されたすべての を としてimport * as
オブジェクトに することができ、これにより、 の に する が される.インポート
// calculator.js
export default {
name: 'calculator',
add: function(a, b) { return a + b; }
};
// index.js
import myCalculator from './calculator.js';
calculator.add(2, 3);
デフォルトのエクスポートには、デフォルトの が であり、
の に が けられ、この はimport
などの に されてもよく、myCalculator
においてデフォルトで された を す. にはこのように できます.import { default as myCalculator } from './calculator.js';
ハイブリッドインポート// index.js
import React, { Component } from 'react';
ここでのcalculator.js
は、モジュールのデフォルト に し、React
は、その の の つである.:ここの
Component
は、 の に かれていなければなりません. を にしてはいけません.そうでないと、 エラーが されます.き
き は では、あるモジュールを してすぐに き す があります. えば、すべてのページやコンポーネントを するための り ファイルなどです.この は な き ができます.
export { name, add } from './calculator.js';
に しいimport { name, add } from './calculator.js';
export { name, add };
き は 、 モジュール(ここのReact
)によって された で された だけをサポートしています.デフォルトのエクスポートには する がなく、 とエクスポートは のみ です.import calculator from "./calculator.js ";
export default calculator;
calculator.js
と いてはいけません.export { default } from calculator;
しかし、このような は として、デフォルトの ではなく、 された はexport default from './calculator.js'
である.:Common JSとES 6 Moduleの な の :
Webpackの : 、 と の み: :ECMAScript 6 ----Moduleの
たちは に します.
=========Talk is chap、show me the code=======================================================================