TameJS - рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдирд╛рдордХрд░рдг

TameJS рдХреНрдпрд╛ рд╣реИ?


TameJS рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ рдЬреЛ рдЗрд╡реЗрдВрдЯ / рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛ рдЖрд╕рд╛рди рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдмрдирд╛рддрд╛ рд╣реИред рдиреЛрдбрдЬ рдпрд╛ рдЕрдиреНрдп v8 рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ


рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдбреЗрдЯрд┐рдВрдЧ рд╕рд╛рдЗрдЯ рд╣реИ, рдФрд░ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреЗрдЬ "Buffy" рдкрд░ рдЬрд╛рдХрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЗрд╕ рддрд░рд╣ рдХреА рдпрд╛рддреНрд░рд╛ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:


рд░реИрдЦрд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
handleVisit : function(angel, buffy) { var match_score = getScore(angel, buffy); var next_match = getNextMatch(angel); var visit_info = recordVisitAndGetInfo(angel, buffy); if (match_score > 0.9 && ! visit_info.last_visit) { sendVisitorEmail(angel, buffy); } doSomeFinalThings(match_score, next_match, visit_info); } 


рдпрд╣ рд╕реНрдкрд╖реНрдЯ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рдмрдирддрд╛ рд╣реИ:
 handleVisit : function(angel, buffy) { getScore(angel, buffy, function(match_score) { getNextMatch(angel, function(next_match) { recordVisitAndGetInfo(angel, buffy, function(visit_info) { if (match_score > 0.9 && ! visit_info.last_visit) { sendVisitorEmail(angel, buffy); } doSomeFinalThings(match_score, next_match, visit_info); }); }); }); } 


рдЕрдм рдХреЛрдб рд╕рд╣реА рд╣реИ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ, рдЗрд╕рдореЗрдВ рдмреНрд▓реЙрдХрд┐рдВрдЧ рдХреЙрд▓ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкрдврд╝рдирд╛ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ getScore, getNextMatch рдФрд░ recordVisitAndGetInfo рдХреЗ рдХреЙрд▓ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
TameJS рд╣рдорд╛рд░реА рдорджрдж рдХреИрд╕реЗ рдХрд░реЗрдЧрд╛?

рд╕реА TameJS рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 handleVisit : function(angel, buffy) { await { getScore (angel, buffy, defer(var score)); getNextMatch (angel, buffy, defer(var next)); recordVisitAndGetInfo (angel, buffy, defer(var vinfo)); } if (score > 0.9 && ! vinfo.last_visit) { sendVisitorEmail(angel, buffy); } doSomeFinalThings(score, next, vinfo); } 

рдХреЛрдб рд╕реНрдкрд╖реНрдЯ, рдкрдардиреАрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИ рдФрд░ getScore, getNextMatch рдФрд░ recordVisitAndGetitfo рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдХрд╛рд░рдг рдкрд┐рдЫрд▓реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ!

рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдЙрддрдирд╛ рд╣реА рдкрд╕рдВрдж рдХрд░рддреЗ рдереЗ?

TameJS рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ



Node.JS рдореЗрдВ рд╕реНрдерд╛рдкрдирд╛ npm рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ:
 npm install -g tamejs 


рдФрд░ рдлрд┐рд░ рдХреЛрдб рдореЗрдВ рд╣рдо рднрд╛рд╖рд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ:
 require ('tamejs').register (); // register the *.tjs suffix require ("mylib.tjs"); // then use node.js's import as normal 


рд╡рд╣ рд╕рдм рд╣реИ! рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Tame рдЦреБрдж рд╣реА JS рдЬреЗрдПрд╕ рдореЗрдВ tjs рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдХреИрд╕реЗ TameJS рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ


TameJS рд╕рд┐рдВрдереИрдЯрд┐рдХ рд╢реБрдЧрд░ рдХреЗрд╡рд▓ рджреЛ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдЦреЛрдЬрд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИ рдЬреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдФрд░ рд╕реНрдердЧрд┐рдд рд╣реИ

 var res1, res2; await { doOneThing(defer(res1)); andAnother(defer(res2)); } thenDoSomethingWith(res1, res2); 


рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдмреНрд▓реЙрдХ рдХреЛрдб рдХреЗ рдПрдХ рдЦрдВрдб рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрд╛рд╣рд░реА рдШрдЯрдирд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдпрд╛ рдбрд┐рд╕реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛, рдпрд╛ рдПрдХ рдЯрд╛рдЗрдорд░ред рд╡реЗрдЯ рдмреНрд▓реЙрдХ рдореЗрдВ рдХрдИ рдбрд┐рдлреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВред рдмреНрд▓реЙрдХ рдореЗрдВ рд╕рднреА рдбрд┐рдлреЗрдХреНрдЯ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рд╡реЗрдЯ рдмреНрд▓реЙрдХ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред defer () рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдбреАрдлрд╝рд░ () рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдпреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рддреАрдХреНрд╖рд┐рдд рдмреНрд▓реЙрдХ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗред

рд▓реЗрдЦрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


TameJS рдХреЛ OkCupid рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ MIT рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЧрд┐рдЯрдм рдореЗрдВ рдПрдХ рднрдВрдбрд╛рд░ рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпреБрд╡рд╛ рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрдерд▓ - tamejs.org

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


рдпрджрд┐ рдЖрдк рдХрдорд╛рдВрдб рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рд╕реНрддрд░реАрдХреГрдд рдЬреЗрдПрд╕ , рд╕реНрдЯреЗрдк рдФрд░ рд╕реЗрдХ рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдВред

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


All Articles