This lesson shows what can be learned next as a continuation of this course, and gives a recap on the core concepts: main for pure logic, drivers for side effects, run() to connect main and drivers, sources for read effects, sinks for write effects, and nesting Cycle.js apps to work as components.
So far, we've seen a lot about Cycle.js, but there's still plenty missing in order to build proper and advanced Web apps. We don't usually use JS Bin for real apps and we also don't directly import libraries as scripts in the HTML. We usually use npm packages and a bundler like Browser 5.0 or Webpack.
We haven't yet seen how to build dynamic lists. That's actually an advanced topic in Cycle.js, which is unusual for our framework, but it's still perfectly doable. It's just a matter of learning a pattern. We haven't even mentioned about testing, which is fantastic in Cycle.js because we can benefit a lot from the fact that main and everything inside it is pure.
Let's have a recap. What did we learn? We learned that main is for pure logic and drivers are for side effects. These two are plugged together and looped with Cycle.run. Syncs from the main are write effects and sources coming into the main are read effects. Essentially, we get a clear interphase for IO. Sources are inputs. Syncs are outputs.
Cycle.js can also be nested in the sense that this labeled slider function could have been passed to Cycle.run. The labeled slider's literally a perfectly valid Cycle.js program in itself. Yet, it can be easily embedded inside the main function and work as a component.
In that case, when it's embedded, sources and syncs are not just an interphase for IO effects, but also for any kind of incoming messages and outgoing messages in this hierarchy of nested components.