Skip to content

Kiwi is an MVC framework built on top of jQuery that makes it dead easy to write tidy, short javascript

Notifications You must be signed in to change notification settings

maxthelion/kiwi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 

Repository files navigation

Kiwi

Kiwi likes HTTP. Kiwi likes REST. Kiwi doesn’t like it when you have to do tedious things like writing down url’s to get data from your server.

Models map to Resources

We can define a couple of models

$m('Post', {
    resource: 'posts',
    has: {'comments':'Comment'}
  })

$m('Comment', {resource: 'comments'})

So now we can say, in a controller

$m.Post.find('all', this.publish)

or

$m.Post.find(1).comments.find('all', this.publish)

or perhaps

$m.Post.find(1).comments.find(12).destroy(this.publish)

The http requests that get fired are, respectively:

http://domain.com/posts (GET)
http://domain.com/posts/1/comments (GET)
http://domain.com/posts/1/comments/12 (DELETE)

HTTP error codes rule

If our server returns a different status code for each server error (or error class), we can easily react differently in the front end:

In a view:

$v('CommentList', {
  listeners: {
    '.more click': {action: 'Comments.get', on_error: 'errors'}
  },
  errors: {
    404: function(){
      alert("Sorry, not found!")
    },
    403: function(status_code, message){
      alert(message)
    }
  }
})

We can also define a catch all error handler in case none of them are defined in our view:

$k.options.global_error_handler.base = function(){
  alert("You got some random error!")
}

Please fork if you like this

Kiwi is good for this and other things. It can be improved in many ways, and I would love some help :)

Check out the official docs at:

robertothais.com/kiwi_docs

About

Kiwi is an MVC framework built on top of jQuery that makes it dead easy to write tidy, short javascript

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published