ããã«èšã£ãŠãããšãããã€ãã®ããªãã¯ã¯ã€ã³ã¿ãŒãããã®è¥¿åŽã®åºããã§ç§ãã¡ã«ãã£ãŠã¹ãã€ãããããã€ãã¯ç§ãã¡ã«ãã£ãŠè¿œå ããããã®ã§ãã ãããã«ãããRuNetã«ã¯ãã®ãããªè³æã¯ãããŸããã§ããã å€ãã®å Žåã倧èŠæš¡ãªã·ã¹ãã ãäœæããŠããŠã³ããŒãé床ãæé©åããå¿ èŠãããããããã€ãããšã«æŠãããšããŸãã ããããã圌ãã¯ãã®éèŠãªãããã¯ã«ã€ããŠæžãããšã«ããŸããã
1.èŠçŽ ãžã®å€§éæ³šå ¥ã®ä»£ããã«DocumentFragmentsãŸãã¯innerHTMLã䜿çšããŸã
ããŒãžã®èªã¿èŸŒã¿åŸãDOMæ§é ã®æ§ç¯ãªã©ã®æäœãè¡ããšããã©ãŠã¶ã®è² è·ãå¢å ããŸãã ãã©ãŠã¶ã®ããã©ãŒãã³ã¹ã¯åäžããŸãããDOMããªãŒã®æ§ç¯ã¯é ãããããããã®ãã¥ã¢ã³ã¹ãç¥ãããšã¯ãããŒãžã®èªã¿èŸŒã¿é床ãäžããã®ã«åœ¹ç«ã¡ãŸãã ãã®ãããè€éãªæ§é DOMããªãŒã®äœæãæå°éã«æããããšãéèŠã§ãã
ããšãã°ãããŒãžå ã«ulèŠçŽ ããããJSONãªã¹ãã¢ã€ãã ãååŸããããã®AJAXåŒã³åºãåŸã«JavaScriptãä»ããŠå€æŽãããŸãã å€ãã®å Žåãéçºè ã¯æ¬¡ã®ãããªããšãããŸãã
var list = document.querySelector('ul'); ajaxResult.items.forEach(function(item) { // li var li = document.createElement('li'); li.innerHTML = item.text; // , // : , .. // li ul list.apppendChild(li); });
äžèšã®ã³ãŒãã¯ulãèŠçŽ ã§åããééã£ãæ¹æ³ã瀺ããŠããŸã-DOMããªãŒãè£å®ããé床ã¯é ããªããŸãã æ¬åœã«document.createElementã䜿çšããèŠçŽ ãããªãŒããŒããšããŠæ±ãããå Žåã¯ã代ããã«DocumentFragementã䜿çšããæ¹ãå¹ççã§ãã
DocumentFragementã¯ããã®åäŸåãã®ããããããããã¢ã¬ã³ããããã¯ã©ãŠãã¹ãã¬ãŒãžãã§ãã ãã®äŸã§ã¯ãDocumentFragementã¯DOMã®å€éšã«ããç®ã«èŠããªãulèŠçŽ ãšèŠãªãå¿ èŠããããŸãã ããã«ãããDOMã«å ¥åããããŸã§ããŒããä»®æ³çã«ä¿åã§ããŸãã åæãµã³ãã«ã³ãŒãã¯ãDocumentFragementã䜿çšããŠæ¬¡ã®ããã«æé©åãããŸãã
var frag = document.createDocumentFragment(); ajaxResult.items.forEach(function(item) { // li var li = document.createElement('li'); li.innerHTML = item.text; // , // : , .. // * , * frag.appendChild(li); }); // , DocumentFragment document.querySelector('ul').appendChild(frag);
å¥ã®DocumentFragementã«åãè¿œå ããŠããããã®ãã©ã°ã¡ã³ãã芪ãªã¹ãã«è¿œå ããããšã¯ã1ã€ã®DOMæäœã§ã®ã¿äœ¿çšãããŸãã ãããã£ãŠã倧éå±éãããã¯ããã«é«éã§ããããšãããããŸãã ããŒããªã©ã®ãªã¹ãã¢ã€ãã ã䜿çšããå¿ èŠããªãå Žåã¯ãæååã䜿çšããŠHTMLãäœæããæ¹ãããæçã§ãã
var htmlStr = ''; ajaxResult.items.forEach(function(item) { // htmlStr += '<li>' + item.text + '</li>'; }); // innerHTML document.querySelector('ul').innerHTML = htmlStr;
ãããã£ãŠãinnerHTMLãä»ããŠäœæãããæååãå°å ¥ããŠããDocumentFragmentã¡ãœããããããDOMæäœã¯1ã€ãããªããã³ãŒãã¯å°ãªããªããŸãã
2.é »ç¹ã«å®è¡ãããã€ãã³ã/ã¡ãœãã
ã»ãšãã©ã®äœæ¥ã§ã¯ããŠãŒã¶ãŒã®æäœäžã«é »ç¹ã«çºçããã€ãã³ãã®åŠçãè¿œå ããå¿ èŠããããŸãã ããšãã°ããŠã£ã³ããŠã®ãµã€ãºå€æŽãŸãã¯onmouseoverã€ãã³ãã ã€ãã³ãããŒã¿ã®åŠçããªãœãŒã¹ã倧éã«æ¶è²»ããå Žåããã©ãŠã¶ã«å€§éã®ããŠã³ããŒããè¡ãããšãã§ããŸããããã«ããããŠãŒã¶ãŒåŽã«æªãçµæãããããããŸãã ããããããŠã³ã¹æ¹æ³ã®ç±æ¥ã§ãã ãããŠã³ã¹ã¯ãæå®ãããæéééå ã§é¢æ°ãå®è¡ãããåæ°ãå¶éããŸãã 以äžã¯ããããŠã³ã¹æ©èœã®äœ¿çšäŸã§ãã
// UnderscoreJS function debounce(func, wait, immediate) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if (!immediate) func.apply(context, args); }; var callNow = immediate && !timeout; clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) func.apply(context, args); }; } // resize 300 window.addEventListener('resize', debounce(function(event) { // resize ( ) }, 300));
Debounceã¡ãœããã¯ãå¿çãã©ããããé¢æ°ãè¿ãããã®å®è¡é床ã2çªç®ã®åŒæ°ã§æå®ãããå¶éã«å¶éããŸãã ããã§ãæä¹ çãªåçã¯ãŠãŒã¶ãŒã®ãã©ãŠã¶ã«æ害ãäžããããšãã§ããªããªããŸãã
3.éçãã£ãã·ã¥ãWebã¹ãã¬ãŒãžå ã®å¿ é ã§ã¯ãªãã³ã³ãã³ã
Webã¹ãã¬ãŒãžã¿ã€ãã®APIã¯ãéçºè ãé·å¹Žäœ¿çšããŠããCookie APIã®å€§å¹ ãªæ©èœåŒ·åãšç°¡çŽ åã§ãã ã¡ã¢ãªãæäœããŠéèŠã§ãªãããŒã¿ãä¿åãããšãã«äœ¿çšã§ããæŠç¥ã®1ã€ã¯ãéçã³ã³ãã³ãã§ããã ããã«ã¯ãHTMLã¹ãããããAJAXã䜿çšããŠããŠã³ããŒããããèšäºã®ã³ã³ãã³ããããã³è€æ°åãªã¯ãšã¹ãããå¿ èŠã®ããä»ã®ããŸããŸãªã¡ãœãããå«ãŸããŸãã 以äžã¯ãWebã¹ãã¬ãŒãžãæäœããããã®å°ããªJavaScriptã³ãŒãã§ãã
this[key] = value; } }; return { get: function(key) { return this.isFresh(key); }, set: function(key, value, minutes) { var expDate = new Date(); expDate.setMinutes(expDate.getMinutes() + (minutes || 0)); try { cacheObj.setItem(key, JSON.stringify({ value: value, expires: expDate.getTime() })); } catch(e) {} }, isFresh: function(key) { // false var item; try { item = JSON.parse(cacheObj.getItem(key)); } catch(e) {} if(!item) return false; // return new Date().getTime() > item.expires ? false : item.value; } } });
ãã®ãã©ã°ã€ã³ã¯ãåºæ¬çãªgetããã³setã¡ãœããã䜿çšããããisFreshã¡ãœããã䜿çšããŠãä¿åãããŠããå€ãé¢é£ãããã©ããã確èªããŸãã
require(['storage'], function(storage) { var content = storage.get('sidebarContent'); if(!content) { // AJAX // ... storage.set('sidebarContent', content, 60); } });
ãããã£ãŠããµãŒããŒã«é »ç¹ã«ç¹°ãè¿ããããªã¯ãšã¹ããåãé€ããŸãã åçã§ã¯ãªããé »ç¹ã«èŠæ±ãããå¯èœæ§ã®ããçŽ æã«ã€ããŠãµã€ããåæããŸãã ãã®æ¹æ³ã䜿çšããŠããµã€ãã®ããã©ãŒãã³ã¹ãæ¹åããŸãã
4. curl.jsã䜿çšãã
ãªãœãŒã¹ã®ããŒãããããã¯ãããããŒãžã®ããŒãæéãççž®ããã³ã³ãã³ãããªããŒãããã«ããŒãã§ããããã«ãXMLHttpRequestïŒAJAXã§èš±å¯ããããªããžã§ã¯ãïŒã®ãããã§ãªãœãŒã¹ã®éåæããŒããäžè¬çã«ãªããŸããã
ããã§ã¯çŽ æŽãããJohn Hannãã©ã°ã€ã³curl.jsã䜿çšãããŸãã curlããŒããŒã¯å žåçãªéåæããŒããŒã§ãããä»ã®æ§æãªãã·ã§ã³ã䟿å©ãªãã©ã°ã€ã³ãªã©ãå°ããããŸãã curl.jsã®äœ¿çšäŸïŒ
// curl(['social', 'dom'], function(social, dom) { dom.setElementContent('.social-container', social.loadWidgets()); }); // , Google Analytics define(["js!//google-analytics.com/ga.js"], function() { // Google Analytics return { trackPageView: function(href) { _gaq.push(["_trackPageview", url]); }, trackEvent: function(eventName, href) { _gaq.push(["_trackEvent", "Interactions", eventName, "", href || window.location, true]); } }; }); // JavaScript curl(['js!//somesite.com/widgets.js']); // JavaScript and CSS curl(['js!libs/prism/prism.js', 'css!libs/prism/prism.css'], function() { Prism.highlightAll(); }); // a URL ( an AJAX ) curl(['text!sidebar.php', 'storage', 'dom'], function(content, storage, dom) { storage.set('sidebar', content, 60); dom.setElementContent('.sidebar', content); });
åçŽãªéåæããŒããŒã®ä»£ããã«ãã®ã¡ãœããã®äœ¿çšãéå§ãããšãéãã¯ããã«é¡èã«ãªããŸãããããã«éèŠãªããšã¯ããŠãŒã¶ãŒã«ãã®éããèŠããããšã§ãïŒ
ããšãã°ãCSSãœãŒã·ã£ã«ã¯ã©ã¹ãæã€divãååšããå Žåã«ã®ã¿ãTwitterãFacebookãããã³Google PlusãŠã£ãžã§ãããããŠã³ããŒãããŸãã ãã®ãããã¯ãå©çšã§ããªãå ŽåããŠã£ãžã§ããã¯åºè·ãããŸããã ãããã£ãŠãããã§ãã¯-ããŠã³ããŒãããåã«å¿ èŠãªå Žå-ããŒãããããšããååã䜿çšãããšããŠãŒã¶ãŒã¯å®å šã«äžèŠãªæ°ãããã€ããããŠã³ããŒãããå¿ èŠããªããªããŸãã
5.æååé£çµã®ä»£ããã«Array.prototype.joinã䜿çšããŸã
Array.prototype.joinã䜿çšãã1ã€ã®ã¯ã©ã€ã¢ã³ãåŽã®ãã€ã¯ãæé©åã¯ãéåžžã®é£çµã眮ãæããŸãã ããšãã°ã段èœ1ïŒäžèšãåç §ïŒã§ã¯ãåºæ¬æååã®é£çµã䜿çšãããŸããã ãããŠãããã¯ãã®æé©åã®åŸã«ã©ã®ããã«èŠãããã§ã
var items = []; ajaxResult.items.forEach(function(item) { // items.push('<li>', item.text, '</li>'); }); // innerHTML document.querySelector('ul').innerHTML = items.join('');
6.å¯èœãªéãCSSã¢ãã¡ãŒã·ã§ã³ã䜿çšãã
JQueryãMooToolsãªã©ã®JavaScriptã©ã€ãã©ãªã®æé·ã«ãããè€éãªã¢ãã¡ãŒã·ã§ã³ãçºçãããšèšããŸãã çŸåšãå€ãã®éçºè ã¯JavaScriptã䜿çšããŠèŠçŽ ãã¢ãã¡ãŒã·ã§ã³åããŠããŸãããããããã®ãã©ãŠã¶ãŒã¯å€æãšããŒãã¬ãŒã ãä»ããŠCSSã¢ãã¡ãŒã·ã§ã³ããµããŒãããŠããŸãã
CSSã¢ãã¡ãŒã·ã§ã³ã¯ãJavaScriptã¢ãã¡ãŒã·ã§ã³ãããå¹æçã§ãã CSSã¢ãã¡ãŒã·ã§ã³ã«ã¯ãïŒéåžžïŒã³ãŒããã¯ããã«å°ãªããšããå©ç¹ããããŸãã å€ãã®CSSã¢ãã¡ãŒã·ã§ã³ã¯GPUã§åŠçããããããããã¹ã ãŒãºã§ãã äŸïŒ
.myAnimation { animation: someAnimation 1s; transform: translate3d(0, 0, 0); /* */ }
åæ§ã®CSSã¢ãã¡ãŒã·ã§ã³ããããã£ã¯ããµããã¯ã»ã«è£éã䜿çšããŠã¢ãã¡ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãšå質ãåäžãããŸãã ãã®ãããªã¢ãã¡ãŒã·ã§ã³ã¯ãã°ã©ãã£ãã¯ãšã³ãžã³ãé¢äžããŠãããããããã»ããµãå®è¡ãããããããã¢ãã€ã«ããã€ã¹ã«ãšã£ãŠéåžžã«éèŠã§ãã ãã ããCSSã¢ãã¡ãŒã·ã§ã³ã䜿çšããjsãä»ããŠã³ã³ãããŒã«ãæ¥ç¶ããããšãæãåãå ¥ããããŸãã ããšãã°ãã¢ãã¡ãŒã·ã§ã³ã«ãŒã«ãCSSã§èšè¿°ãããŠããå ŽåãJavaScriptã䜿çšããŠå ¥åãã©ã¡ãŒã¿ãŒïŒè²ãèæ¯ããµã€ãºãªã©ïŒãå€æŽããŸã
7.ã€ãã³ãã®å§ä»»ã䜿çšãã
ä»»æã®æ°ã®liã®åãå«ãããšãã§ããulã®é åºä»ããããŠããªããªã¹ããæ³åããŠãã ãããåliã¯ããŠã¹ã®ã¯ãªãã¯ã§äœããããªããã°ãªããŸããã åã ã®èŠçŽ ã«ã€ãã³ããã³ãã©ãŒãè¿œå ã§ããŸãããèŠçŽ ãé »ç¹ã«è¿œå ãŸãã¯åé€ããããšã©ããªããŸããïŒ èŠçŽ èªäœã ãã§ãªããã€ãã³ããã³ãã©ãŒã®è¿œå ãšåé€ã«ã察åŠããå¿ èŠããããŸãã ããã§ã€ãã³ãã®å§ä»»ãå¿ èŠã«ãªããŸãã
ã€ãã³ãå§ä»»ã«ããã芪ã®åäžã®ã€ãã³ããã³ãã©ããã¹ããã代ããã«ãåã ã®èŠçŽ ã«ã€ãã³ããã³ãã©ãè¿œå ããå¿ èŠããªããªããŸãã ãã®ã€ãã³ããçºçãããšãevent.targetã¯ããã®ã€ãã³ãã®åŠçæ©èœãåŒã³åºãããã®æ¡ä»¶ãæºããããŠãããã©ããã確èªããŸãã
以äžã¯ãäœãèµ·ãã£ãŠãããã瀺ãéåžžã«ç°¡åãªäŸã§ãã
// click... document.querySelector('#parent-list').addEventListener('click', function(e) { // e.target ! // if(e.target && e.target.tagName == 'LI') { // ! ! } });
ãã¹ãŠã®JavaScriptãã¬ãŒã ã¯ãŒã¯ã¯ãäžèŽããããªã²ãŒãã»ã¬ã¯ã¿ãŒãæäŸããŸãã å®éã«ã¯ã芪ã«ã€ãã³ããã³ãã©ãŒãèšå®ããããšã«ãããã€ãã³ããã³ãã©ãŒãå¥ã®èŠçŽ ã«é 眮ããããšãé¿ããŠããŸãã ãã®æ¹æ³ã¯ãããå¹ççã§äœã³ã¹ãã§ãã
8. SRCã®ä»£ããã«ããŒã¿URLã䜿çšãã
ããŒãžã®èªã¿èŸŒã¿é床ã¯ãã¹ãã©ã€ãã®äœ¿çšãšã³ã³ãã¯ããªã³ãŒãã®äœæã«çŽæ¥äŸåããŸãã ãã®ããŒãžããéä¿¡ããããªã¯ãšã¹ãã®æ°ãããã©ãŒãã³ã¹ã«åœ±é¿ããŸãã ãªã¯ãšã¹ããæå°åãããšããµã€ãã®èªã¿èŸŒã¿ãéããªãããªã¯ãšã¹ããæé€ããæ¹æ³ã®1ã€ã¯ïŒã¹ãã©ã€ãã䜿çšãã以å€ã«ïŒç»åSRCå±æ§ã®ä»£ããã«ããŒã¿URLã䜿çšããããšã§ãïŒ
<!â⊠--> <img src="/images/logo.png" /> <!-- ⊠--> <img src="data: image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAPAAA/+4ADkFkb2 JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fH x8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fH ...." />
ãã¡ãããããŒãžãµã€ãºã¯å€§ãããªããŸãããåŸ ã¡æéãšãµãŒããŒãžã®ãªã¯ãšã¹ãã®æ°ã¯æžå°ããŸãã ã»ãšãã©ã®ãã©ãŠã¶ã¯ãCSSãã¡ã€ã«ïŒèæ¯ç»åçšïŒã§ããŒã¿URLããµããŒãããããã«ãªã£ãããããã®æ¹æ³ã¯å šäœãšããŠåºã䜿çšã§ããŸãã
9.ã¡ãã£ã¢ã¯ãšãªã䜿çšããŠãç°åžžãªãµã€ãºã®èæ¯ç»åãèªã¿èŸŒã¿ãŸãã
åã®æ®µèœã§ã¯ããµã€ãã®èªã¿èŸŒã¿ãé«éåããããã®ç»åã¹ãã©ã€ãã®äœ¿çšã«ã€ããŠè¿°ã¹ãŸããã ããããèæ¯ç»åãæ€çŽ¢ã¢ã€ã³ã³ãªã©ãç»åãæ¡å€§çž®å°ããå¿ èŠãããé©å¿åWebãµã€ãã«ã€ããŠã¯ã©ãã§ããããã ãã®ãããªæäœãã¹ãã©ã€ãã§å®è¡ããã®ã¯ããªãäžäŸ¿ã§ãããå€ãã®æéãããããŸãã ããã¯ãã¡ãã£ã¢ã¯ãšãªãå©ãã«ãªãå Žæã§ãã
CSS ãµããŒãã®ãµããŒãç¯å²ã¯åºããCSSã¡ãã£ã¢ã¯ãšãªã¯CSSã®ããžãã¯ã«è¿ããã®ã§ãã CSSã¡ãã£ã¢ã¯ãšãªã¯ãããã€ã¹ã®CSSããããã£ïŒéåžžã¯ç»é¢ã®å¹ ïŒãæ§æïŒå¶åŸ¡ïŒããããã«æããã䜿çšãããŸãã ãã®æ¹æ³ã䜿çšããŠãèŠçŽ ã®å¹ ãŸãã¯æµ®åäœçœ®ãé »ç¹ã«å€æŽããŸãã ãã®æ¹æ³ã«åºã¥ããŠèæ¯ç»åãå€æŽããŠã¿ãŸãããïŒ
/* Desktop */ .someElement { background-image: url(sunset.jpg); } @media only screen and (max-width : 1024px) { .someElement { background-image: url(sunset-small.jpg); } }
äžèšã®ã¹ããããã¯ããŠãŒã¶ãŒãã¢ãã€ã«ããã€ã¹ã䜿çšããŠããå ŽåïŒã¢ã¹ãã¯ãæ¯ã§ã¯ãªããã¡ã€ã«ãµã€ãºãæå³ããïŒãããå°ããç»åãããŒãããŸãã ãã®ããã«ãå°ããªã¹ãã©ã€ããæç»ããã ãã§ååã§ããããã«ãããããã°ã©ã ã§ç»åãæäœããããã¢ãã€ã«ããã€ã¹çšã«ã¹ãã©ã€ããã«ãããããããå¿ èŠããªããªããŸãã
ã»ãšãã©ã®åœã§ã¯ã䜿çšããããŒã¿ã«æéãããããŸãïŒç¡å¶éã§ã¯ãããŸããïŒãã€ãŸããèªã¿èŸŒã¿æéãççž®ããããšã§ãéãç¯çŽã§ããŸãã
å°ããªæŽæ°ã倧ããªæå
å€ãã®å Žåãéçºè ã¯ãŠãŒã¶ãŒã«ã€ããŠæåã«èããã®ã§ã¯ãªããèªåèªèº«ãšèªåã®ã³ãŒãã¹ã¿ã€ã«ãåªå ããŸãã ãŠãŒã¶ãŒã®å¿«é©ããåäžãããããã«å€ãã®å°ããªæŽæ°ãçµã¿èŸŒãŸããŠãããããããŠã³ããŒãã®æé©åããã¹ãŠè¡ãããšã§ãµã€ãã®å°è±¡ãæ¹åãããŸãã Googleã¯ããã©ãŠã¶ã®ããªã䟿å©ãªæ¡åŒµæ©èœããªãªãŒã¹ããŸãããããã¯ããµã€ãã®èªã¿èŸŒã¿é床ãåæããããŒãžã®èªã¿èŸŒã¿ãå¢ããããã«ä»ã«æé©åã§ãããã®ãèŠã€ããã®ã«åœ¹ç«ã¡ãŸãã ãã®æ¡åŒµæ©èœã¯PageSpeed InsightsãšåŒã°ããŸãã æšæºã®éçºè ããã«ãã䜿çšã§ããŸãã ãã®ãŠã£ãžã§ããã¯ãããŒã¿ã«ã®æå°éã®åæã衚瀺ããããŒã¿ã«ã®æé©åã«é¢ãããã³ããæäŸããŸããäŸïŒ
ãããã«ããããµã€ããå¯èœãªéãæé©åããå¿ èŠããããŸãã åäœãéããªãã»ã©ãããå€ãã®ãŠãŒã¶ãŒãæºè¶³ããããã«ãªãããµã€ãã®åçãå¢ããŸãã æ®å¿µãªããã誰ããããã«ã€ããŠèããŠããããã§ã¯ãããŸããã ããã¯ãªã³ããã³ãã§ãèŠãããšãã§ããŸãïŒäœ¿ãããããŸãã¯ããã¯ãšã³ãã®ç£æ»ã¯ç§ãã¡ã«ãã°ãã°æ³šæããã誰ãããã³ããšã³ãã®ç£æ»ãèŠæ±ããããšã¯ãã£ãã«ãããŸããããããã¯é£ããã¯ãªããæ¹åã®ããã®è¯ãåéãæäŸããŸãã