npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

m-js

v0.3.1

Published

Mjs (M from Model from MVC) is a lightweight data layer for consuming a REST API

Downloads

3

Readme

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