Famo.us

Pavel Kurnosov

60 FPS MATTER

How famo.us start:

What is Famo.us?

Famo.us is the only JavaScript framework that includes an open source 3D layout engine fully integrated with a 3D physics animation engine that can render to DOM, Canvas, or WebGL.

What makes Famo.us different?

Famo.us uses matrix3d WebKit transforms on <div> elements with absolute positions rather than using a conventional nested DOM tree in which child elements are positioned relative to their parent elements. Famo.us gains performance by using the hardware-accelerated matrix3d WebKit transforms and avoiding the relatively slow layout flow calculations of a typical HTML5 page.

The Famo.us Render Tree

Famo.us abstracts away DOM management by maintaining a
representation of it in JavaScript called the Render Tree.

Render Tree has two types of nodes

Renderables

Modifiers

such as Surface

Renderables

Renderables are nodes that get drawn to the screen

Famo.us currently supports:

Surface Type Associated Tag
Surface <div>
ImageSurface <img>
InputSurface <input>
CanvasSurface <canvas>
VideoSurface <video>

Modifiers

Node that is capable of modifying the nodes below it in the Render Tree.

Modifiers are responsible for the layout and visibility
of the Render Tree below them

var modifier = new Modifier({
    transform : Transform.translate(100,200)
});

Views

In Famo.us, views are encapsulations of groups of renderables and modifiers that you wish to hide from the master Render Tree.

Deck

EdgeSwapper

GridLayout

HeaderFooterLayout

RenderController

Scrollview

SequentialLayout

And more.....

Physics transitions

Famo.us has a physics engine that can do a lot of game-like simulation, the least of which is to make animations bounce in a realistic-feeling way by using a spring model to guide the transitions.

Events

Famo.us has an EventHandler API that allows a user to broadcast, listen for, pipe to, and subscribe from events. Event handlers can broadcast with the emit or trigger method. Downstream handlers can listen for the event with the on method.

The event library comes with convenience modules for conditionally processing events, including event filtering, mapping, and arbitration.

Layouts

Integration with other frameworks and tools

Roadmap

Famo.us wrapper

Famo.us UI package (jQuery UI, Bootstarap, Ionic)

Famo.us University and documentation

Different integrations with other frameworks

Mixed-mode rendering in Famo.us - rendering simultaneously to DOM, Canvas, and WebGL

SEO for single-webpage apps with Google Angular and Facebook React

How to start?

Generators, integration with different framework, sources :)

A lot of lessons with live coding samples

Collection of links to different resourses about Famo.us

Questions?

Famo.us - 60 FPS MATTER

By Pavel Kurnosov

Famo.us - 60 FPS MATTER

Lightning talk for Framsia meetup. 27.08.2014

  • 1,892