Getting started
Installation
Marble.js requires node v8.0 or higher:
$ npm i @marblejs/core @marblejs/middleware-logger @marblejs/middleware-body rxjsor if you are a hipster:
$ yarn add @marblejs/core @marblejs/middleware-logger @marblejs/middleware-body rxjsBootstrapping
The very basic configuration consists of two steps: HTTP listener definition and HTTP server configuration.
httpListener is the basic starting point of every Marble application. It includes definitions of all middlewares and API effects.
import { httpListener } from '@marblejs/core';
import { logger$ } from '@marblejs/middleware-logger';
import { bodyParser$ } from '@marblejs/middleware-body';
import { api$ } from './api.effects';
const middlewares = [
logger$(),
bodyParser$(),
// ...
];
const effects = [
api$,
// endpoint2$
// ...
];
export default httpListener({ middlewares, effects });And here is our simple "hello world" endpoint.
import { r } from '@marblejs/core';
import { mapTo } from 'rxjs/operators';
export const api$ = r.pipe(
r.matchPath('/'),
r.matchType('GET'),
r.useEffect(req$ => req$.pipe(
mapTo({ body: 'Hello, world!' }),
)));To create Marble app instance, we can use createServer, which is a wrapper around Node.js server creator with much more possibilities and goods inside. When created, it won't automatically start listening to given port and hostname until you call .run() method on it.
import { createServer } from '@marblejs/core';
import httpListener from './http.listener';
export const server = createServer({
port: 1337,
hostname: '127.0.0.1',
httpListener,
});
server.run();We'll use TypeScript in the documentation but you can always write Marble apps in standard JavaScript (and any other language that transpiles to JavaScript).
To test run your server you can install typescript compiler and ts-node:
$ yarn add typescript ts-nodethen add the following script to your package.json file:
"scripts": {
"start": "ts-node server.ts"
}Now go ahead, create server.ts, http.listener.ts, api.effects.ts modules in your project and run your server:
$ yarn startfinally test your "functional" server by visiting http://localhost:1337
If you prefer to have standard Node.js control over server creation, you can also easily hook the app directly into Node.js http.createServer
import { createContext } from '@marblejs/core';
import * as http from 'http';
import httpListener from './http.listener';
const httpServer = httpListener
.run(createContext());
export const server = http
.createServer(httpServer)
.listen(1337, '127.0.0.1');In the next chapter you will learn how to create basic Marble.js endpoints using Effects.
Last updated