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

@gigwalk/backbone-command

v0.1.4

Published

Small Backbone extension for command execution on model changes

Downloads

6

Readme

backbone-command Build Status

Execution of commands upon event triggers. This is build for usage with Backbone and relies on injector.js

Install

You could just download backbone-command.js or backbone-command.min.js from the project root.

We advise you to download it using Bower instead:

bower install backbone-command

This command will automatically download all dependencies. So in this case it takes care of downloading injector.js, jQuery, Backbone and Underscore for you.

Theory

Essentially a command is just a class with one method function. This method gets executed and then the command instance stops to exist. As the command is a single class and can live in a separate file, it can be nicely separated from the rest of your application. It helps keeping your classes decoupled by separating the action from the rest of the system. Say you have a search view. Once the user enters a new search query we should execute a search. The view should not know about how such logic is handled, all it knows is that it has to set the search query on a model. A command can then take care of executing the desired logic. This might mean a backend call and changing the loading property to true on a model for example. Commands are essentially the glue of your application. Your models and views should be completely agnostic, but the command can bring all of these together. A command has access to the injector and therefor usually has access to everything it needs.

Usage

A typical command looks as follows:

var YourCommand = Backbone.Command.extend({
	someModel: 'inject',

	execute: function() {
		//Your logic...
	}
});

In the current setup the router is (ab)used as the central place that connects events to the execution of commands, but also takes care registering injector rules. An injector is automatically instantiated for you when you extend the Backbone.CommandRouter

A very basic extended CommandRouter would look like this:

var ApplicationRouter = Backbone.CommandRouter.extend({
	initialize: function() {
		var someModel = new Backbone.Model();
		this.injector.map('someModel').toValue(someModel);

		this.bindCommand(someModel, "change:someProperty", YourCommand);
	}
});

In this example we register someModel to the injector and map a change of someProperty to the execution of YourCommand

Example implementation

Please refer to Navigator-Injector-Backbone-Command-TodoMVC example for details of how this library can be used.

Support

Feel free to create a new issue for all your questions, issues or feature requests.