m-js

0.3.1 • Public • Published

Bower version

Mjs

Mjs (from Model from MVC) is a lightweight data layer for consuming a REST API. This library can be included in a micro framework or you can just simply throw it in your project and it will work. By lightweight it means it supports minimal CRUD interaction.

Version

0.3

How it works

Mjs depends on an adapter. Out of the box it comes with a JSON Ajax adapter. In the future I hope I will offer more adapters out of the box.

Here's a simple example:

M.useAdapter("JSON", ["/api/"]);
 
var book = new M("books", 1); // book is a model
var books = new M("books"); // books is a collection of book models
 
// You can access the models attributes by the attr key
book.attr.title = 'My new book title';
 
// You can modify any attribute
book.attr.author = 'John Doe';
 
// After your are done editing, you can update it!
// at this point a PUT request has been made and the DB is updated via the
// REST API
book.update();

REST

For the above example, suppose we have the book and books model and collection. For these we have the following actions with their urls:

Action Method URL Returns
new M('books', 1) GET /books/:id Model
new M('books') GET /books Collection
book.update() PUT /boosk/:id Model
M.Create() POST /books Model
book.delete() DELETE /books/:id NULL

Methods

Use a loaded adapter

M.useAdapter(adapterName, [,args]);

Search for the book model with the id 1

Note: This method only searches in the cache. If you fetched the book collection then all books are cached so you can access any of them whenever you want in your app.

M.find('books', 1);

Same as find but you search for a collection

M.findAll('books');

Creates a new Model with the given attributes

M.Create('books', { title: 'Some title', author: 'Some author });

Installation

You need bower installed globally:

$ bower install m-js

Adapters

Mjs supports multiple adapters but only one can be used at a time (for now). When you include an adapter into your application, the adapter becomes available via the:

M.adapters

by default Mjs comes with the JSON adapter which is described below.

JSON AJAX Adapter

To intereact with your API via AJAX you ca use the JSON adapter. To use this adapter you simply call this method to let know Mjs that you wish to use this adapter for all your CRUD operations:

M.useAdapter('JSON', ['/api']);

After this method is called you will have access to the adapter via this object:

M.adapter

This adapter is based on the XMLHTTPRequest object. You can call it a wrapper over XHR. It simply implements 3 methods (for now) for interacting with AJAX requests. This adapter can pe accessed via the: The methods offered are:

M.adapter.onDone( callbackFunction(response) );
M.adapter.onFail( callbackFunction() );
M.adapter.ajax(httpMethod, URL, async, data);

Note: The data parameter is optional and used only when sending POST or PUT requests

The callback setters (onDone, onFail) returns the adapter object so you can chain them like you do with $.ajax from jQuery.

In the near future I would like to add a better error suport for the onFail setter and add more setters like:

  • onComplete
  • onAlways
  • beforeSend
  • etc.

Todo's

  • Offer more adapters
  • Mocking
  • Tests

License

MIT

Package Sidebar

Install

npm i m-js

Weekly Downloads

1

Version

0.3.1

License

GNU v2.0

Last publish

Collaborators

  • andrei-cacio