@Retention(value=RUNTIME) @Target(value=TYPE) @Documented @Repeatable(value=JsModule.Container.class) @Inherited public @interface JsModule
Component
class. For adding multiple JavaScript Module files for a single component,
you can use this annotation multiple times.
The JavaScript module files should be located:
frontend
directory in your root project folder in case of
WAR project
META-INF/resources/frontend
directory (inside a project
resources folder) in case of JAR project (if you are using Maven this is
src/main/resources/META-INF/resources/frontend
directory).
It is guaranteed that dependencies will be loaded only once. The files loaded
will be in the same order as the annotations were on the class. However,
loading order is only guaranteed on a class level; Annotations from different
classes may appear in different order, grouped by the annotated class. Also,
files identified by @JsModule
will be loaded before
JavaScript
and
CssImport
.
NOTE: while this annotation is not inherited using the
@Inherited
annotation, the annotations of the possible
parent components or implemented interfaces are read when sending the
dependencies to the browser.
NOTE: Currently all frontend resources are bundled together into one big
bundle. This means, that JavaScript files loaded by one class will be present
on a view constructed by another class. For example, if there are two classes
RootRoute
annotated with @Route("")
, and another class
RouteA
annotated with @Route("route-a")
and
@JsModule("./src/jsmodule.js")
, the jsmodule.js
will be run
on the root route as well.
CssImport
Modifier and Type | Required Element and Description |
---|---|
String |
value
JavaScript module to load before using the annotated
Component in
the browser. |
Modifier and Type | Optional Element and Description |
---|---|
LoadMode |
loadMode
Deprecated.
LoadMode does not function with JavaScript modules.
If the module is local, it is included into the frontend
resource bundle. If the module is external, it is loaded as
deferred due to type=module in scrip tag. |
@Deprecated public abstract LoadMode loadMode
LoadMode
does not function with JavaScript modules.
If the module is local, it is included into the frontend
resource bundle. If the module is external, it is loaded as
deferred due to type=module
in scrip
tag.LoadMode
for the
details.Copyright © 2020. All rights reserved.