I have posted about a "better approach" to load modules too talking about
an early state library that already works like a charm:
http://webreflection.blogspot.com/2012/01/y-u-no-use-libraries-and-add-stuff.html

AMD is good in theory but as far as I can see it fails miserably when it
comes to JS packages.
For JS packages I mean those files where more dependencies are included,
rather than loaded on demand.

Regardless the "Y U NO" funny name I chose for my tiny library ( it fits in
1Kb once minzipped ) there are best parts from all other proposals, except
the sandboxed nature which is not implemented for browsers right now, but
that can be easily implemented in both CommonJS and AMD logic.

The semantic API is also a plus, I don't think I need to explain what are
arguments for ... example

yuno.use(
  // multiple requires allowed
  "core",
  "namespace.Generic",
  "other.Whatever",
  "myNMSP"
).and(function (
  // arguments passed as it is for AMD
  core, Generic, Whatever, myNMSP
) {
  // add reflects Object.defineProperty method
  yuno.add(myNMSP, "moduleName", {value: function () {
    // cool stuff here
  }});

  // since "and()" is fired via yuno object
  // old code can be simply used as well
  // so this is possible too
  myNMSP.moduleName = ...

});

// if the module has no dependencies
// we can either juno.add() to define
// the module or simply
// myNMSP = .... whatever ...

The main difference from CommonJS world is that the module could receive
already defined namespaces in its context
The main difference from AMD world is that module define explicitly what it
is about, rather than export.
This makes scalability with pre-compiled JS packages possible, something I
am struggling right now with current implementations: synchronous in
CommonJS require implemented via node, and not easy to understand runtime
with AMD proposal.

If AMD is able to solve this problem too, well ... I will change "yuno"
accordingly to make it AMD like ... right now it loads as much as possible
in parallel for browsers, and it can be easily implemented for node.js too
( as I have said, it's an early stage )

Best Regards
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to