You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ES6 makes it easy to declare external dependencies with import, but
in order to avoid blocking rendering, HTML needs a way to import
modules only in the context of asynchronously loaded code.
The module tag not only makes it convenient to import modules
asynchronously, it improves the overall web programming model by
moving all JS development into modules. The slogan to live by is:
<module> is a better <script>
In other words, all code -- even top level or bootstrapping code --
should live within modules. For convenience, top-level modules that
are only executed to kick off an application don't need to be given
names. But they still have the benefits of modules:
they can declaratively import from other modules
they're defined in a nested scope, making top-level IIFE
boilerplate a thing of the past
they're implicitly strict, eliminating some of the most egregious
misfeatures (e.g., with) and interoperability hazards (e.g.,
block-local function declarations) of legacy JS
To understand the design and how you might build apps with the
module tag, see the explainer document.