node.js patterns of module export / require
DESCRIPTION
2014-02-08 大阪 Node 勉強会 LTTRANSCRIPT
Module patternshttps://github.com/nodejs-osaka/module-patterns
Static methods / Constant
exports.add = function (a, b) { };!
exports.sub = function (a, b) { };
var calc = require(‘./calc’);!
var result = calc.add(10, 20);
Function
module.exports = function (a, b) { }
var add = require(‘./calc’);!
var result = add(10, 20);
Class constructor
function Calc () { }Calc.prototype.add = function (a, b) { };!
module.exports = Calc;
var Calculator = require(‘./calc’);!
var calc = new Calculator();var result = calc.add(10, 20);
Builder / Factory
module.exports = function () { return { add: function (a, b) { } };}
var calcBuilder = require(‘./calc’);!
var calc = calcBuilder();var result = calc.add(10, 20);
Namespaces
exports.calc = { add: function (a, b) { }, sub: function (a, b) { }};
var calc = require(‘./namespace’).calc!
var result = calc.add(10, 20);
Singleton
var caches = {};exports.set = function (key, value) { };exports.get = function (key) { };
var cache = require(‘./cache’);!
var item = cache.get(“item”);
Global declaration
calc = { add: function () { } sub: function () { }}
require(‘./calc’);!
var result = calc.add(10, 20);
Global declaration 2
var calc = { add: function () { }};!
Object.defineProperty( Object.prototype, 'calc', { get: function() { return calc; } });