Backbone.Giraffe is a light and flexible library that extends Backbone.js to new heights. Giraffe's goal is to follow the Backbone philosophy of unopinionated simplicity to provide commonly needed features with few assumptions. It differs from other Backbone libraries like Marionette and Chaplin in its reduced scope and size, and it takes a different approach to the problems of route handling, object lifecycles, event aggregation, and view management.
-
Giraffe.View is a nestable and flexible class that provides lifecycle management and many other useful features. It defaults to Underscore templates and easily supports any form of string templating.
-
Giraffe.App is a special view that helps your views, models, collections, and routers communicate by acting as an event hub. Multiple apps can coexist and teardown is as simple as it gets.
-
Giraffe.Router leverages an app's events to trigger routing events that any object can listen for. It also has reverse routes to allow the construction of URLs using app events and arguments.
-
Giraffe.Model and Giraffe.Collection are thin wrappers that add Giraffe's lifecycle management and app events.
Read the API docs and check out our live examples.
Giraffe was created by the needs of our team as we built Barc. We tried many existing libraries but some did way too much, others added too many layers, and others performed poorly.
Giraffe does not have all the bells and whistles of the larger frameworks. We found the effort to customize them for our needs was more effort than simply building upon Backbone with a minimalist approach. For example, there is no concept of specialized containers like regions or layouts, as any view in Giraffe can act as a parent of one or more child views. Giraffe also has no CollectionView or ItemView, but we are open to suggestions to make Giraffe as useful as possible to Backbone developers who want an extension library with few opinions.
Is this framework for you? It depends. We feel Giraffe adds essential features to make you more productive with Backbone.
-
Routes emit events instead of being tied to functions. This makes it extremely simple for a deeply nested view to act on a route.
-
Reverse routes with arguments provide a way to trigger routes in the application using app events without having to know a URL path.
-
Giraffe.App is a special view that acts as an event hub to help your app communicate and respond to routes, and all Giraffe objects have convenient
appEvents
bindings inspired byBackbone.View#events
. -
Giraffe.View#attachTo(someElement)
allows views to move anywhere on the DOM without clobbering each other's events, and it automatically sets up parent-child relationships for memory management. -
Lifecycle management mitigates memory leaks. It's automatic for nested views and can be used for any object with a
dispose
method viaGiraffe.View#addChild
. -
(A)sync app initialization helps an app reach its ready state. For example, an app may need to wait for asynchronous bootstrap data or a websocket connection before starting.
-
Declarative event handling in markup provides simple one-way binding. (does not try to be Knockout or AngularJS)
backbone.giraffe.js 57.0k ({{VERSION}})
backbone.giraffe.min.js 16.0k
npm install projmate-cli@0.1.0-dev -g
npm install -d
pm run all
Copyright (c) 2013 Barc Inc.
See the file LICENSE for copying permission.