electrode-react-webapp-multipage
v0.0.6
Published
Hapi/Express/Koa plugin that provides a default React web app template
Downloads
2
Maintainers
Readme
Electrode React Webapp Multipage (on development)
This is a Hapi plugin that register a default route for your Webapp to return a bootstrapping React application. With support for webpack dev server integrations.
This repo was forked from electrode react-webapp package
##What has changed? You can use a custom html file inside a path for templating purposes. It's an optional property, so, if you don't override this property, it will use the default one.
Installing
npm install electrode-react-webapp-multipage --save
Usage
Registering with Hapi
You can use this plugin by registering it with your Hapi server.
const reactWebapp = server.register({
register: require("electrode-react-webapp-multipage"),
options: {
pageTitle: "My Awesome React WebApp",
paths: {
"/{args*}": {
view: "index",
htmlFile: "{{MY_SRC_PATH}}", (optional)
content: "<h1>Hello React!</h1>"
}
}
});
Registering with electrode-server
To use this with electrode-server, add to the config you pass to electrode-server
:
const config = {
plugins: {
"electrode-react-webapp-multipage": {
options: {
pageTitle: "My Awesome React WebApp",
paths: {
"/{args*}": {
view: "index",
htmlFile: "{{MY_SRC_PATH}}", (optional)
content: "<h1>Hello React!</h1>"
}
}
}
}
}
require("electrode-server")(config);
Default options
This plugin has some default options but you can override them by setting your own value.
The current defaults are:
{
pageTitle: "Untitled Electrode Web Application",
webpackDev: process.env.WEBPACK_DEV === "true",
renderJS: true,
serverSideRendering: true,
htmlFile: "node_modules/electrode-react-webapp-multipage/lib/index.html",
devServer: {
host: "127.0.0.1",
port: "2992"
},
paths: {},
stats: "dist/server/stats.json"
}
Options
What you can do with the options:
pageTitle
(String)
The value to be shown in the browser's title barwebpackDev
(Boolean)
whether to use webpack-dev-server's URLs for retrieving CSS and JS bundles.serverSideRendering
(Boolean)
Toggle server-side rendering.htmlFile
(String)
Absolute or relative path to the application root html file. It must contains the following placeholders:{{PAGE_TITLE}}
page title.{{WEBAPP_BUNDLES}}
injected<script>
and<link>
tags to load bundled JavaScript and Css{{PREFETCH_BUNDLES}}
<script>
tag containing code that will contains prefetched JavaScript code{{SSR_CONTENT}}
injected content rendered on server side
paths
(Object)
An object of key/value pairs specifying paths within your application with their view and (optionally) initial content for server-side render- path
(Object)
view
(String)
Name of the view to be used for this path requiredcontent
Content to be rendered by the server when server-side rendering is used optional see details
- path
devServer
(Object)
Options for webpack's DevServerhost
(String)
The host that webpack-dev-server runs onport
(String)
The port that webpack-dev-server runs on
Content details
The content you specify for your path can either be a string or a promise returning function.
If it's a string, it's treated as a straight React template to be rendered.
If it's a function, the function should return a promise that resolves an object:
function myContent() {
return Promise.resolve({
status: 200,
html: "<h1>Hello React!</h1>",
prefetch: ""
});
}