Documentation
¶
Overview ¶
Package jawsboot provides embedded Bootstrap assets for JaWS applications.
The embedded assets are Bootstrap v5.3.8.
Example ¶
Example wires jawsboot into an HTTP server. It is a compile-checked illustration only: it starts a blocking server, so it has no testable Output and is not executed by "go test".
package main
import (
"embed"
"log/slog"
"net/http"
"sync"
"github.com/linkdata/jaws"
"github.com/linkdata/jaws/jawsboot"
"github.com/linkdata/jaws/lib/bind"
"github.com/linkdata/jaws/lib/templatereloader"
"github.com/linkdata/jaws/lib/ui"
"github.com/linkdata/staticserve"
)
// This example assumes an 'assets' directory:
//
//. assets/
//. static/
//. images/
//. favicon.png
//. ui/
//. index.html
//go:embed assets
var assetsFS embed.FS
func setupJaws(jw *jaws.Jaws, mux *http.ServeMux) (err error) {
mux.Handle("GET /jaws/", jw) // Ensure the JaWS routes are handled
var tmpl jaws.TemplateLookuper
if tmpl, err = templatereloader.New(assetsFS, "assets/ui/*.html", ""); err == nil {
_ = jw.AddTemplateLookuper(tmpl)
// Initialize jawsboot; we will serve the JavaScript and CSS from /static/*.[js|css].
// All files under assets/static will be available under /static. Any favicon loaded
// this way will have its URL available using jw.FaviconURL().
if err = jw.Setup(
mux.Handle, "/static",
jawsboot.Setup,
staticserve.MustNewFS(assetsFS, "assets/static", "images/favicon.png"),
); err == nil {
// Add a route to our index template with a bound variable accessible as '.Dot' in the template
var mu sync.Mutex
var f float64
mux.Handle("GET /", ui.Handler(jw, "index.html", bind.New(&mu, &f)))
}
}
return
}
// Example wires jawsboot into an HTTP server. It is a compile-checked
// illustration only: it starts a blocking server, so it has no testable Output
// and is not executed by "go test".
func main() {
jw, err := jaws.New()
if err == nil {
jw.Logger = slog.Default()
if err = setupJaws(jw, http.DefaultServeMux); err == nil {
// start the JaWS processing loop and the HTTP server
go jw.Serve()
slog.Error(http.ListenAndServe("localhost:8080", nil).Error())
}
}
if err != nil {
panic(err)
}
}
Output:
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Setup ¶
Setup registers embedded Bootstrap static assets under prefix.
It is intended to be passed to jaws.Jaws.Setup. Returned URLs should be included in the page head through jaws.Jaws.GenerateHeadHTML. The prefix may be absolute ("/static"), relative ("static") or empty. The prefix is rooted and cleaned before asset names are joined, so "../static" becomes "/static". The returned URL path and the path component of the registered handler pattern are kept identical in all cases. http.ServeMux pattern syntax in prefix is treated as literal URL path data.
Setup also registers http.NotFoundHandler (404) routes under prefix for the bundled bootstrap *.map sourcemap paths, quietly answering devtools probes for "bootstrap.bundle.min.js.map" and "bootstrap.min.css.map".
The returned URLs are always valid: they are built from clean, slash-rooted paths over content-hashed embedded asset names, so err only ever reflects a failure to walk the embedded filesystem.
Types ¶
This section is empty.