ææ°ã®ãã©ãŠã¶ãããå€ãã®æ©èœããµããŒãããããã«ãªããWebæ¥çãã¢ãã€ã«ããã€ã¹ã«æ¥éã«ç§»è¡ããŠããããããŠãŒã¶ãŒããµã€ããããŒãããã®ã«æéãããããªãã³ã³ãã¯ãã§æé©åãããã³ãŒããèšè¿°ããå¿
èŠããããŸããã ããã³ããšã³ãã«ã¯ãæé©ãªããã©ãŒãã³ã¹ã確ä¿ããããã«äœ¿çšã§ããå€ãã®åçŽãªã³ãŒãæŠç¥ãšèŠåãå«ãŸããŠãããšããç¹ã§åªããŠããŸãã ãã®èšäºã§ã¯ãã³ãŒãã®æé©åã«åœ¹ç«ã€9ã€ã®ç°¡åãªãã³ãããŸãšããŸããã
ããã«èšã£ãŠãããšãããã€ãã®ããªãã¯ã¯ã€ã³ã¿ãŒãããã®è¥¿åŽã®åºããã§ç§ãã¡ã«ãã£ãŠã¹ãã€ãããããã€ãã¯ç§ãã¡ã«ãã£ãŠè¿œå ããããã®ã§ãã ãããã«ãããRuNetã«ã¯ãã®ãããªè³æã¯ãããŸããã§ããã å€ãã®å Žåãå€§èŠæš¡ãªã·ã¹ãã ãäœæããŠããŠã³ããŒãé床ãæé©åããå¿
èŠãããããããã€ãããšã«æŠãããšããŸãã ããããã圌ãã¯ãã®éèŠãªãããã¯ã«ã€ããŠæžãããšã«ããŸããã
1.èŠçŽ ãžã®å€§é泚å
¥ã®ä»£ããã«DocumentFragmentsãŸãã¯innerHTMLã䜿çšããŸã
ããŒãžã®èªã¿èŸŒã¿åŸãDOMæ§é ã®æ§ç¯ãªã©ã®æäœãè¡ããšããã©ãŠã¶ã®è² è·ãå¢å ããŸãã ãã©ãŠã¶ã®ããã©ãŒãã³ã¹ã¯åäžããŸãããDOMããªãŒã®æ§ç¯ã¯é
ãããããããã®ãã¥ã¢ã³ã¹ãç¥ãããšã¯ãããŒãžã®èªã¿èŸŒã¿é床ãäžããã®ã«åœ¹ç«ã¡ãŸãã ãã®ãããè€éãªæ§é DOMããªãŒã®äœæãæå°éã«æããããšãéèŠã§ãã
ããšãã°ãããŒãžå
ã«ulèŠçŽ ããããJSONãªã¹ãã¢ã€ãã ãååŸããããã®AJAXåŒã³åºãåŸã«JavaScriptãä»ããŠå€æŽãããŸãã å€ãã®å Žåãéçºè
ã¯æ¬¡ã®ãããªããšãããŸãã
var list = document.querySelector('ul'); ajaxResult.items.forEach(function(item) {
äžèšã®ã³ãŒãã¯ulãèŠçŽ ã§åããééã£ãæ¹æ³ã瀺ããŠããŸã-DOMããªãŒãè£å®ããé床ã¯é
ããªããŸãã æ¬åœã«document.createElementã䜿çšããèŠçŽ ãããªãŒããŒããšããŠæ±ãããå Žåã¯ã代ããã«DocumentFragementã䜿çšããæ¹ãå¹ççã§ãã
DocumentFragementã¯ããã®åäŸåãã®ããããããããã¢ã¬ã³ããããã¯ã©ãŠãã¹ãã¬ãŒãžãã§ãã ãã®äŸã§ã¯ãDocumentFragementã¯DOMã®å€éšã«ããç®ã«èŠããªãulèŠçŽ ãšèŠãªãå¿
èŠããããŸãã ããã«ãããDOMã«å
¥åããããŸã§ããŒããä»®æ³çã«ä¿åã§ããŸãã åæãµã³ãã«ã³ãŒãã¯ãDocumentFragementã䜿çšããŠæ¬¡ã®ããã«æé©åãããŸãã
var frag = document.createDocumentFragment(); ajaxResult.items.forEach(function(item) {
å¥ã®DocumentFragementã«åã远å ããŠããããã®ãã©ã°ã¡ã³ãã芪ãªã¹ãã«è¿œå ããããšã¯ã1ã€ã®DOMæäœã§ã®ã¿äœ¿çšãããŸãã ãããã£ãŠã倧éå±éãããã¯ããã«é«éã§ããããšãããããŸãã ããŒããªã©ã®ãªã¹ãã¢ã€ãã ã䜿çšããå¿
èŠããªãå Žåã¯ãæååã䜿çšããŠHTMLãäœæããæ¹ãããæçã§ãã
var htmlStr = ''; ajaxResult.items.forEach(function(item) {
ãããã£ãŠãinnerHTMLãä»ããŠäœæãããæååãå°å
¥ããŠããDocumentFragmentã¡ãœããããããDOMæäœã¯1ã€ãããªããã³ãŒãã¯å°ãªããªããŸãã
2.é »ç¹ã«å®è¡ãããã€ãã³ã/ã¡ãœãã
ã»ãšãã©ã®äœæ¥ã§ã¯ããŠãŒã¶ãŒã®æäœäžã«é »ç¹ã«çºçããã€ãã³ãã®åŠçã远å ããå¿
èŠããããŸãã ããšãã°ããŠã£ã³ããŠã®ãµã€ãºå€æŽãŸãã¯onmouseoverã€ãã³ãã ã€ãã³ãããŒã¿ã®åŠçããªãœãŒã¹ã倧éã«æ¶è²»ããå Žåããã©ãŠã¶ã«å€§éã®ããŠã³ããŒããè¡ãããšãã§ããŸããããã«ããããŠãŒã¶ãŒåŽã«æªãçµæãããããããŸãã ããããããŠã³ã¹æ¹æ³ã®ç±æ¥ã§ãã ãããŠã³ã¹ã¯ãæå®ãããæéééå
ã§é¢æ°ãå®è¡ãããåæ°ãå¶éããŸãã 以äžã¯ããããŠã³ã¹æ©èœã®äœ¿çšäŸã§ãã
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) {
ãã®ãã©ã°ã€ã³ã¯ãåºæ¬çãªgetããã³setã¡ãœããã䜿çšããããisFreshã¡ãœããã䜿çšããŠãä¿åãããŠããå€ãé¢é£ãããã©ããã確èªããŸãã
require(['storage'], function(storage) { var content = storage.get('sidebarContent'); if(!content) {
ãããã£ãŠããµãŒããŒã«é »ç¹ã«ç¹°ãè¿ããããªã¯ãšã¹ããåãé€ããŸãã åçã§ã¯ãªããé »ç¹ã«èŠæ±ãããå¯èœæ§ã®ããçŽ æã«ã€ããŠãµã€ããåæããŸãã ãã®æ¹æ³ã䜿çšããŠããµã€ãã®ããã©ãŒãã³ã¹ãæ¹åããŸãã
4. curl.jsã䜿çšãã
ãªãœãŒã¹ã®ããŒãããããã¯ãããããŒãžã®ããŒãæéãççž®ããã³ã³ãã³ãããªããŒãããã«ããŒãã§ããããã«ãXMLHttpRequestïŒAJAXã§èš±å¯ããããªããžã§ã¯ãïŒã®ãããã§ãªãœãŒã¹ã®éåæããŒããäžè¬çã«ãªããŸããã
ããã§ã¯çŽ æŽãããJohn Hannãã©ã°ã€ã³curl.jsã䜿çšãããŸãã curlããŒããŒã¯å
žåçãªéåæããŒããŒã§ãããä»ã®æ§æãªãã·ã§ã³ã䟿å©ãªãã©ã°ã€ã³ãªã©ãå°ããããŸãã curl.jsã®äœ¿çšäŸïŒ
åçŽãªéåæããŒããŒã®ä»£ããã«ãã®ã¡ãœããã®äœ¿çšãéå§ãããšãéãã¯ããã«é¡èã«ãªããŸãããããã«éèŠãªããšã¯ããŠãŒã¶ãŒã«ãã®éããèŠããããšã§ãïŒ
ããšãã°ãCSSãœãŒã·ã£ã«ã¯ã©ã¹ãæã€divãååšããå Žåã«ã®ã¿ãTwitterãFacebookãããã³Google PlusãŠã£ãžã§ãããããŠã³ããŒãããŸãã ãã®ãããã¯ãå©çšã§ããªãå ŽåããŠã£ãžã§ããã¯åºè·ãããŸããã ãããã£ãŠãããã§ãã¯-ããŠã³ããŒãããåã«å¿
èŠãªå Žå-ããŒãããããšããååã䜿çšãããšããŠãŒã¶ãŒã¯å®å
šã«äžèŠãªæ°ãããã€ããããŠã³ããŒãããå¿
èŠããªããªããŸãã
5.æååé£çµã®ä»£ããã«Array.prototype.joinã䜿çšããŸã
Array.prototype.joinã䜿çšãã1ã€ã®ã¯ã©ã€ã¢ã³ãåŽã®ãã€ã¯ãæé©åã¯ãéåžžã®é£çµã眮ãæããŸãã ããšãã°ã段èœ1ïŒäžèšãåç
§ïŒã§ã¯ãåºæ¬æååã®é£çµã䜿çšãããŸããã ãããŠãããã¯ãã®æé©åã®åŸã«ã©ã®ããã«èŠãããã§ã
var items = []; ajaxResult.items.forEach(function(item) {
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ã¯ããã®ã€ãã³ãã®åŠçæ©èœãåŒã³åºãããã®æ¡ä»¶ãæºããããŠãããã©ããã確èªããŸãã
以äžã¯ãäœãèµ·ãã£ãŠãããã瀺ãéåžžã«ç°¡åãªäŸã§ãã
ãã¹ãŠã®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ããããã£ïŒéåžžã¯ç»é¢ã®å¹
ïŒãæ§æïŒå¶åŸ¡ïŒããããã«æããã䜿çšãããŸãã ãã®æ¹æ³ã䜿çšããŠãèŠçŽ ã®å¹
ãŸãã¯æµ®åäœçœ®ãé »ç¹ã«å€æŽããŸãã ãã®æ¹æ³ã«åºã¥ããŠèæ¯ç»åã倿ŽããŠã¿ãŸãããïŒ
.someElement { background-image: url(sunset.jpg); } @media only screen and (max-width : 1024px) { .someElement { background-image: url(sunset-small.jpg); } }
äžèšã®ã¹ããããã¯ããŠãŒã¶ãŒãã¢ãã€ã«ããã€ã¹ã䜿çšããŠããå ŽåïŒã¢ã¹ãã¯ãæ¯ã§ã¯ãªããã¡ã€ã«ãµã€ãºãæå³ããïŒãããå°ããç»åãããŒãããŸãã ãã®ããã«ãå°ããªã¹ãã©ã€ããæç»ããã ãã§ååã§ããããã«ãããããã°ã©ã ã§ç»åãæäœããããã¢ãã€ã«ããã€ã¹çšã«ã¹ãã©ã€ããã«ãããããããå¿
èŠããªããªããŸãã
ã»ãšãã©ã®åœã§ã¯ã䜿çšããããŒã¿ã«æéãããããŸãïŒç¡å¶éã§ã¯ãããŸããïŒãã€ãŸããèªã¿èŸŒã¿æéãççž®ããããšã§ãéãç¯çŽã§ããŸãã
å°ããªæŽæ°ã倧ããªæåå€ãã®å Žåãéçºè
ã¯ãŠãŒã¶ãŒã«ã€ããŠæåã«èããã®ã§ã¯ãªããèªåèªèº«ãšèªåã®ã³ãŒãã¹ã¿ã€ã«ãåªå
ããŸãã ãŠãŒã¶ãŒã®å¿«é©ããåäžãããããã«å€ãã®å°ããªæŽæ°ãçµã¿èŸŒãŸããŠãããããããŠã³ããŒãã®æé©åããã¹ãŠè¡ãããšã§ãµã€ãã®å°è±¡ãæ¹åãããŸãã Googleã¯ããã©ãŠã¶ã®ããªã䟿å©ãªæ¡åŒµæ©èœããªãªãŒã¹ããŸãããããã¯ããµã€ãã®èªã¿èŸŒã¿é床ãåæããããŒãžã®èªã¿èŸŒã¿ãå¢ããããã«ä»ã«æé©åã§ãããã®ãèŠã€ããã®ã«åœ¹ç«ã¡ãŸãã ãã®æ¡åŒµæ©èœã¯PageSpeed InsightsãšåŒã°ããŸãã æšæºã®éçºè
ããã«ãã䜿çšã§ããŸãã ãã®ãŠã£ãžã§ããã¯ãããŒã¿ã«ã®æå°éã®åæã衚瀺ããããŒã¿ã«ã®æé©åã«é¢ãããã³ããæäŸããŸããäŸïŒ

ãããã«ããããµã€ããå¯èœãªéãæé©åããå¿
èŠããããŸãã åäœãéããªãã»ã©ãããå€ãã®ãŠãŒã¶ãŒãæºè¶³ããããã«ãªãããµã€ãã®åçãå¢ããŸãã æ®å¿µãªããã誰ããããã«ã€ããŠèããŠããããã§ã¯ãããŸããã ããã¯ãªã³ããã³ãã§ãèŠãããšãã§ããŸãïŒäœ¿ãããããŸãã¯ããã¯ãšã³ãã®ç£æ»ã¯ç§ãã¡ã«ãã°ãã°æ³šæããã誰ãããã³ããšã³ãã®ç£æ»ãèŠæ±ããããšã¯ãã£ãã«ãããŸããããããã¯é£ããã¯ãªããæ¹åã®ããã®è¯ãåéãæäŸããŸãã