Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/complate/complate-spring
Server-Side Rendering of JSX based views in Spring MVC
https://github.com/complate/complate-spring
java jsx spring-boot spring-framework spring-mvc template-engine
Last synced: 3 months ago
JSON representation
Server-Side Rendering of JSX based views in Spring MVC
- Host: GitHub
- URL: https://github.com/complate/complate-spring
- Owner: complate
- License: apache-2.0
- Created: 2019-10-10T18:49:09.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-04-08T07:21:40.000Z (9 months ago)
- Last Synced: 2024-04-08T08:35:00.480Z (9 months ago)
- Topics: java, jsx, spring-boot, spring-framework, spring-mvc, template-engine
- Language: Java
- Homepage: https://complate.github.io
- Size: 343 KB
- Stars: 8
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# complate-spring
*- Server-Side Rendering of JSX based views in Spring MVC*[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.complate/complate-spring-mvc/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.complate/complate-spring-mvc)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
[![Open Issues](https://img.shields.io/github/issues/complate/complate-spring.svg)](https://github.com/complate/complate-spring/issues)
[![Build Status](https://github.com/complate/complate-spring/actions/workflows/main.yml/badge.svg)](https://github.com/complate/complate-spring/actions/workflows/main.yml)
[![Code Coverage](https://codecov.io/gh/complate/complate-spring/branch/main/graph/badge.svg)](https://codecov.io/gh/complate/complate-spring)[complate](https://complate.org) adapter that can be used in
[Spring MVC](https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html)
for Server-Side rendering JSX based views.## Quick Start
Download the jar through Maven:
```xml
org.complate
complate-spring-mvc
1.0.0```
Additionally you need to declare a second dependency to your desired complate
engine (Graal, Nashorn, ...).```xml
org.complate
complate-graal
1.0.0```
To configure the relevant parts within your Spring Boot application you need to
add a configuration class like the one shown below.```java
@Configuration
public class ComplateConfiguration {@Bean
public ComplateSource complateSource(
@Value("classpath:/templates/complate/bundle.js") Resource resource) {
/*
* Note that you have to make sure that the `/templates/complate/bundle.js`
* file exists within your classpath on runtime and that this file exports
* a function named `render` by default that has a matching signature:
*
* ```
* export default function render(view, params, stream) {
* ...
* }
* ```
*
* Within this function you can use a complate Renderer to render JSX
* based views. Because you then need to transpile your JavaScript code
* you can use faucet or any other bundler that has support for
* transpiling *.jsx files.
*/
return new ResourceComplateSource(resource);
}@Bean
public ComplateRenderer complateRenderer(ComplateSource source) {
/*
* Note that it's possible to add global bindings or customize other
* options via the builder for the GraalComplateRenderer.
*
* Because `GraalComplateRenderer` only evaluates the given `ComplateSource`
* on instantiation changes made to this source afterwards will not be
* picked up. If you want to re-evaluate the `ComplateSource` on every call
* to `render` you can wrap the `GraalComplateRenderer` within an
* `ComplateReEvaluatingRenderer`.
*
* If you encounter problems that may be related with the multi threaded
* nature of a Spring web application you can wrap the `GraalComplateRenderer`
* (or `ComplateReEvaluatingRenderer`) within an `ComplateThreadLocalRenderer`.
* This will create an instance that is exclusively used within a thread.
*
* If you do not want to use the Graal base renderer for the time being
* there is a `NashornComplateRenderer`, too. Note that this will not work
* with a more recent JDK because Nashorn was removed.
*/
return new GraalComplateRenderer.of(source).build();
}@Bean
public ComplateViewResolver complateViewResolver(ComplateRenderer renderer) {
return new ComplateViewResolver(renderer);
}
}
```If you want to use the latest unstable version `1.0.1-SNAPSHOT` you need to
configure Sonatype's OSS Nexus as snapshot repository:```xml
ossrh
Sonatype OSS Snapshot Repository
https://oss.sonatype.org/content/repositories/snapshots```
## Release History
See [CHANGELOG.md](./CHANGELOG.md)
## Code of Conduct
[Contributor Code of Conduct](./CODE_OF_CONDUCT.md). By participating in this
project you agree to abide by its terms.## License
complate-spring is Open Source software released under the
[Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0.html).