The itsy bitsy spider crawled up the water spout. Down came the rain, and washed the spider out. Out came the sun, and dried up all the rain, and the itsy bitsy spider went up the spout again
yarn start-anansi./src/index.tsx
This script uses two entry points for client/server.
index.server.tsx
import { useController } from '@data-client/react';
import {
laySpouts,
documentSpout,
dataClientSpout,
prefetchSpout,
routerSpout,
JSONSpout,
appSpout,
} from '@anansi/core/server';
import app from 'app';
import { createRouter } from './routing';
const spouts = prefetchSpout('controller')(
documentSpout({ title: 'anansi' })(
JSONSpout()(
dataClientSpout()(
routerSpout({ useResolveWith: useController, createRouter })(
appSpout(app),
),
),
),
),
);
export default laySpouts(spouts);
index.tsx
import { useController } from '@data-client/react';
import {
floodSpouts,
documentSpout,
dataClientSpout,
routerSpout,
JSONSpout,
appSpout,
} from '@anansi/core';
import app from 'app';
import { createRouter } from './routing';
const appSpout = () => Promise.resolve({ app });
const spouts = documentSpout({ title: 'anansi' })(
JSONSpout()(
dataClientSpout()(
routerSpout({ useResolveWith: useController, createRouter })(
appSpout(app),
),
),
),
);
floodSpouts(spouts);
Anansi can quickly traverse spouts setup by a user.
The server lays the spouts for anansi to travel in. Once delivered to the client, the spouts can be flooded (hydration).
In both cases, we need the route and application data.
import { serve } from '@anansi/core/scripts';
serve('./dist-server/App.js');
Serves static assets. This is typically useful when validating server builds locally; but you typically want to use a dedicated HTTP server for static assets in production.
Proxy requested based on webpack config devConfig. Useful for validating server builds locally. In production it is much more performant to use a separate reverse proxy.