Sausage.js - рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп

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

рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдпрд╣ рдХреЛрдб рдЪрд╛рд╣рд┐рдП:
var ctx = document.querySelectorAll('canvas')[0].getContext('2d'); ctx.fillStyle = '#eee'; ctx.strokeStyle = 'blue'; ctx.beginPath(); ctx.moveTo(10, 10) ctx.lineTo(100, 10) ctx.lineTo(100, 100) ctx.lineTo(10, 100) ctx.lineTo(10, 10) ctx.closePath() ctx.stroke() ctx.fill(); 

рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдмрджрд▓реЛ:
 ctx .fillStyle('#eee') .strokeStyle('blue') .beginPath() .moveTo(10, 10) .lineTo(100, 10) .lineTo(100, 100) .lineTo(10, 100) .lineTo(10, 10) .closePath() .stroke() .fill(); 

Sausage.js - 1268 рдмрд╛рдЗрдЯреНрд╕ (рдЬрд▓реНрдж рд╣реА рдПрдХ рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рд╕реЗ рдХрдо рд╣реЛрдЧрд╛), рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░ рд░рд╣рд╛ рд╣реИред
"рд▓реНрдпреВрдХ, __noSuchMethod__ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ" - рдФрд░ рд╕рднреА рдЪреАрдЬреЗрдВ, рдЖрдк рдХрд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкреНрд░рд╛рдЧреИрддрд┐рд╣рд╛рд╕рд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рд╕рднреА рдЬреЛ рдХреИрдирд╡рд╕ рдХреЗ рдкреНрд░рддрд┐ рдЙрджрд╛рд╕реАрди рдирд╣реАрдВ рд╣реИрдВ, рдХреЙрд▓ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдФрд░ рд▓рд┐рд╕реНрдк рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреИрдЯ рдХреЗ рддрд╣рдд рдкреВрдЫрддрд╛ рд╣реВрдВ


рдХреНрдпреЛрдВ рд╕реЙрд╕реЗрдЬ рдФрд░ рд▓рд┐рд╕реНрдк рдХрд╛ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реИ?


рдпрд╣ рдХреЛрдб (рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдкрд╣рд▓реЗ рдмреНрд▓реЙрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ Sausage.js рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
 //     (function(getContext, querySelectorAll, fillStyle, strokeStyle, beginPath, moveTo, lineTo, closePath, stroke, fill){ var canvasContext = $$(document)(querySelectorAll, 'canvas')(0)(getContext, '2d')(); $$(canvasContext, {fixedContext: true}) (fillStyle, '#eee') (strokeStyle, 'blue') (beginPath) (moveTo, 10, 10) (lineTo, 100, 10) (lineTo, 100, 100) (lineTo, 10, 100) (lineTo, 10, 10) (closePath) (stroke) (fill) (); }('getContext', 'querySelectorAll', 'fillStyle', 'strokeStyle', 'beginPath', 'moveTo', 'lineTo', 'closePath', 'stroke', 'fill')); 

рдРрд╕реА рдЬрдВрдЬреАрд░реЗрдВ рд╕реЙрд╕реЗрдЬ рдХреА рддрд░рд╣ рд╣реЛрддреА рд╣реИрдВ - рдЗрд╕реАрд▓рд┐рдП рд╕реЙрд╕реЗрдЬ.рдЬреЗрдПрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рдХреЛрдИ рд▓рд┐рд╕реНрдк рдирд╣реАрдВ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкреНрд░реЗрдореА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреЛрд╖реНрдардХреЛрдВ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░реЗрдВрдЧреЗ :)

__NoSuchMethod__ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХреНрдпреЛрдВ рдирд╣реАрдВ?


рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рд╕рдВрджрд░реНрдн рдмрджрд▓рд╛, рддреЛ рдореБрдЭреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ - рдпрд╣ рдорд╣рдВрдЧрд╛ рдФрд░ рд▓рдВрдмрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ (рдореИрдВ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдХрд░реВрдВрдЧрд╛), рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдЪреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рди рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛ред

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВрдиреЗ __noSuchMethod__ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛рдИ рдереА, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╕рд╣реА рд╣реЛрдЧрд╛ред рдФрд░ рд╕реЙрд╕реЗрдЬ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдирд╛рдо рдЕрдм рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдирд╛ рдЕрд░реНрде рдЦреЛ рдЪреБрдХрд╛ рд╣реИред

__NoSuchMethod__ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд┐рд╕реА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рдореЗрдВ рд╕реЙрд╕реЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 $$(canvasContext, {fixedContext: true}) (fillStyle, '#eee') (strokeStyle, 'blue') .beginPath() (moveTo, 10, 10) (lineTo, 100, 10) .lineTo(100, 100) (lineTo, 10, 100) (lineTo, 10, 10) (closePath) .stroke() .fill() (); 


рд╕реЙрд╕реЗрдЬ.рдЬреЗрдПрд╕ рдЙрджрд╛рд╣рд░рдг


рдЙрджрд╛рд╣рд░рдг 1. рд╕рдВрджрд░реНрдн рдХреЛ рдмрджрд▓рдирд╛

 context = {'foo': {'bar': '100500'}, 'bar': '888', 'zoo': /./}; //     {'foo': {'bar': '100500'}, 'bar': '888', 'zoo': /./} result = $$(context) ('foo') //     {'bar': '100500'} ('bar', -1) //   ('zoo') //    zoo (); //    - undefined ..   foo  / zoo 


рдЙрджрд╛рд╣рд░рдг 2. рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрджрд░реНрдн

 context = {'foo': {'bar': '100500'}, 'bar': '888', 'zoo': /./}; //     {'foo': {'bar': '100500'}, 'bar': '888', 'zoo': /./} result = $$(context, {fixedContext: true}) ('foo') //     {'bar': '100500'} ('bar', -1) //   ('zoo') //    zoo (); //    - /./ 


рдЙрджрд╛рд╣рд░рдг 3. рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди - рд╕рдВрджрд░реНрдн рдорд╛рди рдХреЛ рдмрджрд▓рдирд╛

 context = {'foo': 1}; //     {'foo': 1} result = $$(context) ('foo', 1000) //     (function (context) { //      return '' + context.foo / 2; //    -  '500' }) ('length') //      (function (context) { return typeof context; //    -  'number' }) (); //    number 


рдЙрджрд╛рд╣рд░рдг 4. DOM рдЖрд╡рд░рдг

 result = $$(document) ('getElementById', 'div1') ('style') ('width', '100px') //   ({ //     /    height: '100px', color: 'red', border: 'solid 1px blue' }) (); // CSSStyleDeclaration Object 


рдЙрджрд╛рд╣рд░рдг 5. рдПрдХ jQuery рдЖрд╡рд░рдг

 result = $$(jQuery) (['#div2']) //       - ,        ('css', {width: '100px', height:'100px', color: 'red', border: 'solid 1px blue'}) ('animate', {width: '200px', height:'200px'}) (); // jQuery 


рд░реВрдкрд░реЗрдЦрд╛


рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рд╕реЗ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдФрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
 $$.profile(); //    console && console.dir($$.profileEnd()); 

рдирддреАрдЬрддрди, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
 [anonymous function] Object { calls=2, time=0} [context call] Object { calls=1, time=0} [switching context] Object { calls=7, time=0} animate Object { calls=1, time=5} bar Object { calls=2, time=0} width Object { calls=1, time=0} 


рд╡рд┐рдкрдХреНрд╖


- рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзрд┐рдпреЛрдВ / рдЧреБрдгреЛрдВ рдХреЗ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдпрджрд┐ рдЖрдк рд╕реЙрд╕реЗрдЬ рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)
- рдЕрд▓рд╡рд┐рджрд╛ рд╕реНрд╡рд╕рдВрдЪрд╛рд▓рд┐рдд (рдпрджрд┐ рдЖрдк рд╕реЙрд╕реЗрдЬ рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)
- рдереЛрдбрд╝рд╛ рдзреАрдорд╛ рдЪреБрдиреМрддреА
- рдмрд┐рдВрджреБ рд╕рдВрдХреЗрддрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрди рд╡рд┐рдзрд┐рдпреЛрдВ / рдЧреБрдгреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рд╣реИрдВ (рд▓рдВрдмрд╛рдИ, рдХреЙрд▓, рд▓рд╛рдЧреВ, ...) рдпрд╣ рдЕрд╕рдВрднрд╡ рд╣реИ - $$([1,2,3]).length()(); , рдпрд╣ рд╕рдВрднрд╡ рд╣реИ - $$([1,2,3])('length')();

рдЖрдХрд░реНрд╖рдг рдЖрддреЗ рд╣реИрдВ


- рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рдХрд╛рд░рдг, рдПрдХ рдмрд┐рдВрджреБ рдХреА рдХрдореА рдФрд░ рдЬрдВрдЬреАрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ - рд╕рдВрдкреАрдбрд╝рди рдХреЗ рдмрд╛рдж рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореА
- рдкреНрд░реЛрдлрд╛рдЗрд▓ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЧрд┐рдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛
- рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг "рдмрдВрдбрд▓"

рд╕рдВрджрд░реНрдн


рд▓рд╛рдЗрд╡ рдЙрджрд╛рд╣рд░рдг jsfiddle.net/azproduction/LUXwY
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрди рдкреИрдХ рд╕рдВрд╕реНрдХрд░рдг (9168 рдмрд╛рдЗрдЯреНрд╕) рд╕реЙрд╕реЗрдЬ- js.googlecode.com/svn/trunk/Sausage.js
рдкреИрдХреЗрдЬреНрдб рд╡рд░реНрдЬрди (1268 рдмрд╛рдЗрдЯреНрд╕) рд╕реЙрд╕реЗрдЬ- js.googlecode.com/svn/trunk/Sausage.min.ds
рд╕реЙрд╕реЗрдЬ- js.googlecode.com/svn/trunk/Sausage-profile.js рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдг

рдЖрд▓реЛрдЪрдирд╛, рд╕реБрдЭрд╛рд╡ рдФрд░ рд╕реБрдЭрд╛рд╡ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдпреВрдкреАрдбреА рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛

Source: https://habr.com/ru/post/In115357/


All Articles