experimental-nuclear-js

0.0.1 • Public • Published

This repo contains experimental APIs for building isomorphic applications with Nuclear.js. Current methods include:

  • serialize and deserialize: call each store's (de)serialize method, falling back to toJS/toImmutable when no custom method is implemented

  • createActions: take a list of action names and returns a map of action names to Reflux-style functors

Also extends the Nuclear constructor to support declarative module definitions:

var reactor = new Reactor(
  {
    "moduleA":  {
                  "simpleActions":  [
                                      "doStuff",
                                      "doDifferentStuff",
                                    ],

                  "complexActions": {
                                      "doComplexStuff": function (payload) {
                                                          this.actions.doStuff(payload);

                                                          doSomethingAsync(payload).then(
                                                            this.actions.doDifferentStuff
                                                          );

                                                          return payload;
                                                        },
                                    ],

                  "stores":         {
                                      "stuff":  {
                                                  "serialize":    function (lastValue) {
                                                                    return lastValue.toJSON();
                                                                  },

                                                  "deserialize":  function (serializedValue) {
                                                                    return new Stuff(serializedValue);
                                                                  },

                                                  "initialize":   function () {
                                                                    this.on(
                                                                      this.actions.doStuff,                                                  
                                                                      function (lastValue, newValue) {
                                                                        return lastValue.append(newValue.stuff);
                                                                      }
                                                                    );
                                                                  },
                                                },
                                    },
                
                  "getters"         {
                                      "stuff":  ["stuff"],
                                    },
                },
  }
);

reactor.moduleA.actions.doStuff(
  {
    "stuff":  [
                "banana", 
                "peaches"
              ],
  }
);

As this evolves, some methods (like serialize/deserialize) will migrate upstream to Nuclear. The rest will form a new library that builds upon Nuclear with conventions that make isomorphic applications easier to create.

Readme

Keywords

none

Package Sidebar

Install

npm i experimental-nuclear-js

Weekly Downloads

2

Version

0.0.1

License

none

Last publish

Collaborators

  • appsforartists