Just a quick snippet, but this is a much better way of sharing a class between Node.js and the browser. I also like this psuedo Class implementation much better than the Class.js thing, it always seemed a bit ghetto how you had to say.
The ugly way (i was using this before but it felt wrong)
var ServerGame = require('./ServerGame.js').Class;
var myInstance = new ServerGame();
There’s a better way!
/**
* Animal.js
* This is an example I created for us JS.Class
* Mario Gonzalez | http://onedayitwillmake.com
*/
var init = function()
{
return new JS.Class(
{
initialize: function(name) {
this.name = name;
console.log( 'Animal::initialize - ', name);
},
/**
* Cause the Animal to tell you what it likes (Testing JavaDoc)
* @param things What the animal likes
*/
speak: function(things) {
return 'My name is ' + this.name + ' and I like ' + things;
}
});
};
// Handle Node.JS and browser
if (typeof window === 'undefined') {
require('../lib/jsclass/core.js');
Animal = init();
} else {
define(['lib/jsclass/core'], init);
}
Ok, but now to use it in another file!
// Testing JS.Class
// bring it in
require('../client/js/scratchpad/Animal.js');
// use it
var animal = new Animal('Rex');
console.log('Animal', animal.speak("YELLING!!!") ); // Should output: Animal My name is Max and I like BARKING!!!
There you have it – so simple and soooo much cleaner!!