burger
Version:
A lightweight turbolinks friendly JavaScript library
74 lines (49 loc) • 1.87 kB
Markdown
# Burger.js
__Work in progress...__
A light-weight JavaScript component library meant to be awesome with Turbolinks.
Has hard dependencies on both jQuery and lodash.
```
npm install burger
gem install burger
```
## What I'm going on about, friend
1. Rails template rendering is very powerful
2. Paired with Turbolinks it is a very snappy experience
3. Sometimes vanilla jQuery isn't enough, but Backbone/React/Angular/Ember is overkill
4. Not intended to be a full framework, just a library for small pieces of JavaScript behaviour
## Looking for features, guy?
- ES6/Coffeescript class based component declaration
- Data syncing with data-tags
- Simple two-way binding
- Some other crap
## Some things to get working
- __Light__ template binding
- more operations for dealing with children
- Some other crap
## Example
```erb
<div data-burger="MyComponent" data-user=<%= current_user.to_json %>>...</div>
```
```coffee
class MyComponent extends Burger.Component
@register()
constructor: (el) ->
super(el)
@data.user # user data as json
# bind to updating user.first_name
@data.bind 'user.first_name', (value) ->
# do something with updated value
@data.set('user.first_name', 'Gabe')
@emit('someEventToAllOtherComponents', 42)
@on 'someEventFromAnotherComponent', (event, something) ->
# do something with something
@children # all components which are lower in hierarchy
# returns an array of all child BrewhouseComponent
@children.where(BrewhouseComponent)
# returns an array of all child components where data-cool-dude is 'Chuck'
@children.where(coolDude: 'Chuck')
# returns the first found child component where data-can-code is 'Chan'
# and then bind to changes in puns
@children.find(canCode: 'Chan').data.bind 'puns', (pun) ->
# do something with pun
```