Skip to content

ESM Modules

ESM (ECMAScript Modules) คือมาตรฐานการ import/export module แบบใหม่ใน JavaScript และ Node.js

ข้อดี

  • import/export แบบ native
  • รองรับ tree-shaking
  • ใช้งานกับ TypeScript ได้ดี
  • เหมาะกับโค้ดที่ต้องการความทันสมัยและ interoperable

ตัวอย่างการใช้งาน

ts
// utils.ts
export function sum(a: number, b: number): number {
  return a + b
}

export const PI = 3.14159
ts
// main.ts
import { sum, PI } from './utils.js'

console.log(sum(2, 3)) // 5
console.log(PI) // 3.14159

การ import built-in modules (Node.js) แบบ ESM

ts
import { readFile } from 'node:fs/promises'

const data = await readFile('example.txt', 'utf8')
console.log(data)

CommonJS Modules

CommonJS (CJS) เป็นรูปแบบ module ดั้งเดิมของ Node.js (ใช้ในไฟล์ .js หรือ .cjs) เหมาะกับโค้ด legacy หรือเมื่อต้องการ compatibility กับแพ็กเกจเก่า

ตัวอย่างการใช้งาน

js
// utils.cjs
function sum(a, b) {
  return a + b
}
const PI = 3.14159

module.exports = { sum, PI }
js
// main.cjs
const { sum, PI } = require('./utils.cjs')

console.log(sum(2, 3)) // 5
console.log(PI) // 3.14159

สรุป

  • ถ้าเริ่มโปรเจกต์ใหม่ แนะนำใช้ ESM + TypeScript
  • ถ้าใช้ไลบรารีเก่า หรือมีโค้ด legacy อาจต้องใช้ CommonJS