Upgrade to Pro — share decks privately, control downloads, hide ads and more …

shobon-kun-no-module-hogehoge

mamoida
November 13, 2013

 shobon-kun-no-module-hogehoge

mamoida

November 13, 2013
Tweet

Other Decks in Programming

Transcript

  1. $ node main.js { ArrayBuffer: [Function: ArrayBuffer], Int8Array: { [Function:

    Int8Array] BYTES_PER_ELEMENT: 1 }, Uint8Array: { [Function: Uint8Array] BYTES_PER_ELEMENT: 1 }, Uint8ClampedArray: { [Function: Uint8ClampedArray] BYTES_PER_ELEMENT: 1 }, Int16Array: { [Function: Int16Array] BYTES_PER_ELEMENT: 2 }, Uint16Array: { [Function: Uint16Array] BYTES_PER_ELEMENT: 2 }, Int32Array: { [Function: Int32Array] BYTES_PER_ELEMENT: 4 }, Uint32Array: { [Function: Uint32Array] BYTES_PER_ELEMENT: 4 }, Float32Array: { [Function: Float32Array] BYTES_PER_ELEMENT: 4 }, Float64Array: { [Function: Float64Array] BYTES_PER_ELEMENT: 8 }, ...
  2. var self = (function(root){ console.log(root === this); //false console.log(this.setTimeout); //[Function]

    return this; })(this); console.log(self === this); // false console.log(this.setTimeout); // undefined console.log(setTimeout); // [Function]
  3. (function(root){ console.log(typeof root.module); //undefined console.log(typeof module); //object console.log(typeof root.exports); //undefined

    console.log(typeof exports); //object })(this); console.log(typeof this.module); //undefined console.log(typeof module); //object console.log(typeof root.exports); //undefined console.log(typeof exports); //object
  4. (function(root){ if(typeof exports === 'object'){ module.exports = { some: function(){

    console.log('some'); } }; }else{ root.myModule = { some: function(){ console.log('some'); } }; } })(this);
  5. (function(root){ var myModule = { some: function(){ console.log('some'); } };

    if(typeof exports === 'object'){ module.exports = myModule; }else{ root.myModule = myModule; } })(this);
  6. (function(root){ var myModule = { some: function(){ console.log('some'); } };

    if(typeof root.define === 'function' && define.amd){ define([],myModule); }else if(typeof exports === 'object'){ module.exports = myModule; }else{ root.myModule = myModule; } })(this);
  7. (function(root){ var myModule = { some: function(){ console.log('some'); } };

    if(typeof root.define === 'function' && define.amd){ define(['underscore'],function(_){ return myModule; }); }else if(typeof exports === 'object'){ var underscore = require('underscore'); module.exports = function(underscore){ return myModule; }; }else{ root.myModule = function(_){ return myModule; }; } })(this);
  8. (function(){ require.config({ baseUrl: '/js/', paths : { underscore : 'lib/underscore'

    } }); require(['myModule'],function(myModule){ myModule.some(); }); })();
  9. (function(root,factory){ if(typeof root.define === 'function' && define.amd){ define(['underscore'],factory); }else if(typeof

    exports === 'object'){ module.exports = factory(require('underscore')); }else{ root.myModule = factory(_); } })(this,function(_){ var myModule = { some: function(){ console.log('some'); }, //メソッド追加 isArray : function(obj){ return _.isArray(obj); } }; return myModule; });
  10. // browser with AMD (function(){ require.config({ baseUrl: '/js/', paths :

    { underscore : 'lib/underscore' } }); require(['myModule'],function(myModule){ myModule.some(); // some myModule.isArray({}); // false }); })();