Skip to content

Instantly share code, notes, and snippets.

@asciidisco
Created October 31, 2012 11:26
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save asciidisco/3986542 to your computer and use it in GitHub Desktop.
Save asciidisco/3986542 to your computer and use it in GitHub Desktop.
PubSub with requirejs & backbone
// PubSub impl. with require.js & backbone.js
// events.js
define(['underscore', 'backbone'], function (_, Backbone) {
'use strict';
var events = {};
_.extend(events, Backbone.Events);
return events;
});
// filea.js
define(['events'], function (events) {
'use strict';
events.on('my:event', function (message) {
console.log('Received message: ', message);
});
});
// fileb.js
define(['filea', 'events'], function (filea, events) {
'use strict';
events.trigger('my:event', 'My Message');
});
@asciidisco
Copy link
Author

I try to avoid globals as much as possible, so I don´t have a javascript MyAppName global in my current projects.

The application where I use this right now consists of a few modules/widgets, so i go with a naming scheme like:
shell MyWdget:Emitter:operation
For example: shell Comments:Comment:add, when a new comment has been added to the collection of the comments widget.

@asciidisco
Copy link
Author

Whoops, this javascriptand shell things shouldn´t be there, copy & pasten errors...

@mwmwmw
Copy link

mwmwmw commented Jun 26, 2014

This works extremely well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment