You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by Steinar Bang <sb...@dod.no> on 2018/06/26 17:43:14 UTC

TIP: Sample application for delivering react.js from karaf

If someone wants to deliver a react.js application from a DS web
whiteboard servlet component in karaf, here's a little project to
copy/paste from:
 https://github.com/steinarb/frontend-karaf-demo

The react.js application in src/main/frontend/ is webpack'd into a
bundle.js that's included as a resource in the OSGi bundle.  Another
resource is an index.xhtml file that references the bundle.js file.

The servlet ReactServlet serves the index.xhtml and bundle.js files from
resources loaded from the classpath, from the path /frontend-karaf-demo

The react.js application is turned into a bundle.js file using the
frontend-maven-plugin (and requires no local node installation).

In addition, there's a servlet listening for HTTP POST requests on the
path /frontend-karaf-demo/api/increment and returning an incremented
version of the POSTed object (this tests both overlapping paths for
whiteboard servlets (which works!) and serves as a testbed for
redux-saga and axios).  No state in this servlet: it just increments
what it receives.

The react.js features the frontend application uses/demonstrates, are:
 - react.js to render the application's page
 - redux to hold the application's state
 - redux-saga and axios for REST API communication and asynchronous
   update of the application's state
 - react-router v4 to route between different pages (however this
   requires hardcoding the ReactServlet's path into the react app, and
   requires the ReactServlet to return the top level index.html from all
   routes)
 - react-bootstrap and bootstrap v3 to style the application in a
   responsive way

Enjoy! :-)

- Steinar