JS: Module

By Xah Lee. Date: .

(new in JS: ECMAScript 2015)

xtodo

What is JS module

Using keyword export or import implies module

if your JavaScript code uses the keyword export or import, then it is considered a module.

you must load it as a module, else it's an error.

except the syntax of dynamic import, like this import()

Loading Module

module must be loaded like this

<script type="module">js_code</script>
<script type="module" src="module_specifier"></script>

Module files are loaded only once, even if you specify it many times.

<script type="module" src="module_specifier"></script>
<script type="module" src="module_specifier"></script>

Module files are loaded as deferred by default

Module files are loaded as deferred by default.

Async works for inline file loading of module

when you have

<script async type="module">jscode</script>

the async works. (not if normal js)

Module specifier

module specifier is the path or url for the module.

either url starting with http or / or //, or it must start with ./ for relative path.

Loading Module Require HTTP (Cross Origin Error)

You must run the browser over a http server.

Module runs in strict mode

Module runs in strict mode

Module Top-Level Scope is Lexical

normally, when you have

var x = 3;

the x becomes global property, e.g. window.x

not so with module. they are local variable within the module file.

JavaScript. Module Import Export