Skip to main content
← ⚑ JavaScript & the browserΒ·Module C3 Β· Lesson 10
TaskInside an inline module: declare const formatDate = (d) => d.toISOString().slice(0,10), const formatTime = (d) => d.toISOString().slice(11,16), and const format = (d) => `${formatDate(d)} ${formatTime(d)}`. Then create const sample = new Date('2026-05-22T13:45:00Z') and log format(sample), formatDate(sample), formatTime(sample).

Build a Small JavaScript Library with ES Module Exports

250 XP12 min
Theory

Putting C3 together

You'll design a single inline module that demonstrates the export shape a real library ships:

  1. A default export β€” the main thing the library is about.
  2. A few named exports β€” secondary utilities.
  3. No side effects β€” nothing runs at import time; just declarations.

Then "consume" the library in the same module by simulating the import + usage flow.

Library design tip

When you ship a library, every named export is a commitment β€” once published, removing or renaming it is a breaking change. Default exports are easier to evolve (you control the importer's local name). Most libraries land on:

  • Default = the main entry point.
  • Named = a curated 3-10 utilities.
  • Anything else stays internal.

The capstone

Build a tiny "format" library: default export is format (takes a Date, returns ISO string); named exports are formatDate (just YYYY-MM-DD) and formatTime (just HH:MM). Then consume all three and log them.

πŸ”’

Sign up to start coding

Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β€” card required, cancel anytime.

Sign up β€” free trial β†’

First 10 lessons in each track are free. No card needed for those.

← PreviousNext lesson β†’

Get one Python or web tip a day β€” by email

Short, hand-written, no spam. Unsubscribe in one click.