Neo's Playing Morpheus

    @graphistry/falcor-router

    2.10.1 • Public • Published

    Falcor Router

    This is the Graphistry fork of the Falcor Router library.

    This fork has been updated to use RxJS5, which is an order of magnitude faster than RxJS4. This is critical to the performance of our server infrastructure.

    Getting Started

    Let's use the Falcor Router to build a Virtual JSON resource on an app server and host it at /model.json. The JSON resource will contain the following contents:

    {
      "greeting": "Hello World"
    }

    Normally Routers retrieve the data for their Virtual JSON resource from backend data stores or other web services on-demand. However in this simple tutorial the Router will simply return static data for a single key.

    Creating a Virtual JSON Resource with a Falcor Router

    First we create a folder for our application server.

    mkdir falcor-app-server && cd !$
    npm init

    Now we install the Falcor Router.

    npm i falcor-router -S

    Then install express and falcor-express.

    npm i express falcor-express -S

    Support for Restify is also available (including a demo): npm i restify falcor-restify -S—as is support for Hapi: npm i hapi falcor-hapi -S.

    Now we create an index.js file with the following contents:

    // index.js
    var falcorExpress = require('falcor-express');
    var Router = require('falcor-router');
    
    var express = require('express');
    var app = express();
    
    app.use('/model.json', falcorExpress.dataSourceRoute(function (req, res) {
      // create a Virtual JSON resource with single key ("greeting")
      return new Router([
        {
          // match a request for the key "greeting"    
          route: "greeting",
          // respond with a PathValue with the value of "Hello World."
          get: function() {
            return {path:["greeting"], value: "Hello World"};
          }
        }
      ]);
    }));
    
    // statically host all files in current directory
    app.use(express.static(__dirname + '/'));
    
    var server = app.listen(3000);

    Now we run the server, which will listen on port 3000 for requests for /model.json.

    node index.js

    Retrieving Data from the Virtual JSON resource

    Now that we've built a simple virtual JSON document with a single read-only key "greeting", we will create a test web page and retrieve this key from the server.

    Now create an index.html file with the following contents:

    <!-- index.html -->
    <html>
      <head>
        <!-- Do _not_  rely on this URL in production. Use only during development.  -->
        <script src="//netflix.github.io/falcor/build/falcor.browser.js"></script>
        <script>
          var model = new falcor.Model({source: new falcor.HttpDataSource('/model.json') });
          
          // retrieve the "greeting" key from the root of the Virtual JSON resource
          model.
            get("greeting").
            then(function(response) {
              document.write(response.json.greeting);
            });
        </script>
      </head>
      <body>
      </body>
    </html>

    Now visit http://localhost:3000/index.html and you should see the message retrieved from the server:

    Hello World

    More Information

    For an example of a Router built for a Netflix-like application, see this repository.

    For in-depth information on the Falcor Router, see the Router Guide in the Falcor Website.

    For discussion please use Stack Overflow.

    Install

    npm i @graphistry/falcor-router

    DownloadsWeekly Downloads

    261

    Version

    2.10.1

    License

    Apache-2.0

    Unpacked Size

    344 kB

    Total Files

    143

    Last publish

    Collaborators

    • int3h
    • graphistry-deploy
    • lmeyerov