leaflet-map-server-component
Version:
A leaflet map server component
43 lines (35 loc) • 1.38 kB
JavaScript
var components = require("server-components");
var componentsStatic = require("server-components-static");
var send = require("send");
require("./src/index.js");
var express = require("express");
var app = express();
var html = `
<html>
<head></head>
<body>
<leaflet-map lat="41.3851" long="2.1734" zoom="12">
<leaflet-marker lat="41.4036" long="2.1744"></leaflet-marker>
<leaflet-marker lat="41.4225" long="2.1186"></leaflet-marker>
<leaflet-marker lat="41.3640" long="2.1675"></leaflet-marker>
</leaflet-map>
</body>
</html>
`;
// Do an initial render before requests, to check whether it works
components.renderPage(html).then(() => {
console.log("Initial render successful");
}).catch((err) => {
console.error("Error on initial render", err);
});
// Start a server rendering on demand
app.get('/', (req, res) => components.renderPage(html)
.then((output) => res.send(output))
.catch((err) => res.status(500).send(`Failed:<br/>${err}`)));
// TODO: Turn this into standalone express middleware.
app.get(/\/components\/([^\/]+)\/(.+)/, (req, res) => {
var filePath = componentsStatic.getPath(req.params[0], req.params[1]);
send(req, filePath).pipe(res);
});
app.use(express.static('.'));
app.listen(3000, () => console.log("Server listening on 3000"));