Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8909

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

$
0
0

CommonJSとECMAScript

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

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

CommonJSのモジュール機能

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

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

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

constabc=require('abc')

ECMAScriptのモジュール機能

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

abc.js
export変数exportdefault変数

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

import{変数}from'abc'//export変数を参照する場合importabcfrom'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つ以上のバンドルを生成する依存関係グラフを内部で構築する


Viewing all articles
Browse latest Browse all 8909

Trending Articles