3
2

More than 3 years have passed since last update.

JSのモジュール機能とbabelとwebpackと

Last updated at Posted at 2020-04-25

CommonJSとECMAScript

JavaScriptにはサーバサイドのNodeJS(CommonJS)とブラウザのJavaScript(ECMAScript)の二つの言語仕様がある.

二つはモジュール機能(JavaScriptファイルを外部参照する機能)の記述に関して大きな違いがある.

CommonJSのモジュール機能

CommonJSでモジュールを外部参照できるようにするためには,主にmodule.exportsを使う.

abc.js
module.exports = 変数1, 変数2, ...

CommonJSでモジュールを参照するためには,requireを使う.
requireで参照するモジュールのファイル名を指定することで,module.exportsした変数そのものを参照することができる.

const abc = require('abc')

ECMAScriptのモジュール機能

ECMAScriptでモジュールを外部参照できるようにするには,主にexportもしくはexport defaultを使う.

abc.js
export 変数
export default 変数

ECMAScriptでモジュール参照するためには,importを使う.
※import分はトッブレベルでないと使えない(ブロック中では使用不可).

import { 変数 } from 'abc' //export変数を参照する場合
import abc from 'abc' //export default を参照する場合

CommonJSでもimport/exportが使用可能に

package.jsonに"type":"module"の設定を追加することでimport/exportが使用可能.

babel

フロントエンドの実装には,ブラウザ間でHTML,CSS,JSの実装レベルが異なるという大きな問題がある.
この問題に関して新しいJS文法を古いJS文法に変換して古いブラウザでも使えるようにするためのツールがbabelである.
babelの役割は非常に多く,様々なことが実現可能である.

  • 新しいJS文法から古いJS文法への変換
  • NodeJSでECMAScriptのimport/exportの実装
  • ReactなどのJSX文法の変換
  • TSからJSへの変換

babelの設定ファイル

.babelrc, babel.config.js,babel.config.cjs,babel.config.jsonのいずれかの設定ファイルに設定を書くか
webpackの場合,babel-loaderプラグインのoptionsに指定する方法が存在.

webpack

webpackは,JavaScriptアプリケーション用の静的モジュールバンドルである.
webpackがアプリケーションを処理するとき,プロジェクトが必要とする全てのモジュールをマップし,1つ以上のバンドルを生成する依存関係グラフを内部で構築する

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2