TaskIn this single-file lesson, both source files live inside <script type='module'>. Define double(n) and PI inside one inline module (via blob: URL or just inline JS), but since this lesson is a 1-file approximation: declare double and PI inline at top of a module script, then log double(PI) so the console shows 6.28318.
Named exports: importing several things
75 XP6 min
Theory
The named export shape
// utils.js
export const PI = 3.14159;
export function double(n) { return n * 2; }
export function triple(n) { return n * 3; }// app.js
import { PI, double } from "./utils.js";
console.log(double(PI)); // 6.28318Every export keyword in the source file creates a named export. The import { ... } syntax in another file pulls them out by name. Names must match exactly β there's no auto-pluralization, no guessing.
What goes inside the curlies
import { double, triple as triple3x } from "./utils.js"; // rename on import
import { PI as Ο } from "./utils.js"; // any valid identifier
import * as utils from "./utils.js"; // grab everything as a namespaceimport * as utils is the escape hatch when you want every export grouped under one object. Use it sparingly β it defeats tree-shaking (C3-06).
Where the file paths go
Browser module specifiers must be either:
- Relative β
"./utils.js"or"../helpers/format.js". Note the.jsextension β required. - Absolute URL β
"https://cdn.example.com/lib.mjs". - Root-relative β
"/lib/utils.js".
Bare names like "react" only work after a bundler (or import maps β C3-06).
π
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.