TGViewer
Frontend Developer Frontend Developer @frontenddevelopernews · 182 subscribers
Post #4 701
Всем привет!
Сегодня разберём
одну из самых частых тем, которую разработчики скипают при изучении, а потом на собесах хлопают глазками, когда их спрашивают:

“В чём же разница между CommonJS и ES Modules?”

Самое обидное — ведь мы
сталкиваемся с этим каждый день на практике когда пишем код, но часто относимся по принципу “работает — и ладно, потом разберусь…”

⸻

Погнали! Первый пост: Модули в JavaScript

На первый взгляд может показаться: ну что тут сложного?
Все знают про npm, установку пакетов, зависимости… Но давайте копнём глубже — в историю.

⸻

1995 — появился JavaScript

1997 — он был стандартизирован как ECMAScript

До 2009 года разработчики
писали JS только для браузеров, подключая скрипты через <script> и надеясь, что всё загрузится в нужном порядке.
Чтобы не загадить глобальный scope, изобретались всякие костыли:
IIFE (immediately invoked function expressions), namespace-объекты и прочее веселье.

Поддерживать такой код было больно. Структуры как таковой не было.

⸻

2009 — появляется CommonJS (первое имя — ServerJS)

В это время встает логичный вопрос:

Как подключать модули? Как делиться кодом между файлами? Как изолировать зависимости?

На сцену выходит CommonJS с его:
•
require() — для импорта
• module
.exports — для экспорта

(Я же говорила, что все просто,
по-любому видели такой синтаксис, но просто не знали возможно что это CommonJS 😂)

И тут же появляется
Node.js, который становится успешной реализацией CommonJS.

⸻

2010 — выходит npm, и CommonJS становится стандартом де-факто.

⸻

Но не всё было идеально.
require() — это обычная функция, которая может принимать не только строку, и невозможно заранее определить зависимости, не исполнив код.
А то, что экспортируется через
module.exports, недоступно в локальной области — неудобно!

⸻

2015 — JavaScript получает собственную систему модулей:

ES Modules

Теперь у нас есть:
•
import и export (это уж точно юзаем ежедневно)
• Импорт происходит
до выполнения кода — это ускоряет разработку и упрощает сборку.

⸻

Как вам такой исторический экскурс?
Стало ли понятнее, откуда ноги растут у
import и require?
Пишите в комментариях — интересно узнать, было ли что-то новое для вас!

P.S. По мне понимание базовых знаний — это фундамент, без которого новые технологии превращаются в хаос, а рост в профессии становится невозможным.
  • 👍 17
  • 👨‍💻 3
  • ❤ 2
  • 🤡 1
More from @frontenddevelopernews
  1. Jan 16, 2026🤣🤣🤣
  2. Jan 13, 2026Выпуск №509. Никита Дубко и Вадим Макеев про антивебные API для веба, как LLM и помогает,…
  3. Jan 13, 2026Всем привет! Сегодня прослушала подкаст «Веб-стандарты» #509 и узнала для себя несколько н…
  4. Dec 23, 2025🎄 Advent of JavaScript https://adventjs.dev/ Что это такое: * 24 дня — 24 задачи на JavaS…
  5. Dec 9, 2025💡 Идеальный программист Навыки, которые присущи идеальному разработчику! 😍 Спустя долгое…
  6. Dec 5, 2025Всем привет! Наткнулась в интернете на статью, где автор делится вопросами, которые ему за…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →