How to use JavaScript modules
Export and import names
Named exports make dependencies visible. Relative module specifiers include ./ and commonly include the file extension.
// math.js
export function add(a, b) {
return a + b;
}
export const PI = 3.14159;
// app.js
import { add, PI } from "./math.js";
console.log(add(2, 3), PI);
Run modules in a browser
Use type="module". Modules are deferred and strict automatically; serve files over HTTP because direct file URLs may be restricted.
<script type="module" src="./app.js"></script>
<!-- One simple local server option: -->
<!-- python3 -m http.server 8000 -->
Run ES modules in Node.js
Use the .mjs extension, or set "type": "module" in package.json for .js files.
// package.json
{
"type": "module"
}
// Then run:
// node app.js
Design useful modules
- Export a small public API and keep helpers private
- Avoid circular imports between modules
- Use default exports sparingly when a stable named export is clearer
- Remember that browser imports use URLs while Node resolution also follows package rules