ã¯ã©ã¤ã¢ã³ããµã¤ã JavaScript ã®ããã©ã¼ãã³ã¹æ¹åã«ã¯ backburner.js ã便å©ï¼
DOM å¦çã Ajax ãªã©ãJavaScript ãå¤ã®ä¸çã¨ããåãããé¨åã¨ããã®ã¯ãä¸è¬çã«å¾ ã¡æéãå¤ãå¿ è¦ã¨ãã¾ãã
ããã©ã¼ãã³ã¹ãæ¹åãããã¨æã£ãæã«ããã¸ãã¯é¨åã§ã³ãã³ãã¨ç¯ç´ãããããã¾ãã³ã¹ããé«ãå¦çãè¡ããªãããã«ããã¨ãããã¨ã§ãé©ãã»ã©ã®å¹æãçµé¨ãããããã¨ã¯ããã¾ãããï¼
ä»ã¾ã§ããã©ã¼ãã³ã¹æ¸¬å®ããããæ¹ã§ããã°ãã³ã¨ããé¨åããããã¨ã¨æãã¾ãã
ãããªæã«å½¹ã«ç«ã¤ã®ããä»åãç´¹ä»ãã backburner.js ã§ãã
backburner.js ã£ã¦?
backburner.js ã¨ã¯ Ember.js ã® run loop ã¢ã¸ã¥ã¼ã«ããåãã ãããã¨ã¦ãå°ããªã©ã¤ãã©ãªã§ãçæéã«éä¸çã«çºçããã¡ã½ããå¼ã³åºãã®åæ°ãå¶éãããå ´åãªã©ã«å©ç¨ãããã¨ãã§ãã¾ãã
backburner.js ã£ã¦ã©ã使ãã®?
ä¾ãã°ãJavaScript ã§ç¹å®ã®ã¤ãã³ããã³ãã©å ã§ Ajax éä¿¡ãè¡ãå ´åãèãã¦ã¿ã¾ãããã
$('.action-area').on('mousemove', function(event) { // ãã¦ã¹ä½ç½®ã Ajax ã§éä¿¡ });
ãã®ä¾ã ã¨ã.action-area
è¦ç´ ã®ä¸ã§ãã¦ã¹ãåã度ã«ãã¦ã¹ä½ç½®ã Ajax ã§éä¿¡ãããã¨ã«ãªãã¾ããWebSocket ã§ããåãããã¦ããå ´åã§ãç¡ãéããããã¾ã§é »ç¹ã«éä¿¡ãè¡ããã¨ã¯ãµã¼ãã«ã¨ã£ã¦ä½åãªã³ã¹ãã¨ãªãå ´åãããã¾ãã
ããã§ backburner.js ã§ãã ä¸ã®ä¾ã以ä¸ã®ããã«æ¸ããªããã¦ã¿ã¾ãããã
var backburner = new Backburner(['send']); function sendMousePoint() { var event = this; // ãã¦ã¹ä½ç½®ã Ajax ã§éä¿¡... }; var wait = 100; $('.handle-area').on('mousemove', function(event) { backburner.debounce(event, sendMousePoint, wait); });
backburner.debounce
ã使ããã¨ã§ã弿°ã§æå®ãããã¡ã½ããã¯ãåä¸ã® Function ã§ããã°ä¸å®ã®æééé(wait = 100 ms)ã®ä¸ã§ 1åããå®è¡ããã¾ããã
ã¨ã¦ãã¨ã³ãã¸ã¼ã§ããã
ã¾ãããããã MVC ãã¬ã¼ã ã¯ã¼ã¯ã«ããã¦ãã¢ãã«ã®å¤æ´ããã¥ã¼ããã¤ã³ããã¦ãã¦ããã¤ã¢ãã«ã«é »ç¹ã«æ´æ°ãçºçããã¨ãã£ãå ´åã«ã¤ãã¦ãå¿ç¨åºæ¥ã¾ãã
ããã«ã¤ãã¦ã¯ã backburner.js ã® README ã«ç´ æ´ããããããããããµã³ãã«ã³ã¼ããããã®ã§ããã¡ããè¦ã¦ã¿ã¾ãããã
ã¢ãã«ã®ããããã£ãã²ã¨ã¤ã²ã¨ã¤å¤æ´ãã¦ãããã¨ããã®ã¯ããããããã·ãã¥ã¨ã¼ã·ã§ã³ã ã¨æãã¾ãã
ä¸è¿°ã®ä¾ã®ããã« backburner.js ã使ããã¨ã§ããã©ããããã£ããæã®åå ã«ãªããã DOM ã®é »ç¹ãªæ´æ°ãæå¶ãããã¨ãã§ãã¾ãã
åèè³æ
ãã£ã¨ç¥ããããªã£ãæ¹ã¯ãä½è ã® ebryn ããã®çºè¡¨åç»ã¨ãã®è³æãã¿ã¦ã¿ãã¨è¯ãããããã¾ããã
- http://talks.erikbryn.com/backburner-and-the-run-loop/
- http://www.youtube.com/watch?v=VuIFdXmi080&feature=youtu.be&t=24m5s
ããã§ã¯ãã¿ãªãã¾ã backburner.js ã®ãã°ããããã使ãã ããã¾ãï¼