@Retention(value=RUNTIME) @Target(value=TYPE) @Documented @Repeatable(value=JsModule.Container.class) 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.
CssImportCopyright © 2019. All rights reserved.