在Vaadin 10-14中,应该将静态文件(例如CSS,JavaScript和Polymer模板)放在哪里?静态文件(例如图像)如何?
另外,如何在Vaadin中导入这些文件?带有npm的Vaadin 14和带有凉亭的Vaadin 10-13之间有区别吗?
所有路径都相对于项目根目录,例如pom.xml文件在Maven项目中的位置。
pom.xml
使用导入的JavaScript @JsModule使用严格模式。除其他外,这意味着必须在window对象上定义全局变量window.x = ...,而不是just x = ...。
@JsModule
window.x = ...
just x = ...
Vaadin 14 with npm Non-Spring Boot projects (war packaging)
/frontend/my-styles/styles.css
JavaScript and Polymer templates
/frontend/src/my-script.js
Static files, e.g. images
Spring Boot projects (jar packaging)
Add-ons (jar packaging)
/src/main/resources/META-INF/resources/frontend/my-styles/styles.css
/src/main/resources/META-INF/resources/frontend/src/my-script.js
Vaadin 10-13,Vaadin 14在兼容模式下 非spring启动项目(战争包装)
/src/main/webapp/frontend/css/styles.css
Polymer templates, custom-style and dom-module styles
/src/main/webapp/frontend/src/template.html
JavaScript
/src/main/webapp/frontend/js/script.js
Spring Boot projects and add-ons (jar packaging)
/src/main/resources/META-INF/resources/frontend/css/styles.css
/src/main/resources/META-INF/resources/frontend/src/template.html
/src/main/resources/META-INF/resources/frontend/js/script.js
Footnotes
[1]的@JsModule和@CssImport注解也可以用于从包NPM导入。在这种情况下,路径定义为@JsModule("@polymer/paper-input")或@CssImport("some-package/style.css")。引用本地前端目录的路径应带有前缀./
@CssImport
@JsModule("@polymer/paper-input")
@CssImport("some-package/style.css")
[2]所述的@StyleSheet注释也可以在Vaadin 14被用于与NPM。可以使用与V10-V13中相同的路径,包括context://protocol @StyleSheet("context://style.css"),它可以解析相对于Web应用程序上下文路径的路径,就像其他静态文件一样。以这种方式包含的样式可能会导致Web组件出现问题。
@StyleSheet
context://protocol @StyleSheet("context://style.css")
[3]所述的@JavaScript注释也可以在Vaadin 14被用于与NPM。然后应使用V14 /frontend文件夹。
@JavaScript