LoginSignup
6
4

ECMAとNode.js, importとrequireの違いって何ぞや

Last updated at Posted at 2019-09-05

はじめに

JavaScriptを含む、最近のフロントエンド界隈は日々新しい技術が出ています。
Webpack, Gulp, Vue, React, SCSS...

僕にはわからないことだらけです。

特に、ECMAScriptやNode.js。
そして、それらの中で使われるimport, requireの違いでだいぶ悩んでいました。

これらの違いをここらで自分なりにはっきりさせようと思います。

間違っている点や不明な点があれば、コメントいただけると幸いです!

ECMAScriptとNode.jsの違いは?

ECMAScriptとNode.jsの違いは何でしょうか?

ECMAScriptは、JavaScriptの統一規格
Node.jsはサーバーサイドで実行するための環境

などを指し、違う概念になっています。

IMG_0160.jpg

ECMAScript

ECMAScriptは、Ecma Internationalという機関で統一化されたJavaScriptの標準規格です。

このような標準規格ができた理由は、各ブラウザの仕様がこれまで異なったということです。

Chrome, Safari, IE(う〜ん)などでは、それぞれ内部にJavaScriptを実行するためのエンジンが入っています。
このエンジンがJavaScriptをその場で読み込んで実行をしているわけです。

しかし、これまではどの文法をサポートするか?などが各エンジンがバラバラであったため、ECMAScriptという統一規格ができています。
これによって、JavaScriptの文法の発達が進んだため、ES2015, ES2017のように名前がついています。

Node.js

Node.jsは、ブラウザのフロントエンドで実行されるJavaScriptを、サーバーサイドに持ってきてしまおう! という実行環境やプロジェクト自体を指します。

npm, nodeという名前を聞くとよくQiitaで見ると思います。

Node.jsは、ブラウザでは実行されず、OS上のプロセス・アプリの一つとして実行されます。
ブラウザ向けではない、というのが大事な点だと思います。

importとrequireの違いは?

importとrequireの違いは、ECMAScript(ブラウザ向け), Node.js(サーバーサイド向け)の違いに影響しています。

import

importはECMAScriptで使用されている文法です。
importを使うことで、JavaScriptをモジュールとして使用でき、より直感的かつファイル構成をわかりやすくすることができます。

しかし、各ブラウザごとにimportが使える・使えないなどの文法の対応状況が異なるため、Webpackを噛まして、どんな環境でも使える生JSにする必要があります。

ブラウザなどの、ECMAScriptの文法ということが大切です。

require

requireはNode.jsで使用されている文法です。
Node.js上で使用するだけならば、requireをWebpackで変換する必要はなく、requireのまま使うことができます。

Node.js上で使用される、ということが大切です。

WebpackはNode.jsで、ブラウザ向けにコンパイルしていますが...

よく出る疑問として

「WebpackはNode.js上で webpackコマンドや、npm run buildで使って、ブラウザ用にコンパイルしているけどアレ何?」

というのがあります。

IMG_0161.jpg

webpackはNode.js上で使用されるライブラリです。
しかし、最近のフロントエンド開発では、ブラウザ向けのJSの開発もWebpack上を使用します。
これは、JSを最小化したり、Vueを取り入れたりなど多くの恩恵があるからです。

しかし、実際に実行する環境はブラウザ上で、importが使えない場合があります。
よって、Node.jsでWebpackを動かして、ブラウザ用に変換する、というのが流れになっています。

Node.jsで実行するだけならrequireで書けば、webpackはいらないようです。
(あったほうが嬉しい気もします、まだ完璧な理解ではありません。)

webpackのtargetに'web', 'node'というのがあるのは、実行環境によって、Node.jsのライブラリ(fs, url)などが使える・使えないがあるため、指定する必要があり

「どちらで実行したいのか?」はきちんと意識する必要がありそうです。

6
4
1

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
6
4