CommonJS และ ESM คืออะไร? และต่างกันอย่างไร?
หลายๆ คนมักจะงงๆ และสับสนระหว่างการใช้ import หรือการใช้ require ซึ่งจริงๆ มันก็คือการเปรียบเทียบระหว่าง CommonJS และ ESM นั่นเอง
CommonJS คืออะไร?
CommonJS เป็น standard module ที่มาพร้อมกับ Node.js ตั้งแต่เริ่มต้น ตัว CommonJS จะใช้หลักๆ ที่ฝั่ง Server ร่วมกับ Node.js ตัวแปลที่สามารถใช้ใน CommonJS ได้ ก็เช่น dirname , filename และก็ NODE_PATH อะไรพวกนั้น
การ import module จะมีรูปแบบแบบนี้
const fs = require('fs')const express = require('express')
const myModule = require('./myModule')และส่วนการ export ก็จะเป็นแบบนี้
function hello() { console.log('hello')}
// แบบ defaultmodule.exports = // แบบ named module.exports.hello = hello
// หรือmodule.exports = { hello }exports.hello = helloไฟล์ package.json ถ้าเป็น CommonJS เราจะระบุ type เป็น commonjs หรือไม่ต้องใส่ (default)
{ "name": "my-package.json", "version": "1.0.0", "type": "commonjs"}ชื่อไฟล์ จะเป็น .js ธรรมดา หรือ .cjs
ESM คืออะไร?
ESM หรือ ES Modules หรือ EcmaScript Modules
การ import แบบ ES Modules
import fs from 'fs'import { someModule } from './myModule'การ export ก็จะเป็นแบบนี้
// defaultexport default name
// namedexport nameไฟล์ package.json ใน ES Modules เราจะต้องระบุ type เป็น module แบบนี้
{ "name": "my-package.json", "version": "1.0.0", "type": "module"}ชื่อไฟล์จะเป็น .mjs
Happy Coding ❤️
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust