mozilla

Compare Revisions

Securable Modules

Change Revisions

Revision 93400:

Revision 93400 by Petermichaux on

Revision 93401:

Revision 93401 by Petermichaux on

Title:
Securable Modules
Securable Modules
Slug:
CommonJS/Modules/Securable_Modules
CommonJS/Modules/Securable_Modules
Content:

Revision 93400
Revision 93401
t42<code>// ========================================================t42<code>// ========================================================
>==========<br>// source code ------------------------------------>==========<br>// source code ------------------------------------
>------------------<br><br>//<br>// math.js<br>//<br>export.add = >------------------<br><br>//<br>// math.js<br>//<br>export.add = 
>function() {<br>  var sum = arguments[0];<br>  for (var i=1; i&lt>function() {<br>  var sum = arguments[0];<br>  for (var i=1; i&lt
>;arguments.length; i++) {<br>    sum += arguments[i];   }<br>  re>;arguments.length; i++) {<br>    sum += arguments[i];   }<br>  re
>turn sum;<br>};<br><br>//<br>// increment.js<br>//<br>var add = r>turn sum;<br>};<br><br>//<br>// increment.js<br>//<br>var add = r
>equire('math').add;<br>export.increment = function(val) {<br>  ad>equire('math').add;<br>export.increment = function(val) {<br>  ad
>d(val, 1);<br>};<br><br>//<br>// program.js<br>//<br>var inc = re>d(val, 1);<br>};<br><br>//<br>// program.js<br>//<br>var inc = re
>quire('increment').increment;<br>var a = 1;<br>inc(a); // 2<br><b>quire('increment').increment;<br>var a = 1;<br>inc(a); // 2<br><b
>r><br>// ========================================================>r><br>// ========================================================
>==========<br>// browser code in development<br><br>// locked int>==========<br>// browser code in development<br><br>// locked int
>o on of these options<br>//<br>//  1) using a special XHR synchro>o on of these options<br>//<br>//  1) using a special XHR synchro
>nous script loader and    //     less than ideal error messages w>nous script loader and    <br>//     less than ideal error messag
>ith strange line numbering<br>//<br>//  2) edit-compile-load-test>es with strange line numbering<br>//<br>//  2) edit-compile-load-
> cycle using the code below. Also<br>//     strange numbering in >test cycle using the code below. Also<br>//     strange numbering
>error messages that does not match<br>//     source files. Tools > in error messages that does not match<br>//     source files. To
>could make compile automatic but that<br>//     means tools are r>ols could make compile automatic but that<br>//     means tools a
>equired and that is not the case in <br>//     the current browse>re required and that is not the case in <br>//     the current br
>r scripting world.<br><br><br>// ================================>owser scripting world.<br><br><br>// ============================
>==================================<br>// compiled for production >======================================<br>// compiled for product
>in browser<br><br>//<br>// library.js<br>//<br>var require = (fun>ion in browser<br><br>//<br>// library.js<br>//<br>var require = 
>ction() {<br>  <br>  // memoized export objects<br>  var exportOb>(function() {<br>  <br>  // memoized export objects<br>  var expo
>jects = {}<br><br>  // don't want outsider redefining "require" a>rtObjects = {}<br><br>  // don't want outsider redefining "requir
>nd don't want<br>  // to use arguments.callee so name the functio>e" and don't want<br>  // to use arguments.callee so name the fun
>n here.<br>  var require = function(name) {<br>    if (exportsObj>ction here.<br>  var require = function(name) {<br>    if (export
>ect.hasOwnProperty(name)) {<br>      return exportsObject[name];<>sObject.hasOwnProperty(name)) {<br>      return exportsObject[nam
>br>    }<br>    var exports = {};<br>    // memoize before execut>e];<br>    }<br>    var exports = {};<br>    // memoize before ex
>ing module for cyclic dependencies<br>    exportsObject[name] = e>ecuting module for cyclic dependencies<br>    exportsObject[name]
>xports;<br>    modules[name](require, exports);<br>    return exp> = exports;<br>    modules[name](require, exports);<br>    return
>orts;<br>  };<br>  <br>  return require;<br>})();<br><br>var run > exports;<br>  };<br>  <br>  return require;<br>})();<br><br>var 
>= function(name) {<br>  require(name); // doesn't return exports<>run = function(name) {<br>  require(name); // doesn't return expo
>br>};<br><br>var modules = {};<br><br>//<br>// compiledModules.js>rts<br>};<br><br>var modules = {};<br><br>//<br>// compiledModule
><br>//<br>modules["math"] = function(require, exports) {<br>  exp>s.js<br>//<br>modules["math"] = function(require, exports) {<br> 
>ort.add = function() {<br>    var sum = arguments[0];<br>        > export.add = function() {<br>    var sum = arguments[0];<br>    
> for (var i=1; i&lt;arguments.length; i++) {<br>           sum +=> for (var i=1; i&lt;arguments.length; i++) {<br>           sum +=
> arguments[i];<br>      }<br>   return sum;<br>  };<br>};<br><br>> arguments[i];<br>      }<br>   return sum;<br>  };<br>};<br><br>
>modules["increment"] = function(require, exports) {<br>  var add >modules["increment"] = function(require, exports) {<br>  var add 
>= require('math').add;<br>  export.increment = function(val) {<br>= require('math').add;<br>  export.increment = function(val) {<br
>>    add(val, 1);<br>  };<br>};<br><br>modules["program"] = funct>>    add(val, 1);<br>  };<br>};<br><br>modules["program"] = funct
>ion(require, exports) {<br>  var inc = requrie('increment').incre>ion(require, exports) {<br>  var inc = requrie('increment').incre
>ment;<br>  var a = 1;<br>  inc(a); // 2<br>};<br><br>//<br>// htm>ment;<br>  var a = 1;<br>  inc(a); // 2<br>};<br><br>//<br>// htm
>l in document head<br>//<br>&lt;script src="library.js" type="tex>l in document head<br>//<br>&lt;script src="library.js" type="tex
>t/javascript"&gt;&lt;/script&gt;<br>&lt;script src="compiledModul>t/javascript"&gt;&lt;/script&gt;<br>&lt;script src="compiledModul
>es.js" type="text/javascript"&gt;&lt;/script&gt;<br>&lt;script ty>es.js" type="text/javascript"&gt;&lt;/script&gt;<br>&lt;script ty
>pe="text/javascript"&gt;<br>  // You might not use use the window>pe="text/javascript"&gt;<br>  // You might not use use the window
>.onload property<br>  // but rather addEventListener/attachEvent.>.onload property<br>  // but rather addEventListener/attachEvent.
><br>  window.onload = function() {     run("program");   };<br>&l><br>  window.onload = function() {     run("program");   };<br>&l
>t;/script&gt;<br><br></code>>t;/script&gt;<br><br></code>

Back to History