JavaScript ã®ããã©ã¼ãã³ã¹
ã¦ã§ããµã¤ãä¸ã§ JavaScript ãã©ã®ããã«ä½¿ç¨ãã¦ããããæ¤è¨ããJavaScript ãå¼ãèµ·ããå¯è½æ§ã®ããããã©ã¼ãã³ã¹ã®åé¡ã軽æ¸ããæ¹æ³ãèãããã¨ã¯ã¨ã¦ãéè¦ã§ããå¹³åçãªã¦ã§ããµã¤ãã§ã¯ããã¦ã³ãã¼ãããããã¤ãæ°ã® 70% 以ä¸ç»åã¨åç»ãå ãã¦ãã¾ããããã¤ãæ°ã§ã¯ JavaScript ã¯ããã©ã¼ãã³ã¹ã«æªå½±é¿ãä¸ããå¯è½æ§ãããé«ãããã¦ã³ãã¼ãæéãã¬ã³ããªã³ã°ããã©ã¼ãã³ã¹ãCPU ããã³ããããªã¼ã®ä½¿ç¨éã«å¤§ããªå½±é¿ãä¸ããå¯è½æ§ãããã¾ãããã®è¨äºã§ã¯ãã¦ã§ããµã¤ãã®ããã©ã¼ãã³ã¹ãåä¸ãããããã® JavaScript ãæé©åããããã®ãã³ãã¨ãã¯ããã¯ããç´¹ä»ãã¾ãã
| åææ¡ä»¶: | åºæ¬çãªã½ããã¦ã§ã¢ã®ã¤ã³ã¹ãã¼ã«ã ã¯ã©ã¤ã¢ã³ãå´ã®ã¦ã§ãæè¡ã®åºæ¬çãªç¥è |
|---|---|
| ç®æ¨: | JavaScript ãããã©ã¼ãã³ã¹æé©åã«ä¸ããå½±é¿ã«ã¤ãã¦ãã¾ããJavaScript ã®ãã¡ã¤ã«ãµã¤ãºã ããã¦ã§ãããã©ã¼ãã³ã¹ã«ä¸ããå½±é¿ã§ã¯ãªããã¨ãå¦ã¶ã |
æé©åãããæé©åããªãã
ã³ã¼ãã®æé©åãå§ããåã«æåã«ããä½ãæé©åããå¿ è¦ããããããæç¢ºã«ããå¿ è¦ãããã¾ãã以ä¸ã§èª¬æãããã³ãããã¯ããã¯ã®ä¸ã«ã¯ãã»ã¼ãã¹ã¦ã®ã¦ã§ãããã¸ã§ã¯ãã«å¥½ã¾ãããã¨ã§ãããç¹å®ã®ç¶æ³ã§ã®ã¿å¿ è¦ãªãã®ãããã¾ãããããã®ãã¯ããã¯ããã¹ã¦é©ç¨ãããã¨ãããã¨ã¯ãããããä¸å¿ è¦ã§ãããæéã®ç¡é§ã«ãªãããããã¾ãããåããã¸ã§ã¯ãã§å®éã«å¿ è¦ãªããã©ã¼ãã³ã¹ã®æé©åã¯ä½ããè¦æ¥µããå¿ è¦ãããã¾ãã
ãããè¡ãã«ã¯ããµã¤ãã®ããã©ã¼ãã³ã¹ã測å®ããå¿ è¦ãããã¾ããååã®ãªã³ã¯ã§ç¤ºããããã«ãããã©ã¼ãã³ã¹ã測å®ããã«ã¯ããã¤ãã®æ¹æ³ãããããã®ä¸ã«ã¯é«åº¦ãªããã©ã¼ãã³ã¹ API ã使ç¨ãããã®ãããã¾ãããã ããã¾ãæå§ãã«ãçµã¿è¾¼ã¿ã®ãã©ã¦ã¶ã¼ãããã¯ã¼ã¯ãã¼ã«ãããã©ã¼ãã³ã¹ãã¼ã«ãªã©ã®ãã¼ã«ã®ä½¿ç¨æ¹æ³ãå¦ã³ããã¼ã¸ã®èªã¿è¾¼ã¿ã«æéãããããæé©åãå¿ è¦ãªé¨åã確èªãããã¨ããå§ããã¾ãã
JavaScript ã®ãã¦ã³ãã¼ãã®æé©å
æãããã©ã¼ãã³ã¹ãè¯ãããããã¯ãã JavaScript ãæãå°ãªãããã«ã¯ãã¾ã£ãã JavaScript ã使ç¨ããªããã¨ã§ãã JavaScript ã¯ã§ããã ã使ç¨ããªãããã«ãã¾ããããçæãã¹ããã³ããããã¤ããç´¹ä»ãã¾ãã
- ãã¬ã¼ã ã¯ã¼ã¯ã¯å¸¸ã«å¿ è¦ã¨ã¯éãã¾ããã JavaScript ãã¬ã¼ã ã¯ã¼ã¯ãä½¿ãæ £ãã¦ããããããã¾ããããã®ãã¬ã¼ã ã¯ã¼ã¯ã®ä½¿ç¨ã«çµé¨ããããèªä¿¡ãããããããæä¾ãããã¹ã¦ã®ãã¼ã«ãåæ§ã«æ°ã«å ¥ã£ã¦ããå ´åã¯ãã»ã¨ãã©ã®ããã¸ã§ã¯ããæ§ç¯ããããã®å®çªãã¼ã«ã«ãªãããããã¾ããããã ãããã¬ã¼ã ã¯ã¼ã¯ã¯ JavaScript ãå¤ç¨ãã¾ããJavaScript ã®è¦ä»¶ãããã¤ããããããªãéçãªä½¿ãåæã®è¯ããã®ã使ããå ´åããã®ãã¬ã¼ã ã¯ã¼ã¯ã¯å¿ è¦ãªãã§ããããæ¨æºã® JavaScript ãæ°è¡ä½¿ç¨ãã¦ãå¿ è¦ãªæ©è½ãå®è£ ã§ããããããã¾ããã
- ããã·ã³ãã«ãªè§£æ±ºçãæ¤è¨ãã¦ãã ãããå®è£ ããæ´¾æã§è峿·±ã解決çãããããããã¾ããããã¦ã¼ã¶ã¼ããããè©ä¾¡ãããã©ãããæ¤è¨ãã¦ãã ãããã¦ã¼ã¶ã¼ã¯ããã·ã³ãã«ãªãã®ã好ãã®ã§ã¯ãªãããããï¼
- 使ç¨ããã¦ããªãã³ã¼ããé¤å»ãã¦ãã ãããããã¯å½ç¶ã®ãã¨ã®ããã«èãããããããã¾ããããéçºããã»ã¹ä¸ã«è¿½å ããã使ç¨ããã¦ããªãæ©è½ãã¯ãªã¼ã³ã¢ãããããã¨ãå¿ãã¦ãã¾ãéçºè ãé©ãã»ã©å¤ãã®ã§ãã追å ããã³é¤å»ããå 容ã«ã¤ãã¦ã¯ãæ éã«æ¤è¨ããå¿ è¦ãããã¾ãã使ç¨ããã¦ãããã©ããã«é¢ä¿ãªãããã¹ã¦ã®ã¹ã¯ãªããã¯è§£éããã¾ãããããã£ã¦ããã¦ã³ãã¼ããé«éåããå³å¹æ§ã®ããæ¹æ³ã¯ã使ç¨ããã¦ããªãæ©è½ããã¹ã¦åé¤ãããã¨ã§ããã¾ãããã¬ã¼ã ã¯ã¼ã¯ã§å©ç¨ã§ããæ©è½ã®ãã¡ãå®éã«ä½¿ç¨ããã®ã¯ããä¸é¨ã§ãããã¨ãå¤ããã¨ãèæ ®ãã¦ãã ãããå¿ è¦ãªé¨åã®ã¿ãå«ããç¬èªã®ãã¬ã¼ã ã¯ã¼ã¯ãæ§ç¯ãããã¨ã¯å¯è½ã§ããããï¼
- çµã¿è¾¼ã¿ã®ãã©ã¦ã¶ã¼æ©è½ãæ¤è¨ãã¦ãã ããã JavaScript ã使ç¨ãã¦èªåèªèº«ã§ä½æãããããããã©ã¦ã¶ã¼ããã§ã«ä¿æããæ©è½ã使ç¨ã§ããå ´åãããã¾ããä¾ãã°ã次ã®ããã«ãã¾ãã
- çµã¿è¾¼ã¿ã®ã¯ã©ã¤ã¢ã³ãå´ãã©ã¼ã æ¤è¨¼ã使ç¨ãã¦ãã ããã
- ãã©ã¦ã¶ã¼ã®
<video>ãã¬ã¼ã¤ã¼ã使ç¨ãã¦ãã ããã - JavaScript ã¢ãã¡ã¼ã·ã§ã³ã©ã¤ãã©ãªã¼ã§ã¯ãªããCSS ã¢ãã¡ã¼ã·ã§ã³ ã使ç¨ãã¦ãã ããï¼ã¢ãã¡ã¼ã·ã§ã³ã®å¦çãåç §ãã¦ãã ããï¼ã
ã¾ããJavaScript ããéè¦ãªé¨åã¨éè¦ã§ãªãé¨åã表ãè¤æ°ã®ãã¡ã¤ã«ã«åå²ãããã¨ããå§ããã¾ãã JavaScript ã¢ã¸ã¥ã¼ã«ã使ç¨ããã¨ãå¥åã®å¤é¨ JavaScript ãã¡ã¤ã«ã使ç¨ãããããããããããå¹ççã«è¡ããã¨ãã§ãã¾ãã
ãã®å¾ããããã®å°ããªãã¡ã¤ã«ãæé©åãããã¨ãã§ãã¾ãããããã¡ã¤åã¯ããã¡ã¤ã«å ã®æåæ°ã忏ããããã«ãã£ã¦ JavaScript ã®ãã¤ãæ°ããµã¤ãºã縮å°ãã¾ãã Gzip å§ç¸®ã¯ãã¡ã¤ã«ãããã«å§ç¸®ãããããã³ã¼ãããããã¡ã¤ããªãå ´åã§ã使ç¨ãã¾ããããBrotli 㯠Gzip ã¨ä¼¼ã¦ãã¾ãããä¸è¬çã« Gzip å§ç¸®ãããåªããããã©ã¼ãã³ã¹ãçºæ®ãã¾ãã
ã³ã¼ããæåã§åå²ãã¦æé©åãããã¨ãã§ãã¾ãããå¤ãã®å ´åã webpack ãªã©ã®ã¢ã¸ã¥ã¼ã«ãã³ãã©ã¼ã使ç¨ããã¨ããã广çã«ãããè¡ããã¨ãã§ãã¾ãã
æ§æè§£æã¨å®è¡ã®å¦ç
ãã®ç¯ã«å«ã¾ãã¦ããã³ããè¦ã¦ããåã«ããã©ã¦ã¶ããã¼ã¸ãã¬ã³ããªã³ã°ããéç¨ã§ JavaScript ãå¦çãããå ´æã«ã¤ãã¦èª¬æãã¦ããã¾ããããã¦ã§ããã¼ã¸ãèªã¿è¾¼ã¾ããã¨ãã«ã¯ããããªãã¾ãã
- é常ãHTML ã¯ããã¼ã¸ã«è¡¨ç¤ºãããé ã«æåã«æ§æè§£æããã¾ãã
- CSS ãæ¤åºãããã¨ããã®ãã¼ã¸ã«é©ç¨ããå¿ è¦ã®ããã¹ã¿ã¤ã«ãçè§£ããããã«æ§æè§£æããã¾ãããã®éã«ãç»åãã¦ã§ããã©ã³ããªã©ã®ãªã³ã¯ãããè³ç£ãåå¾ããå§ãã¾ãã
- JavaScript ãæ¤åºãããã¨ããã©ã¦ã¶ã¼ã¯ãããæ§æè§£æãè©ä¾¡ãããã¼ã¸ã«å¯¾ãã¦å®è¡ãã¾ãã
- å°ãå¾ã«ããã©ã¦ã¶ã¼ã¯ãé©ç¨ããã CSS ãæå®ãã¦ãå HTML è¦ç´ ã®ã¹ã¿ã¤ã«ã決å®ãã¾ãã
- ã¹ã¿ã¤ã«ãè¨å®ãããçµæãç»é¢ã«æç»ããã¾ãã
ã¡ã¢: ããã¯ãä½ãèµ·ããããã¨ã¦ãåç´åãã説æã§ãããããããã®ã¢ã¤ãã£ã¢ã¯ä¼ããã¨æãã¾ãã
ããã§éè¦ãªã®ã¯ã¹ããã 3 ã§ããæ¢å®ã§ã¯ãJavaScript ã®æ§æè§£æã¨å®è¡ã¯ã¬ã³ããªã³ã°ããããã¯ãã¾ããã¤ã¾ããJavaScript ãæ¤åºãããã¨ããã®ã¹ã¯ãªãããå¦çãããã¾ã§ããã®å¾ã«ç¶ã HTML ã®æ§æè§£æããããã¯ããã¾ãããã®çµæãã¹ã¿ã¤ã«ã®è¨å®ãæç»ããããã¯ããã¾ãããããã£ã¦ããã¦ã³ãã¼ãããå 容ã ãã§ãªãããã®ã³ã¼ãããã¤ãã©ã®ããã«å®è¡ãããããæ éã«æ¤è¨ããå¿ è¦ãããã¾ãã
次ã®ããã¤ãã®ç¯ã§ã¯ãJavaScript ã®æ§æè§£æã¨å®è¡ãæé©åããããã®æçãªãã¯ããã¯ãç´¹ä»ãã¾ãã
éè¦ãªè³ç£ãã§ããã ãæ©ãèªã¿è¾¼ã
ã¹ã¯ãªãããæ¬å½ã«éè¦ã§ãèªã¿è¾¼ã¿ãååéããªãããã©ã¼ãã³ã¹ã«å½±é¿ãä¸ãã¦ãããã¨ãæ¸å¿µãããå ´åã¯ããã®ã¹ã¯ãªãããææ¸ã® <head> å
ã«èªã¿è¾¼ããã¨ãã§ãã¾ãã
<head>
...
<script src="main.js"></script>
...
</head>
ããã¯ãã¾ãããã¾ãããã¬ã³ããªã³ã°ããããã¯ãã¾ããããè¯ãæ¹æ³ã¯ãrel="preload" ã使ç¨ãã¦ãéè¦ãª JavaScript ã®äºåãã¼ãã¼ã使ãããã¨ã§ãã
<head>
...
<!-- JavaScript ãã¡ã¤ã«ãå
èªã¿ -->
<link rel="preload" href="important-js.js" as="script" />
<!-- JavaScript ã¢ã¸ã¥ã¼ã«ãå
èªã¿ -->
<link rel="modulepreload" href="important-module.js" />
...
</head>
å
èªã¿ã® <link> ã¯ãã¬ã³ããªã³ã°ããããã¯ãããã¨ãªããJavaScript ãã§ããã ãæ©ãåå¾ãã¾ãããã®å¾ããã¼ã¸å
ã®ä»»æã®å ´æã§ããã使ç¨ãããã¨ãã§ãã¾ãã
<!-- æå³ã®ããå ´æã«ã¯ãã¹ã¦è¨è¼ãã -->
<script src="important-js.js"></script>
ã¾ãã¯ãJavaScript ã¢ã¸ã¥ã¼ã«ã®å ´åã¯ãã¹ã¯ãªããå ã§æ¬¡ã®ããã«è¨è¿°ãã¾ãã
import { someFunction } from "important-module.js";
ã¡ã¢: åèªã¿è¾¼ã¿ã«ãã£ã¦ãã¹ã¯ãªããããããå«ããæç¹ã§ç¢ºå®ã«èªã¿è¾¼ã¾ããã¨ã¯éãã¾ãããããã¦ã³ãã¼ããæ©ãå§ã¾ãã¨ããæå³ã§ããã¬ã³ããªã³ã°ããããã¯ããæéã¯ãå®å ¨ã«é¤å»ãããªãã¦ãç縮ããã¾ãã
éè¦ã§ãªã JavaScript ã®å®è¡ãé ããã
䏿¹ãéè¦ã§ãªã JavaScript ã®è§£éã¨å®è¡ã¯ãå¿ è¦ãªã¨ãã«å¾åãã«ããããã«ãã¦ãã ããããã¹ã¦ãåãã£ã¦èªã¿è¾¼ãã¨ãä¸å¿ è¦ã«ã¬ã³ããªã³ã°ããããã¯ããã¦ãã¾ãã¾ãã
ã¾ãã<script> è¦ç´ ã« async 屿§ã追å ãã¾ãã
<head>
...
<script async src="main.js"></script>
...
</head>
ããã«ãããã¹ã¯ãªãã㯠DOM ã®æ§æè§£æã¨ä¸¦åãã¦åå¾ããããããåæã«æºåãå®äºããã¬ã³ããªã³ã°ããããã¯ããããã¨ã¯ããã¾ããã
ã¡ã¢:
ãã 1 ã¤ã®å±æ§ defer ãããã¾ããããã¯ãææ¸ãæ§æè§£æãããå¾ãDOMContentLoaded ã¤ãã³ããçºçããåã«ã¹ã¯ãªãããå®è¡ãã¾ãããã㯠async ã¨åæ§ã®å¹æãããã¾ãã
ã¾ããå¿ è¦ãªã¤ãã³ããçºçããã¾ã§ JavaScript ãã¾ã£ããèªã¿è¾¼ã¾ãªãã¨ããæ¹æ³ãããã¾ããããã¯ãä¾ãã° DOM ã¹ã¯ãªããã使ç¨ãã¦å®ç¾ãããã¨ãã§ãã¾ãã
const scriptElem = document.createElement("script");
scriptElem.src = "index.js";
scriptElem.addEventListener("load", () => {
// index.js ã«å«ã¾ãã¦ãã颿°ã確å®ã«èªã¿è¾¼ã¾ãããããã®é¢æ°ãå®è¡
init();
});
document.head.append(scriptElem);
JavaScript ã¢ã¸ã¥ã¼ã«ã¯ã import() 颿°ã使ç¨ãã¦åçã«èªã¿è¾¼ããã¨ãã§ãã¾ãã
import("./modules/myModule.js").then((module) => {
// Do something with the module
});
é·ãã¿ã¹ã¯ã®åè§£
ãã©ã¦ã¶ã¼ã JavaScript ãå®è¡ããã¨ãã¹ã¯ãªããã¯ãåå¾ãªã¯ã¨ã¹ãã®çºè¡ãã¤ãã³ããã³ãã©ã¼ã«ããã¦ã¼ã¶ã¼ã®æä½ãå ¥åã®å¦çãJavaScript ã«ããã¢ãã¡ã¼ã·ã§ã³ã®å®è¡ãªã©ãé çªã«å®è¡ãããã¿ã¹ã¯ã«æ´çããã¾ãã
ããã®å¤§é¨åã¯ã¡ã¤ã³ã¹ã¬ããã§å®è¡ããã¾ããã[ã¦ã§ãã¯ã¼ã«ã¼] (/ja/docs/Web/API/Web_Workers_API/Using_web_workers) ã§å®è¡ããã JavaScript ã¯ä¾å¤ã§ããã¡ã¤ã³ã¹ã¬ããã¯ãä¸åº¦ã« 1 ã¤ã®ã¿ã¹ã¯ããå®è¡ã§ãã¾ããã
1 ã¤ã®ã¿ã¹ã¯ã®å®è¡ã« 50 ããªç§ä»¥ä¸ãããå ´åããã®ã¿ã¹ã¯ã¯é·ãã¿ã¹ã¯ã¨åé¡ããã¾ããé·ãã¿ã¹ã¯ã®å®è¡ä¸ã«ã¦ã¼ã¶ã¼ããã¼ã¸ãæä½ãããã¨ããããéè¦ãª UI ã®æ´æ°ããªã¯ã¨ã¹ãããããããã¨ãã¦ã¼ã¶ã¼ã®ä½¿ç¨æã«æªå½±é¿ãåºã¾ããæå¾ ãããã¬ã¹ãã³ã¹ãè¦è¦çãªæ´æ°ãé ããUI ã®åå¿ãé ããªã£ãããå¿çããªããªã£ãããã¾ãã
ãã®åé¡ãåé¿ããã«ã¯ãé·ãã¿ã¹ã¯ãå°ããªã¿ã¹ã¯ã«åå²ããå¿ è¦ãããã¾ããããã«ããããã©ã¦ã¶ã¼ã¯éè¦ãªã¦ã¼ã¶ã¼æä½ã®å¦çã UI ã®æ´æ°ãè¡ãæ©ä¼ãå¢ãã¾ãããã©ã¦ã¶ã¼ã¯ãé·ãã¿ã¹ã¯ã®åå¾ã ãã§ãªããå°ããªã¿ã¹ã¯ã®éã«ãããã®å¦çãå®è¡ã§ããå¯è½æ§ãããã¾ããJavaScript ã§ã¯ãã³ã¼ããå¥åã®é¢æ°ã«åå²ãããã¨ã§ããããå®ç¾ã§ãã¾ããããã¯ãã¡ã³ããã³ã¹ããããã°ããã¹ãã®ä½æã容æã« ãªããªã©ãä»ã«ãããã¤ãã®çç±ããæå³ãããã¾ãã
ä¾ã示ãã¾ãã
function main() {
a();
b();
c();
d();
e();
}
ãããããã®ãããªæ§é ã§ã¯ãã¡ã¤ã³ã¹ã¬ããã®ãããã¯ã鲿¢ãããã¨ã¯ã§ãã¾ããã5 ã¤ã®é¢æ°ã¯ãã¹ã¦ 1 ã¤ã® main 颿°å ã§å®è¡ããã¦ããããããã©ã¦ã¶ã¼ã¯ãã¹ã¦ãåä¸ã®é·ãã¿ã¹ã¯ã¨ãã¦å®è¡ãã¾ãã
ãããå¦çããããã«ãã¡ã¤ã³ã¹ã¬ããã«åªå
権ãè²ãã³ã¼ããåå¾ããããã« "yield" 颿°ã宿çã«å®è¡ããå¾åãããã¾ããããã¯ãã³ã¼ããè¤æ°ã®èª²é¡ã«åå²ããããã®å®è¡ã®éã«ãã©ã¦ã¶ã¼ã UI ã®æ´æ°ãªã©ã®åªå
度ã®é«ã課é¡ãå¦çããæ©ä¼ãä¸ãããããã¨ãæå³ãã¦ãã¾ãããã®é¢æ°ã®ä¸è¬çãªãã¿ã¼ã³ã§ã¯ãsetTimeout() ã使ç¨ãã¦ãå®è¡ãå¥åã®ã¿ã¹ã¯ã«å»¶æãã¾ãã
function yield() {
return new Promise((resolve) => {
setTimeout(resolve, 0);
});
}
ããã¯ãåã¿ã¹ã¯ã®å®è¡å¾ã«ã¡ã¤ã³ã¹ã¬ããã«å¶å¾¡ãæ»ãããã«ã次ã®ããã«ã¿ã¹ã¯ã©ã³ãã¼ãã¿ã¼ã³å ã§ä½¿ç¨ãããã¨ãã§ãã¾ãã
async function main() {
// å®è¡ãã颿°ã®é
åã使
const tasks = [a, b, c, d, e];
// ã¿ã¹ã¯ãéãã¦ç¹°ãè¿ã
while (tasks.length > 0) {
// æåã®ã¿ã¹ã¯ãã¿ã¹ã¯é
åããåãåºã
const task = tasks.shift();
// ã¿ã¹ã¯ãå®è¡
task();
// ã¡ã¤ã³ã¹ã¬ããã«è²ã
await yield();
}
}
ãããããã«æ¹åããããã«ãå©ç¨å¯è½ãªå ´å㯠Scheduler.yield() ã使ç¨ãã¦ããã®ã³ã¼ãããã¥ã¼å
ã®éè¦åº¦ã®ä½ãä»ã®èª²é¡ãããå
ã«å®è¡ãç¶ããããã«ãããã¨ãã§ãã¾ãã
function yield() {
// å©ç¨å¯è½ãªå ´å㯠scheduler.yield() ãã
if ("scheduler" in window && "yield" in scheduler) {
return scheduler.yield();
}
// ã¿ã¤ã ã¢ã¦ãã«ä»£æ¿
return new Promise((resolve) => {
setTimeout(resolve, 0);
});
}
JavaScript ã¢ãã¡ã¼ã·ã§ã³ã®å¦ç
ã¢ãã¡ã¼ã·ã§ã³ã¯ç¥è¦çããã©ã¼ãã³ã¹ãæ¹åããã¤ã³ã¿ã¼ãã§ã¤ã¹ãããè»½å¿«ã«æããããã¦ã¼ã¶ã¼ããã¼ã¸ã®èªã¿è¾¼ã¿ãå¾ ã¤éã«ãé²è¡ç¶æ³ãé²ãã§ãããã¨ãåæ§ã«æãããããã¨ãã§ãã¾ãï¼ä¾ãã°ãèªã¿è¾¼ã¿ã¹ããã¼ãªã©ï¼ãããããã¢ãã¡ã¼ã·ã§ã³ã大ãããªã£ãããã¢ãã¡ã¼ã·ã§ã³ã®æ°ãå¢ãããããã¨ãå½ç¶ãå¦çè½åãããå¤ãè¦æ±ãããããã«ãªããããã©ã¼ãã³ã¹ãä½ä¸ããå¯è½æ§ãããã¾ãã
ã¢ãã¡ã¼ã·ã§ã³ã«é¢ããæãæç½ãªã¢ããã¤ã¹ã¯ãã¢ãã¡ã¼ã·ã§ã³ã®ä½¿ç¨ãå°ãªããããã¨ã§ããå¿ è¦ã®ãªãã¢ãã¡ã¼ã·ã§ã³ã¯åé¤ããä¾ãã°ãä½é»åã®ç«¯æ«ãããããªã¼é»åãéããã¦ããã¢ãã¤ã«ç«¯æ«ã使ç¨ãã¦ããã¦ã¼ã¶ã¼ã®ããã«ãç°å¢è¨å®ã§ã¢ãã¡ã¼ã·ã§ã³ããªãã«è¨å®ã§ããããã«ãããã¨ãæ¤è¨ãã¦ãã ããã
éè¦ãª DOM ã¢ãã¡ã¼ã·ã§ã³ã«ã¤ãã¦ã¯ãJavaScript ã¢ãã¡ã¼ã·ã§ã³ã§ã¯ãªããå¯è½ãªå ´å㯠CSS ã¢ãã¡ã¼ã·ã§ã³ã使ç¨ãããã¨ããå§ããã¾ãï¼ã¦ã§ãã¢ãã¡ã¼ã·ã§ã³ APIã§ã¯ãJavaScript ã使ç¨ã㦠CSS ã¢ãã¡ã¼ã·ã§ã³ã«ç´æ¥ããã¯ããæ¹æ³ãæä¾ãã¦ãã¾ãï¼ãJavaScript ã使ç¨ãã¦ã¤ã³ã©ã¤ã³ã¹ã¿ã¤ã«ãæä½ãããããããã©ã¦ã¶ã¼ã使ç¨ã㦠DOM ã¢ãã¡ã¼ã·ã§ã³ãç´æ¥å®è¡ããã»ãããã¯ããã«é«éã§å¹ççã§ããCSS ã®ããã©ã¼ãã³ã¹ã®æé©å > ã¢ãã¡ã¼ã·ã§ã³ã®å¦ç ããåç §ãã ããã
JavaScript ã§å¦çã§ããªãã¢ãã¡ã¼ã·ã§ã³ãä¾ãã° HTML ã® <canvas> ã®ã¢ãã¡ã¼ã·ã§ã³ãªã©ã«ã¤ãã¦ã¯ãWindow.setInterval() ãªã©ã®å¤ããªãã·ã§ã³ã§ã¯ãªãã Window.requestAnimationFrame() ã使ç¨ãããã¨ããå§ããã¾ãã requestAnimationFrame() ã¡ã½ããã¯ãã¢ãã¡ã¼ã·ã§ã³ãã¬ã¼ã ãå¹ççãã¤ä¸è²«ãã¦å¦çããã¹ã ã¼ãºãªä½¿ãåæãå®ç¾ããããã«ç¹å¥ã«è¨è¨ããã¦ãã¾ããåºæ¬çãªãã¿ã¼ã³ã¯ã次ã®ããã«è¦ã¦ããã¾ãã
function loop() {
// ã¢ãã¡ã¼ã·ã§ã³ã®æ¬¡ã®ãã¬ã¼ã ãæç»ããåã«ãã£ã³ãã¹ãã¯ãªã¢ãã
ctx.fillStyle = "rgb(0 0 0 / 25%)";
ctx.fillRect(0, 0, width, height);
// ãã£ã³ãã¹ã«ãªãã¸ã§ã¯ããæç»ããæ¬¡ã®ãã¬ã¼ã ã«åãã¦ä½ç½®æå®ãã¼ã¿ãæ´æ°
for (const ball of balls) {
ball.draw();
ball.update();
}
// requestAnimationFrame ãå¼ã³åºãã¦ãã¢ãã¡ã¼ã·ã§ã³ãã¹ã ã¼ãºã«
// ä¿ã¤ããã«é©åãªæç¹ã§ loop() 颿°ãå度å®è¡ãã
requestAnimationFrame(loop);
}
// ã¢ãã¡ã¼ã·ã§ã³ã®å®è¡ãè¨å®ããã«ã¯ã loop() 颿°ã 1 åå¼ã³åºãã¾ãã
loop();
ãã£ã³ãã¹ã¢ãã¡ã¼ã·ã§ã³ã®ç´ æ´ãããç´¹ä»ã¯ãã°ã©ãã£ãã¯ã®æç» > ã¢ãã¡ã¼ã·ã§ã³ããã詳細ãªä¾ã¯ããªãã¸ã§ã¯ãæ§ç¯ã®å®è·µã§è¦ããã¨ãã§ãã¾ããã¾ãããã£ã³ãã¹ã®ãã¥ã¼ããªã¢ã«ã¯ããã£ã³ãã¹ãã¥ã¼ããªã¢ã«ã§ã¾ã¨ãã¦ç¢ºèªã§ãã¾ãã
ã¤ãã³ãããã©ã¼ãã³ã¹ã®æé©å
ã¤ãã³ãã¯ãç¹ã«é£ç¶ãã¦å®è¡ããå ´åããã©ã¦ã¶ã¼ã®è¿½è·¡ããã³å¦çã«å¤å¤§ãªè² è·ãããããã¨ãããã¾ããä¾ãã°ã mousemove ã¤ãã³ãã使ç¨ãã¦ãã¦ã¹ã®ä½ç½®ã追跡ããããããã¼ã¸ã®ç¹å®ã®é åå
ã«ã¾ã ãããã©ããã調ã¹ãã¨ãã¾ãã
function handleMouseMove() {
// ãã¦ã¹ãã¤ã³ã¿ã¼ãè¦ç´ å
ã«ããéã«ä½ããè¡ã
}
elem.addEventListener("mousemove", handleMouseMove);
ãã¼ã¸ã§ <canvas> ã®ã²ã¼ã ãå®è¡ãã¦ããå ´åããã£ã³ãã¹å
ã«ãã¦ã¹ãããéããã¦ã¹ã®åããã«ã¼ã½ã«ã®ä½ç½®ã常ã«ãã§ãã¯ããã¹ã³ã¢ãæéããã¹ã¦ã®ã¹ãã©ã¤ãã®ä½ç½®ãè¡çªæ¤åºæ
å ±ãªã©ãã²ã¼ã ã®ç¶æ
ãæ´æ°ãããã¨æãã§ããããã²ã¼ã ãçµäºãããããããã®å¦çã¯ã¾ã£ããå¿
è¦ãªããªãããã®ã¤ãã³ããå¾
ã¡ç¶ãããã¨ã¯ãå®éã«ã¯å¦çè½åã®ç¡é§ã«ãªãã¾ãã
ãããã£ã¦ãå¿
è¦ããªããªã£ãã¤ãã³ããªã¹ãã¼ã¯é¤å»ãããã¨ããå§ããã¾ããããã¯ã removeEventListener() ã使ç¨ãã¦è¡ããã¨ãã§ãã¾ãã
elem.removeEventListener("mousemove", handleMouseMove);
ãã 1 ã¤ã®ãã³ãã¯ãå¯è½ãªéãã¤ãã³ãã®å§è²ã使ç¨ãããã¨ã§ãã夿°ã®åè¦ç´ ã®ããããã¨ä½ç¨ããã¦ã¼ã¶ã¼ã«å¯¾ãã¦ã¬ã¹ãã³ã¹ã¨ãã¦å®è¡ããã³ã¼ããããå ´åããã®è¦ªã«ã¤ãã³ããªã¹ãã¼ãè¨å®ãããã¨ãã§ãã¾ããããããã®åè¦ç´ ã§çºè¡ãããã¤ãã³ãã¯ããã®è¦ªã«ããã«ã¢ãããããããååè¦ç´ ã«åå¥ã«ã¤ãã³ããªã¹ãã¼ãè¨å®ããå¿ è¦ã¯ããã¾ããã追跡ãã¹ãã¤ãã³ããªã¹ãã¼ãå°ãªãã¨ãããã¨ã¯ãããã©ã¼ãã³ã¹ãåä¸ãããã¨ãæå³ãã¾ãã
è©³ç´°ã¨æç¨ãªä¾ã«ã¤ãã¦ã¯ãã¤ãã³ãã®å§è²ãåç §ãã¦ãã ããã
ããå¹ççãªã³ã¼ããæ¸ãããã®ãã³ã
ã³ã¼ããããå¹ççã«å®è¡ããããã®ãããã¤ãã®ä¸è¬çãªãã¹ããã©ã¯ãã£ã¹ãããã¾ãã
-
DOM ã®æä½ã忏: DOM ã¸ã®ã¢ã¯ã»ã¹ã¨æ´æ°ã¯è¨ç®ã³ã¹ããé«ããããJavaScript ã§è¡ãæä½ã¯æå°éã«æããå¿ è¦ãããã¾ããç¹ã«ãDOM ã¢ãã¡ã¼ã·ã§ã³ãé »ç¹ã«å®è¡ããå ´åã¯æ³¨æãå¿ è¦ã§ãï¼ä¸è¨ã® JavaScript ã¢ãã¡ã¼ã·ã§ã³ã®å¦çãåç §ãã¦ãã ããï¼ã
-
DOM ã®å¤æ´ãã¾ã¨ãã: éè¦ãª DOM ã®å¤æ´ã¯ãçºçãã¨ã«åå¥ã«çºè¡ããã®ã§ã¯ãªããã¾ã¨ãã¦å®è¡ã§ããã°ã«ã¼ãã«ã¾ã¨ãã¦ãã ãããããã«ããããã©ã¦ã¶ã¼ãå®éã«å®è¡ãã使¥éã縮å°ã§ããã ãã§ãªããç¥è¦çããã©ã¼ãã³ã¹ãæ¹åããã¾ããå°ããªæ´æ°ãçµ¶ããå®è¡ããããããä¸åº¦ã«è¤æ°ã®æ´æ°ãã¾ã¨ãã¦å®è¡ããæ¹ããUI ãããã¹ã ã¼ãºã«è¦ãã¾ããããã§æçãªãã³ãã¯ããã¼ã¸ã«è¿½å ãã HTML ã®å¡ã大ããå ´åã¯ãåã¢ã¤ãã ãåå¥ã«è¿½å ããã®ã§ã¯ãªããã¾ããã©ã°ã¡ã³ãå ¨ä½ãæ§ç¯ãï¼é常ã¯
DocumentFragmentå ã§ï¼ãããã DOM ã«ä¸åº¦ã«è¿½å ãããã¨ã§ãã -
HTML ãç°¡ç¥åãã: DOM ããªã¼ãåç´ã§ããã»ã©ãJavaScript ã«ããã¢ã¯ã»ã¹ãæä½ãé«éã«ãªãã¾ãã UI ã«ä½ãå¿ è¦ããããèããä¸è¦ãªé¨åããã¹ã¦é¤å»ãã¦ãã ããã
-
ã«ã¼ãã³ã¼ãã®éã縮å°ãã: ã«ã¼ãã¯ã³ã¹ããããããããã³ã¼ãå ã®ã«ã¼ãã®ä½¿ç¨éã¯å¯è½ãªéã縮å°ãã¦ãã ãããã«ã¼ããé¿ããããªãå ´åã¯ã次ã®ç¹ã«æ³¨æãã¦ãã ããã
-
å¿ è¦ã®ãªãå ´åã¯ã
breakã¾ãã¯continueæãé©å®ä½¿ç¨ãã¦ãã«ã¼ãå ¨ä½ãå®è¡ãããã¨ãé¿ãã¦ãã ãããä¾ãã°ãé åããç¹å®ã®ååãæ¤ç´¢ããå ´åããã®ååãå¾ããããã«ã¼ãã䏿ãã¹ãã§ãããã以ä¸ã®ã«ã¼ãã®å復å¦çãå®è¡ããå¿ è¦ã¯ããã¾ãããjsfunction processGroup(array) { const toFind = "Bob"; for (let i = 0; i < array.length - 1; i++) { if (array[i] === toFind) { processMatchingArray(array); break; } } } -
ã«ã¼ãã®å¤ã§ä¸åº¦ã ãå¿ è¦ãªä½æ¥ã¯ãã«ã¼ãã®å¤ã§è¡ã£ã¦ãã ãããããã¯å°ãå½ããåã®ããã«èãããããããã¾ããããè¦è½ã¨ããã¡ã§ããä½ããã®æ¹æ³ã§å¦çããããã¼ã¿ãå«ã JSON ãªãã¸ã§ã¯ããåå¾ããæ¬¡ã®ã¹ãããããè¦ã¦ã¿ã¾ãããããã®å ´åã
fetch()æä½ã¯ã«ã¼ãã®å復å¦çã®ãã³ã«å®è¡ããã¦ãããè¨ç®è½åã®ç¡é§ã«ãªã£ã¦ãã¾ããi` ã«ä¾åããªãåå¾ã¯ãã«ã¼ãã®å¤ã«ç§»åã㦠1 åã ãå®è¡ããããã«ãããã¨ãã§ãã¾ããjsasync function returnResults(number) { for (let i = 0; i < number; i++) { const response = await fetch(`/results?number=${number}`); const results = await response.json(); processResult(results[i]); } }
-
-
ã¡ã¤ã³ã¹ã¬ããã§è¨ç®ãå®è¡ããªã: å ã»ã©ãJavaScript ãé常ãã¡ã¤ã³ã¹ã¬ããã§ã¿ã¹ã¯ãå®è¡ããæ¹æ³ãããã³æä½ãã¡ã¤ã³ã¹ã¬ããããããã¯ã㦠UI ã®ããã©ã¼ãã³ã¹ãä½ä¸ãããå¯è½æ§ã«ã¤ãã¦èª¬æãã¾ããããã®åé¡ã軽æ¸ããããã«ãé·ãã¿ã¹ã¯ãå°ããªã¿ã¹ã¯ã«åå²ããæ¹æ³ãç´¹ä»ãã¾ããããã®ãããªåé¡ãå¦çããå¥ã®æ¹æ³ã¨ãã¦ãã¿ã¹ã¯ãã¡ã¤ã³ã¹ã¬ããããå®å ¨ã«ç§»åããæ¹æ³ãããã¾ãããããè¡ãã«ã¯ãããã¤ãã®æ¹æ³ãããã¾ãã
- éåæã³ã¼ãã使ç¨ãã: éåæ JavaScript ã¯ãåºæ¬çã«ã¡ã¤ã³ã¹ã¬ããããããã¯ããªã JavaScript ã§ããéåæ API ã¯ããããã¯ã¼ã¯ããã®ãªã½ã¼ã¹ã®åå¾ããã¼ã«ã«ãã¡ã¤ã«ã·ã¹ãã ä¸ã®ãã¡ã¤ã«ã¸ã®ã¢ã¯ã»ã¹ãã¦ã¼ã¶ã¼ã®ã¦ã§ãã«ã¡ã©ã¸ã®ã¹ããªã¼ã ã®ãªã¼ãã³ãªã©ã®æä½ãå¦çãããã¨ãå¤ãã§ãããããã®æä½ã¯æéããããå ´åããããããå®äºãå¾
ã¤éãã¡ã¤ã³ã¹ã¬ããããããã¯ããã®ã¯ããããã¾ããããã®ä»£ããã«ããã©ã¦ã¶ã¼ã¯ãããã®é¢æ°ãå®è¡ããã¡ã¤ã³ã¹ã¬ããã¯å¾ç¶ã®ã³ã¼ããå®è¡ãç¶ãããããã®é¢æ°ã¯å°æ¥ã®ããæç¹ã§çµæãå©ç¨ã§ããããã«ãªãã¨ãçµæãè¿ãã¾ããç¾è¡ã®éåæ API ã¯ãéåææä½ãå¦çããããã«è¨è¨ããã JavaScript è¨èªã®æ©è½ã§ãããããã¹ (
Promise) ã«åºã¥ãã¦ãã¾ããéåæã§å®è¡ããã¨ä¾¿å©ãªæ©è½ãããå ´åã¯ããããã¹ãã¼ã¹ã®é¢æ°ãèªåã§æ¸ã ãã¨ãã§ãã¾ãã - ã¦ã§ãã¯ã¼ã«ã¼ã§è¨ç®ãå®è¡ãã: ã¦ã§ãã¯ã¼ã«ã¼ ã¯ãã¡ã¤ã³ã¹ã¬ããããããã¯ããªãããã«ã JavaScript ã®å¡ãå®è¡ããããã®å¥ã®ã¹ã¬ãããéãããã®ã¡ã«ããºã ã§ããã¯ã¼ã«ã¼ã«ã¯ããã¤ãã®å¤§ããªå¶éããããæå¤§ã®å¶éã¯ãã¯ã¼ã«ã¼å ã§ã¯ DOM ã¹ã¯ãªãããå®è¡ã§ããªããã¨ã§ãããã以å¤ã¯ã»ã¨ãã©ä½ã§ãã§ããã¯ã¼ã«ã¼ã¯ã¡ã¤ã³ã¹ã¬ããã¨ã®éã§ã¡ãã»ã¼ã¸ãéåä¿¡ãããã¨ãã§ãã¾ããã¯ã¼ã«ã¼ã®ä¸»ãªç¨éã¯ãå®è¡ãã¹ãè¨ç®ãå¤ããã¡ã¤ã³ã¹ã¬ããããããã¯ããããªãå ´åã§ãããã®è¨ç®ãã¯ã¼ã«ã¼ã§å®è¡ããçµæãå¾ ã£ã¦ãããæºåãã§ãããã¡ã¤ã³ã¹ã¬ããã«çµæãè¿ãã¾ãã
- WebGPU ã使ç¨ãã: WebGPU ã¯ãã¦ã§ãéçºè ãåºç¤ã¨ãªãã·ã¹ãã ã® GPU (ã°ã©ãã£ãã¯ã¹å¦çã¦ããã) ã使ç¨ãã¦ã髿§è½ãªè¨ç®ãå®è¡ãããã©ã¦ã¶ã¼ã§ã¬ã³ããªã³ã°ã§ããè¤éãªç»åãæç»ã§ããããã«ãããã©ã¦ã¶ã¼ API ã§ããããã¯ããªãè¤éã§ãããã¦ã§ãã¯ã¼ã«ã¼ãããããã«åªããããã©ã¼ãã³ã¹ã®å©ç¹ãæä¾ãããã¨ãã§ãã¾ãã
- éåæã³ã¼ãã使ç¨ãã: éåæ JavaScript ã¯ãåºæ¬çã«ã¡ã¤ã³ã¹ã¬ããããããã¯ããªã JavaScript ã§ããéåæ API ã¯ããããã¯ã¼ã¯ããã®ãªã½ã¼ã¹ã®åå¾ããã¼ã«ã«ãã¡ã¤ã«ã·ã¹ãã ä¸ã®ãã¡ã¤ã«ã¸ã®ã¢ã¯ã»ã¹ãã¦ã¼ã¶ã¼ã®ã¦ã§ãã«ã¡ã©ã¸ã®ã¹ããªã¼ã ã®ãªã¼ãã³ãªã©ã®æä½ãå¦çãããã¨ãå¤ãã§ãããããã®æä½ã¯æéããããå ´åããããããå®äºãå¾
ã¤éãã¡ã¤ã³ã¹ã¬ããããããã¯ããã®ã¯ããããã¾ããããã®ä»£ããã«ããã©ã¦ã¶ã¼ã¯ãããã®é¢æ°ãå®è¡ããã¡ã¤ã³ã¹ã¬ããã¯å¾ç¶ã®ã³ã¼ããå®è¡ãç¶ãããããã®é¢æ°ã¯å°æ¥ã®ããæç¹ã§çµæãå©ç¨ã§ããããã«ãªãã¨ãçµæãè¿ãã¾ããç¾è¡ã®éåæ API ã¯ãéåææä½ãå¦çããããã«è¨è¨ããã JavaScript è¨èªã®æ©è½ã§ãããããã¹ (
é¢é£æ å ±
- Optimize long tasks (web.dev, 2022)
- ãã£ã³ãã¹ã®ãã¥ã¼ããªã¢ã«