AtomJS - рд▓рдШреБ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдврд╛рдВрдЪрд╛



рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рджреВрд╕рд░рд╛ рднрд╛рдЧ рдПрдЯрдо рдорд┐рдирд┐рдПрдЪрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ ( рдкреВрд░реНрд╡ рдореЗрдВ рдиреИрдиреЛ ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

рдЕрдм рд╕рдм рдХреБрдЫ рдЕрддрд┐рд░реЗрдХ рдХреЛрд░ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рдЬрди - 1 рдХреЗрдмреАред

рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ - рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдкреВрд░реА рдЕрд╕реНрд╡реАрдХреГрддрд┐ред

рдбреЛрдо, рдХреНрд▓рд╛рд╕, рдЕрдЬрд╛рдХреНрд╕, рдЖрджрд┐ред - рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред

рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдкрддрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ: github.com/theshock/atomjs

рдХрдЯреМрддреА рдХреЗ рддрд╣рдд - рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ, рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ





рдЧреАрдерд╣рдм рдкрд░ рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдПрдкрд┐ рд╣реИ



рдХреЛрд░



рдХреЛрд░ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдЫреЛрдЯреА рдЪреАрдЬ рдмрдиреА рд╣реБрдИ рд╣реИ - рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ 1.8.5 рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рддрд░реАрдХреЗ рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдПрдХреНрд╕рдЯреЗрдВрд╢рдиред



atom.extend, atom.implement



atom.extend



рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рд╕реНрд╡рдпрдВ рдкрд░рдорд╛рдгреБ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

atom.implement



рддрддреНрд╡реЛрдВ рдФрд░ рдкрд░рдорд╛рдгреБрдУрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ

рдпреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВред



рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбреЛрдо рд▓рд╛ JQuery рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧ-рдЗрди рд╣реИ, MooTools рдореЗрдВ рдПрдХ рдХреЗ рд╕рдорд╛рди рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧ-рдЗрди рдФрд░ рдЕрдЬрд╛рдХреНрд╕ рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдПрдХ рд╕реЗрдЯ



рдкрд┐рдЫрд▓реЗ рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рдж рд╕реЗ рдбреЛрдо рдкреНрд▓рдЧрдЗрди рдмрд╣реБрдд рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЕрдЬрд╛рдХреНрд╕ рдкреНрд▓рдЧрдЗрди рдХреЛ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ



Atom.Plugins.Class



рдХреНрд▓рд╛рд╕ рдкреНрд▓рдЧрдЗрди MooTools рдореЗрдВ рдПрдХ рдХреА рддрд░рд╣ рдПрдХ рд╕рд╛ рд╣реИ

рд╕рд░рд▓ рд╡рд░реНрдЧ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:

 var Animal = atom.Class({ constructor : function (name) { this.name = name; this.log('Animal.constructor'); }, walk : function () { this.log('Animal.walk'); }, //       _name : 'default', set name (name) { this._name = name || 'anonymous'; }, get name () { return this._name; } }); var Dog = atom.Class(Animal, { constructor : function (name, breed) { this.parent(name); this.breed = breed; this.log('Dog.constructor'); }, bark : function () { return this.log('Dog.bark'); } });
      
      







рд▓реЗрдХрд┐рди рдЖрдк рдПрдХ рд╡рд░реНрдЧ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рд╡рд░реНрдЧ рдХрд╛рд░рдЦрд╛рдирд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕реНрдереИрддрд┐рдХ рдЧреБрдгреЛрдВ рдФрд░ рдЕрд╢реБрджреНрдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:



 var AnimalFactory = atom.Factory({ constructor : function (name, breed) { this.name = name; alert(this.self.staticProperty) } }).extend({ staticProperty : 123 }).mixin(MixClass1, MixClass2); var animal = AnimalFactory.produce(['name', 'breed']);
      
      







рдХрд╛рд░рдЦрд╛рдирд╛ рд╡рд░реНрдЧ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХрд╛рд░рдЦрд╛рдиреЗ рд╕реЗ рд╡рд░реНрдЧ:

 var AnimalFactory = atom.Factory({}); var Animal = AnimalFactory.get(); Animal.factory == AnimalFactory;
      
      







рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рд╛рдорд╛рдиреНрдп рдХрдХреНрд╖рд╛рдПрдВ рдЬреИрд╕реЗ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ



рдПрдХ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдирд╛, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛



рдЗрд╕рд▓рд┐рдП, рдПрдореНрдмреЗрдбреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдЪрд▓реЛ рдЬреЛрдбрд╝рдХрд░ рдорд╛рдирдХ рдРрд░реЗ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╣реАрдВ рд╣реИ, рддреЛ, рд╕реНрдерд▓рд╛рдХреГрддрд┐рдХ, рдорд╛рдирдЪрд┐рддреНрд░, рдФрд░ рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рдХрд░реЗрдВ:



 // safe            atom.implement(Array, 'safe', { forEach : function (fn) { for (var i = 0, l = this.length; i < l; i++) if (i in this) { fn(this[i], i); } return this; }, map : function (fn) { var arr = []; for (var i = 0, l = this.length; i < l; i++) if (i in this) { arr[i] = fn(this[i], i); } return arr; }, //    ,        get isEmpty () { return !this.length; } }); atom.extend(Array, 'safe', { toArray : function () { return Array.prototype.slice.call(elem); } });
      
      







рдПрдХ рдкреВрд░реНрдг рдкрд░рдорд╛рдгреБ рдкреНрд▓рдЧ-рдЗрди рдмрдирд╛рдирд╛



 (function () { //      . //  true     atom.plugins['ajax'] = true; //   atom.ajax(config) var ajax = function (userConfig) { //  - var config = atom.extend({ interval : 0, type : 'plain', method : 'post', url : location.href, onLoad : function(){}, onError : function(){} }, userConfig); //   ,      ? var req = new XMLHttpRequest(); req.onreadystatechange = ajax.onready; req.open(config.method.toUpperCase(), config.url, true); req.send(null); }; //     //        ajax.onready = function (e) { if (req.readyState == 4) { if (req.status != 200) return config.onError(e); var result = req.responseText; if (config.type.toLowerCase() == 'json') { result = JSON.parse(result); } if (config.interval > 0) setTimeout(function () { atom.ajax(config); }, config.interval * 1000); config.onLoad(result); }; }; //    Atom atom.extend({ ajax : ajax }); })();
      
      







рдЕрдм, рдпрджрд┐ рдбреЛрдо-рдкреНрд▓рдЧрдЗрди рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдЕрдЬрд╛рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рддрддреНрд╡ рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдЧрд╛ред



 //    Atom atom.extend({ ajax : ajax }); //     Dom if (atom.plugins['dom']) { //      atom.implement({ ajax : function (config) { config = extend({}, config); //  ,  ,   , //      atom() atom.ajax(extend(config, { //       //      onLoad : (config.onLoad || function (res) { this.get().innerHTML = res; }).bind(this), onError : (config.onError || function(){}).bind(this) })); return this; } }); }
      
      







рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ)



рдкреБрдирд╢реНрдЪ



рдореИрдВ рд╕реБрдЭрд╛рд╡, рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдВ, рдХрдорд┐рдЯ рдХрд░рддрд╛ рд╣реВрдВ) рдореИрдВ рдЦреБрдж рдЗрд╕ рдврд╛рдВрдЪреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдирд╣реАрдВ рдЦреАрдВрдЪреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╕рдореБрджрд╛рдп рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреАред



All Articles