commonJSとESの整理

commonJSとは

  • Server Side JSの為に策定された仕様
  • 現在は活発では無い

Server Side JavaScriptの独自実装が乱立するようになった。 これを憂いたとあるエンジニアが、2009年1月末に自分の意見をブログで公開して議論の場となるメーリングリストを設けた。 これがCommonJSの始まりである。 CommonJSでは、

・モジュール機構がない
・標準ライブラリがない
・ウェブサーバーやデータベースとの標準的なインターフェースがない
・パッケージのマネジメントシステムがない

といった、ブラウザ以外でJavaScriptを利用する際に問題となる領域の解決を目指した。 node.jsはもともとCommonJSに準拠していたが、徐々に独自路線を進み、 現在では、Module 1.0とUnit Testing 1.0のみ準拠している。

moduleの使用例

// math.js
exports.add = function(a, b){
  return a + b;
}
// draw.js
module.exports = function(){
  return 'draw';
}
// say.js
module.exports.hello = function(){
  console.log("hello");
}
module.exports.goodbye = function(){
  console.log("goodbye");
}
var math = require('./math');
var draw = require('./draw');
var say = require('./say');
console.log(math.add(1, 3)); // 4
console.log(draw()); // 'draw'
say.hello(); // 'hello'
say.goodbye(); // 'goodbye'

EcmaScriptとは

  • javascriptの言語仕様
  • node.jsはESの各バージョンの一部を準拠している(nodeのversionによってどのESを実装しているかは異なる)

参考文献

[https://scrapbox.io/tasuwo/JavaScript%E3%81%AE_Module_System%E3%81%AE%E6%AD%B4%E5%8F%B2:title]

# CommonJS と ES6の import/export で迷うなら - Qiita

TypeScriptの`--esModuleInterop`は一体何をやっているのか - stone's throw

esModuleInterop オプションの必要性について - Qiita

node.jsとは何か(3) - I am bad at math

Node.js とは何か? - Qiita

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