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

@underdogio/backbone-requester

v1.2.0

Published

Make server-based requests in Backbone via request

Downloads

6

Readme

backbone-requester Build status

Make server-based requests in Backbone via request

This is based off of backbone-request but forked due to lack of support for updates.

Getting Started

Install the module with: npm install backbone-requester

// Load in our dependencies
var Backbone = require('Backbone');
var BackboneRequester = require('backbone-requester');
var request = require('request');

// Initialize and bind `BackboneRequester` to `Backbone`
var requester = new BackboneRequester(request);
requester.attach(Backbone);

// Create a new model and save it via `request`
var person = new Backbone.Model({name: 'Bark Ruffalo'});
person.save({
  error: function (model, err, options) {
    // Handle error from request (e.g. `ECONNREFUSED`)
  },
  success: function (model, response, options) {
    // Handle response data from request
  }
});
// For error-first callback handling, this can be combined with `backbone-callbacks`

Documentation

backbone-requester exposes BackboneRequester via its module.exports.

new BackboneRequester(request)

Constructor for a new backbone-requester instance

  • request Function - Request library (or drop-in replacement) to use for making requests

backboneRequester.attach(Backbone)

Bind backboneRequester instance to Backbone library. This will override Backbone.sync and replace it with our custom one.

  • Backbone Object - Backbone library to bind to

Returns:

  • Backbone Object - Mutated Backbone library with new .sync

backboneRequester.getSync(Backbone)

Generates custom Backbone.sync method but returns instead of attaching.

  • Backbone Object - Backbone library to grab configuration from

Returns:

  • sync Function - Generated custom Backbone.sync to bind as you see fit

Example: Bind only to Backbone.Model

// Load in our dependencies
var Backbone = require('Backbone');
var BackboneRequester = require('backbone-requester');
var request = require('request');

// Initialize  `BackboneRequester`
var requester = new BackboneRequester(request);

// Create a new model and save it via `request`
Backbone.Model.prototype.sync = requester.getSync();

Replacement Backbone.sync

Once bound via .attach, the new Backbone.sync will use the passed in request library to make all requests. We try to be consistent with Backbone's API but have some one-off differences due to using request.

  • We return a request object over jQuery deferred
    • This means .success/.error methods will not be accessible after the .save/.fetch request
  • We don't support all jQuery options (e.g. beforeSend)
  • error can receive node errors like ECONNREFUSED
    • We do not raise any errors based off of status code
      • If you would like that behavior, please comment on https://github.com/underdogio/backbone-requester/issues/2
  • We don't support non-JSON dataType's
    • If you would like that behavior, please comment on https://github.com/underdogio/backbone-requester/issues/3

Everything else remains the same:

  • We accept url, method, headers, and data as valid input as documented with jQuery
  • emulateHTTP and emulateJSON are supported
  • error function signature is same (model, err, options)
    • model Object - Current model being interacted with
    • err Error - Error from request
    • options Object - Options initially passed into
  • success function signature is same (model, response, options)
    • model Object - Current model being interacted with
    • response Object - Response data from request
    • options Object - Options initially passed into

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint via npm run lint and test via npm test.

License

Copyright (c) 2015 Underdog.io

Licensed under the MIT license.