I have only just started learning the details of JavaScript. While reading JavaScript: The Good Parts I found myself asking the question what the difference between a module and a closure is. As far as I can tell they are the same thing. Is that correct or am I missing something?
A module is a design pattern and a closure is a language construct. A module (in the context of the "module pattern") is a closure but all closures are not "modules".
There aren't native modules in JS (though they are coming in ES6). The module pattern is a way of having private scope by wrapping everything in a closure. So yes, the module pattern just creates a closure and returns an object (or assigns to global scope) with its public members.
Well I really prefer creating classes and AMD modules for almost everything. Using CoffeeScript this is just a couple of rows:
class Calculator
prettyText = "Answer is: "
printResult = (result) -> console.log result
add: (addedOne, addedTwo) =>
sum = addedOne + addedTwo
printResult prettyText + sum
calculator = new Calculator();
I've been sub-namespacing conventions of MVCs, too.
new GlobalNS.App.MicroViews.TableRow extends Backbone.View
new GlobalNS.App.Models.TableCell extends Backbone.View
...
Essentially you can namespace to Babylon from existing conventions and build "interaction models" (complex namespaces) for standard digital content types like "lists", etc., from say http://pea.rs