<script> HTML èæ¬å
ç´
åºçº¿
广æ³å¯ç¨
*
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
* æ¤ç¹æ§çæäºé¨åçæ¯æç¨åº¦å¯è½ææä¸åã
HTML <script> å
ç´ ç¨äºåµå
¥å¯æ§è¡ä»£ç ææ°æ®ï¼éå¸¸ç¨æ¥åµå
¥æå¼ç¨ JavaScript 代ç ã<script> å
ç´ ä¹å¯ç¨äºå
¶ä»è¯è¨ï¼ä¾å¦ WebGL ç GLSL çè²å¨ç¼ç¨è¯è¨å JSONã
屿§
该å ç´ å å«å ¨å±å±æ§ã
async-
对äºç»å ¸èæ¬ï¼è¥åå¨
async屿§ï¼åä¼å¨è§£æè¿ç¨ä¸å¹¶è¡è·å该ç»å ¸èæ¬ï¼å¹¶å¨å¯ç¨åå°½å¿«å¯¹å ¶æ±å¼ãå¯¹äºæ¨¡åèæ¬ï¼è¥åå¨
async屿§ï¼åä¼å¨è§£æè¿ç¨ä¸å¹¶è¡è·åèæ¬åå ¶ææä¾èµé¡¹ï¼å¹¶å¨å®ä»¬å¯ç¨å尽快æ§è¡ãè¦åï¼å¯¹äºç»å ¸èæ¬ï¼ç¼ºå°
src屿§ï¼å³å èèæ¬ï¼æ¶ä¸å¾ä½¿ç¨æ¤å±æ§ï¼å¨è¿ç§æ åµä¸å®ä¸èµ·ä½ç¨ãæ¤å±æ§å¯æ¶é¤é»å¡è§£æå¨ç JavaScriptï¼æµè§å¨æ¬æ¥å¿ é¡»å å 载并æ§è¡èæ¬ï¼æè½ç»§ç»è§£æã
defer卿¤æ å½¢ä¸æç±»ä¼¼ä½ç¨ãè¥åæ¶æå®æ¤å±æ§å
defer屿§ï¼è¯¥å ç´ çè¡ä¸ºçåäºåªæå®async屿§ãè¿æ¯ä¸ä¸ªå¸å°å±æ§ï¼å ç´ ä¸åå¨å¸å°å±æ§è¡¨ç¤ºçå¼ï¼ä¸åå¨è¡¨ç¤ºåå¼ã
æå ³æµè§å¨æ¯æç说æï¼è¯·åè§æµè§å¨å ¼å®¹æ§ãå¦è¯·åé asm.js ç弿¥èæ¬ã
attributionsrc-
æå®å¸ææµè§å¨å¨èæ¬èµæºè¯·æ±ä¸ä¸å¹¶åé
Attribution-Reporting-Eligibleæ 头ãæå¡å¨ç«¯å¯æ®æ¤å¨ååºä¸åéAttribution-Reporting-Register-SourceæAttribution-Reporting-Register-Triggeræ 头ï¼ä»¥å嫿³¨ååºäº JavaScript çå½å æ¥æºæå½å 触åå¨ãåºè¿ååªç§ååºæ 头åå³äºè§¦å注åçAttribution-Reporting-Eligibleæ 头çå¼ã夿³¨ï¼ä¹å¯ä»¥éè¿åéå å«
attributionReportingé项çfetch()请æ±ï¼ç´æ¥å¨fetch()è°ç¨ä¸è®¾ç½®ï¼æå¨ä¼ ç»fetch()è°ç¨çRequest对象ä¸è®¾ç½®ï¼ï¼æè åéä¸ä¸ªå¨è¯·æ±å¯¹è±¡ä¸è°ç¨setAttributionReporting()çXMLHttpRequestï¼æ³¨ååºäº JavaScript çå½å æ¥æºæè§¦åå¨ãæ¤å±æ§æä¸¤ç§å¯è®¾ç½®çå½¢å¼ï¼
-
å¸å°å¼ï¼å³ä» 使ç¨
attributionsrcåç§°ãè¿è¡¨ç¤ºå¸æå°Attribution-Reporting-Eligibleæ 头åéè³src屿§ææåçå䏿å¡å¨ãå½å¨å䏿å¡å¨ä¸å¤çå½å æ¥æºæè§¦å卿³¨åæ¶ï¼è¿ç§å½¢å¼éç¨ã注åå½å 触å卿¶ï¼æ¤å±æ§ä¸ºå¯éï¼è¥çç¥ï¼å使ç¨ç©ºå符串å¼ã -
å å«ä¸ä¸ªæå¤ä¸ª URL çå¼ï¼ä¾å¦ï¼
html<script src="myscript.js" attributionsrc="https://a.example/register-source https://b.example/register-source"></script>å½æè¯·æ±èµæºä¸å¨ä½ æ§å¶çæå¡å¨ä¸ï¼æåªæ³å¨å¦ä¸å°æå¡å¨ä¸å¤çå½å æ¥æºæ³¨åæ¶ï¼æ¤å½¢å¼å¾æç¨ãå¯å°ä¸ä¸ªæå¤ä¸ª URL æå®ä¸º
attributionsrcçå¼ãåçèµæºè¯·æ±æ¶ï¼é¤èµæºæºç«å¤ï¼Attribution-Reporting-Eligibleæ 头ä¹ä¼åéè³attributionSrc䏿å®ç URLãè¿äº URL éåå¯è§æ åµä»¥Attribution-Reporting-Register-SourceæAttribution-Reporting-Register-Triggeræ 头ååºï¼ä»¥å®ææ³¨åã夿³¨ï¼æå®å¤ä¸ª URL æå³çå¯å¨åä¸åè½ä¸æ³¨åå¤ä¸ªå½å æ¥æºãä¾å¦ï¼ä½ å¯è½æå¤ä¸ªè¦è¡¡éææçä¸åæ´»å¨ï¼å®ä»¬éè¦åºäºä¸åæ°æ®çæä¸åæ¥åã
æ´å¤ä¿¡æ¯è¯·åè§å½å æ¥å APIã
-
blocking-
æ¤å±æ§æç¡®æåºï¼å¨èæ¬æ§è¡ååºé»å¡æäºæä½ãè¦é»å¡çæä½å¿ é¡»æ¯ä»¥ç©ºæ ¼åéçé»å¡ä»¤çå表ãç®åä» æä¸ä¸ªä»¤çï¼
renderï¼é»å¡å±å¹ä¸å å®¹çæ¸²æã
夿³¨ï¼åªæææ¡£
<head>ä¸çscriptå ç´ æå¯è½é»å¡æ¸²æãèæ¬é»è®¤ä¸é»å¡æ¸²æï¼è¥scriptå ç´ ä¸å«type="module"ãasyncædeferï¼å®é»å¡çæ¯è§£æè鿏²æãè¥éè¿èæ¬å¨ææ·»å è¿ç±»scriptå ç´ ï¼å¿ 须设置blocking = "render"ï¼å®æä¼é»å¡æ¸²æã crossorigin-
å¯¹äºæªéè¿æ å CORS æ£æ¥çèæ¬ï¼æ®é
scriptå ç´ ä» åwindow.onerrorä¼ éæå°çä¿¡æ¯ãè¥ç«ç¹çéæåªä½ä½¿ç¨åç¬çååï¼è¯·ä½¿ç¨æ¤å±æ§ä»¥å 许记å½é误ãæå ³å ¶ææåæ°çæ´è¯¦ç»è¯´æï¼è¯·åè§ CORS è®¾ç½®å±æ§ã defer-
设置æ¤å¸å°å±æ§å¯åæµè§å¨è¡¨æï¼èæ¬åºå¨ææ¡£è§£æåã触å
DOMContentLoadedäºä»¶åæ§è¡ã带æ
defer屿§çèæ¬ä¼é»æ¢è§¦åDOMContentLoadedäºä»¶ï¼ç´è³èæ¬å è½½å®æ¯å¹¶å®ææ±å¼ãè¦åï¼ç¼ºå°
src屿§ï¼å³å èèæ¬ï¼æ¶ä¸å¾ä½¿ç¨æ¤å±æ§ï¼å¨è¿ç§æ åµä¸å®ä¸èµ·ä½ç¨ãdefer屿§å¯¹æ¨¡åèæ¬æ æââæ¨¡åèæ¬é»è®¤å»¶è¿æ§è¡ã带æ
defer屿§çèæ¬ä¼æå ¶å¨ææ¡£ä¸åºç°çé¡ºåºæ§è¡ãæ¤å±æ§å¯æ¶é¤é»å¡è§£æå¨ç JavaScriptï¼æµè§å¨æ¬æ¥å¿ é¡»å å è½½å¹¶å¯¹èæ¬æ±å¼ï¼æè½ç»§ç»è§£æã
async卿¤æ å½¢ä¸æç±»ä¼¼ä½ç¨ãè¥åæ¶æå®æ¤å±æ§å
async屿§ï¼è¯¥å ç´ çè¡ä¸ºçåäºåªæå®async屿§ã fetchpriority-
æä¾è·åå¤é¨èæ¬æ¶æç¨ç¸å¯¹ä¼å 级çæç¤ºãå 许çå¼ä¸ºï¼
integrity-
æ¤å±æ§å å«èæ¬çä¸ä¸ªæå¤ä¸ªæ£åå¼ãå®ç¨äºç¡®ä¿èæ¬å 容符åå¼åè 颿ï¼ä¸æªå¨ä¾åºé¾æ»å»ä¸è¢«æ¶æèæ¬æ¿æ¢ã缺å°
src屿§æ¶ä¸å¾æå®æ¤å±æ§ãå¦è¯·åé åèµæºå®æ´æ§ã nomodule-
设置æ¤å¸å°å±æ§å¯è¡¨æèæ¬ä¸åºå¨æ¯æ ES 模åçæµè§å¨ä¸æ§è¡ãå®é ä¸ï¼å¯åæ¤ä¸ºä¸æ¯ææ¨¡åå JavaScript çæ§æµè§å¨æä¾åéèæ¬ã
nonce-
ç¨äºå 许 script-src Content-Security-Policy ä¸èæ¬çå å¯ä¸æ¬¡æ§éæºæ°ï¼ä» 使ç¨ä¸æ¬¡çæ°å¼ï¼ãæå¡å¨æ¯æ¬¡ä¼ è¾çç¥æ¶é½å¿ é¡»çæå¯ä¸ç nonce å¼ãæä¾æ æ³çæµç nonce è³å ³éè¦ï¼å¦åç»è¿èµæºçç¥è½»èæä¸¾ã
referrerpolicy-
æå®è·åèæ¬æèæ¬æè·åèµæºæ¶è¦åéç referrerï¼
no-referrerï¼ä¸åéRefereræ 头ãno-referrer-when-downgradeï¼ä¸å°Refereræ 头åéè³æ²¡æ TLSï¼HTTPSï¼çæºãoriginï¼åéç referrer éäºå¼ç¨é¡µé¢çæºï¼å ¶åè®®ã主æºå端å£ãorigin-when-cross-originï¼åéè³å ¶ä»æºç referrer éäºåè®®ã主æºå端å£ãåæºå¯¼èªä»ä¼å å«è·¯å¾ãsame-originï¼ååæºè¯·æ±åé referrerï¼ä½è·¨æºè¯·æ±ä¸å å« referrer ä¿¡æ¯ãstrict-originï¼ä» å½åè®®å®å ¨çº§å«ç¸åï¼HTTPSâHTTPSï¼æ¶ï¼å°ææ¡£æºä½ä¸º referrer åéï¼ä¸åéè³å®å ¨æ§è¾ä½çç®æ ï¼HTTPSâHTTPï¼ãstrict-origin-when-cross-originï¼é»è®¤å¼ï¼ï¼åæºè¯·æ±åé宿´ URLï¼åè®®å®å ¨çº§å«ç¸åï¼HTTPSâHTTPSï¼æ¶ä» åéæºï¼ä¸åå®å ¨æ§è¾ä½çç®æ ï¼HTTPSâHTTPï¼åéæ å¤´ãunsafe-urlï¼referrer å 嫿ºåè·¯å¾ï¼ä½ä¸å å«ç段ãå¯ç æç¨æ·åï¼ãæ¤å¼ä¸å®å ¨ï¼å 为å®ä¼å°å TLS ä¿æ¤èµæºçæºåè·¯å¾æ³é²ç»ä¸å®å ¨çæºã
夿³¨ï¼ç©ºå符串å¼ï¼
""ï¼æ¢æ¯é»è®¤å¼ï¼ä¹æ¯å¨ä¸æ¯æreferrerpolicyæ¶çåéå¼ãè¥æªå¨<script>å ç´ ä¸æç¡®æå®referrerpolicyï¼å®ä¼éç¨æ´é«å±çº§ç referrer çç¥ï¼å³ä¸ºæ´ä¸ªææ¡£æå设置ççç¥ãè¥æ²¡ææ´é«å±çº§ççç¥ï¼ç©ºå符串çåäºstrict-origin-when-cross-originã src-
æ¤å±æ§æå®å¤é¨èæ¬ç URIï¼å¯ä½ä¸ºç´æ¥å¨ææ¡£ä¸åµå ¥èæ¬çæ¿ä»£æ¹å¼ã
type-
æ¤å±æ§è¡¨ç¤ºèæ¬çç±»åãå ¶å¼ä¸ºä¸åä¹ä¸ï¼
- 屿§æªè®¾ç½®ï¼é»è®¤å¼ï¼ã空å符串æ JavaScript MIME ç±»å
-
è¡¨ç¤ºèæ¬æ¯å å« JavaScript 代ç çâç»å ¸èæ¬âãè¥èæ¬å¼ç¨ JavaScript 代ç ï¼å»ºè®®ä½è çç¥è¯¥å±æ§ï¼èéæå® MIME ç±»åãJavaScript MIME ç±»ååäº IANA åªä½ç±»åè§èã
importmap-
表示å ç´ ä¸»ä½å å«å¯¼å ¥æ å°ãå¯¼å ¥æ å°æ¯ JSON 对象ï¼å¼åè å¯ç¨å®æ§å¶æµè§å¨å¯¼å ¥ JavaScript æ¨¡åæ¶å¦ä½è§£ææ¨¡å说æç¬¦ã
module-
使代ç ä½ä¸º JavaScript 模åå¤çãèæ¬å 容çå¤çä¼å»¶åã
charsetådefer屿§æ æãå ³äºä½¿ç¨moduleçä¿¡æ¯ï¼è¯·åé JavaScript 模åæåãä¸ç»å ¸èæ¬ä¸åï¼æ¨¡åèæ¬è·¨æºè·åæ¶å¿ é¡»ä½¿ç¨ CORS åè®®ã speculationrules-
表示å ç´ ä¸»ä½å 嫿¨æµè§åãæ¨æµè§åéç¨ JSON 对象形å¼ï¼ç¨äºç¡®å®æµè§å¨åºé¢è·åæé¢æ¸²æåªäºèµæºãè¿æ¯ æ¨æµè§å API çä¸é¨åã
- ä»»ä½å ¶ä»å¼
-
åµå ¥å 容å°ä½ä¸ºæ°æ®åå¤çï¼æµè§å¨ä¸ä¼å¤çå®ãå¼åè å¿ é¡»ä½¿ç¨ææçé JavaScript MIME ç±»åè¡¨ç¤ºæ°æ®åãå æ¬
src屿§å¨å çææå ¶ä»å±æ§é½ä¼è¢«å¿½ç¥ã
å·²å¼ç¨ç屿§
charset-
è¥åå¨ï¼å ¶å¼å¿ é¡»ä¸
utf-8è¿è¡ ASCII 大å°å䏿æå¹é ãæ éæå®charset屿§ï¼å ä¸ºææ¡£å¿ é¡»ä½¿ç¨ UTF-8ï¼scriptå ç´ ä¼ä»ææ¡£ç»§æ¿å符ç¼ç ã language-
ä¸
type屿§ç±»ä¼¼ï¼æ¤å±æ§æ è¯æç¨çèæ¬è¯è¨ãä½ä¸type屿§ä¸åï¼å®çå¯è½å¼ä»æªæ ååãåºæ¹ç¨type屿§ã
夿³¨
没æ asyncãdefer æ type="module" 屿§çèæ¬ï¼ä»¥å没æ type="module" 屿§çå
èèæ¬ï¼ä¼å¨æµè§å¨ç»§ç»è§£æé¡µé¢åç«å³è·åå¹¶æ§è¡ã
èæ¬åºä»¥ text/javascript MIME ç±»åæä¾ï¼ä½æµè§å¨è¾å®½å®¹ï¼åªæèæ¬ä»¥å¾åç±»åï¼image/*ï¼ãè§é¢ç±»åï¼video/*ï¼ãé³é¢ç±»åï¼audio/*ï¼æ text/csv æä¾æ¶æä¼é»æ¢å®ãè¥èæ¬è¢«é»æ¢ï¼å°åå
ç´ åé error äºä»¶ï¼å¦åï¼åé load äºä»¶ã
示ä¾
>åºæ¬ç¨æ³
æ¤ç¤ºä¾å±ç¤ºå¦ä½ä½¿ç¨ <script> å
ç´ å¯¼å
¥ï¼å¤é¨ï¼èæ¬ï¼
<script src="javascript.js"></script>
以ä¸ç¤ºä¾å±ç¤ºå¦ä½å¨ <script> å
ç´ å
æ¾ç½®ï¼å
èï¼èæ¬ï¼
<script>
alert("ä½ å¥½ï¼ä¸çï¼");
</script>
async å defer
ä½¿ç¨ async 屿§å è½½çèæ¬ï¼å¨è·åèæ¬æ¶ä¸ä¼é»å¡é¡µé¢ä¸è½½ãç¶èä¸è½½å®æåï¼èæ¬å°æ§è¡ï¼ä»èé»å¡é¡µé¢æ¸²æãè¿æå³çå¨èæ¬æ§è¡å®æ¯åï¼ç½é¡µå
¶ä½å
å®¹æ æ³è¢«å¤çå¹¶æ¾ç¤ºç»ç¨æ·ãæ æ³ä¿è¯èæ¬æä»»ä½ç¹å®é¡ºåºè¿è¡ãå½é¡µé¢ä¸çèæ¬å½¼æ¤ç¬ç«ä¸ä¸ä¾èµé¡µé¢ä¸å
¶ä»èæ¬æ¶ï¼æå¥½ä½¿ç¨ asyncã
ä½¿ç¨ defer 屿§å è½½çèæ¬å°æå
¶å¨é¡µé¢ä¸åºç°ç顺åºå è½½ãå®ä»¬ä¼çå°é¡µé¢å
容å
¨é¨å è½½åæè¿è¡ï¼è¥èæ¬ä¾èµ DOM 已就绪ï¼ä¾å¦ä¿®æ¹é¡µé¢ä¸çä¸ä¸ªæå¤ä¸ªå
ç´ ï¼ï¼è¿å¾æç¨ã
ä¸å¾ç´è§å±ç¤ºä¸åèæ¬å è½½æ¹å¼åå ¶å¯¹é¡µé¢çå½±åï¼

æ¤å¾æ¥èª HTML è§èï¼å¨ CC BY 4.0 è®¸å¯æ¡æ¬¾ä¸å¤å¶ãè£åªä¸ºç¼©å°çæ¬ã
ä¾å¦ï¼è¥æä»¥ä¸èæ¬å ç´ ï¼
<script async src="js/vendor/jquery.js"></script>
<script async src="js/script2.js"></script>
<script async src="js/script3.js"></script>
ä¸è½ä¾èµèæ¬çå 载顺åºãjquery.js å¯è½å¨ script2.js å script3.js ä¹åæä¹åå è½½ï¼è¥åºç°è¿ç§æ
åµï¼é£äºèæ¬ä¸ä¾èµ jquery ç彿°å°äº§çé误ï¼å ä¸ºèæ¬è¿è¡æ¶ jquery å°æªå®ä¹ã
彿䏿¹åå°èæ¬éè¦å è½½ï¼å¹¶ä¸åªæ³è®©å®ä»¬å°½å¿«å°ä½æ¶ï¼åºä½¿ç¨ asyncãä¾å¦ï¼å¯è½æä¸äºæ¸¸ææ°æ®æä»¶é卿¸¸æçæ£å¼å§æ¶ä½¿ç¨ï¼ä½ç®ååªæ³æ¾ç¤ºæ¸¸æä»ç»ãæ é¢å大å
ï¼èä¸å¸æå®ä»¬è¢«èæ¬å è½½é»å¡ã
ä½¿ç¨ defer 屿§å è½½çèæ¬ï¼è§ä¸æï¼å°æå
¶å¨é¡µé¢ä¸åºç°ç顺åºè¿è¡ï¼å¹¶å¨èæ¬åå
容ä¸è½½å®æ¯åæ§è¡ï¼
<script defer src="js/vendor/jquery.js"></script>
<script defer src="js/script2.js"></script>
<script defer src="js/script3.js"></script>
å¨ç¬¬äºä¸ªç¤ºä¾ä¸ï¼å¯ä»¥ç¡®å® jquery.js ä¼å¨ script2.js å script3.js åå è½½ï¼ä¸ script2.js ä¼å¨ script3.js åå è½½ãå®ä»¬ä¼çå°é¡µé¢å
容å
¨é¨å è½½åæè¿è¡ï¼è¥èæ¬ä¾èµ DOM 已就绪ï¼ä¾å¦ä¿®æ¹é¡µé¢ä¸çä¸ä¸ªæå¤ä¸ªå
ç´ ï¼ï¼è¿å¾æç¨ã
æ»ç»ï¼
asyncådeferé½ä¼æç¤ºæµè§å¨å¨ä¸è½½é¡µé¢å ¶ä½é¨åï¼DOM çï¼æ¶ï¼å¨åç¬çº¿ç¨ä¸ä¸è½½èæ¬ï¼å æ¤è·åæé´ä¸ä¼é»å¡é¡µé¢å è½½ã- 带æ
async屿§çèæ¬ä¼å¨ä¸è½½å®æåç«å³æ§è¡ãè¿ä¼é»å¡é¡µé¢ï¼ä¸ä¸ä¿è¯ä»»ä½ç¹å®æ§è¡é¡ºåºã - 带æ
defer屿§çèæ¬æå ¶å¨é¡µé¢ä¸ç顺åºå è½½ï¼ä¸ä» å¨ä¸åå è½½å®æ¯åæ§è¡ã - å¦æèæ¬åºç«å³è¿è¡ä¸æ²¡æä¾èµé¡¹ï¼è¯·ä½¿ç¨
asyncã - å¦æèæ¬éçå¾
è§£æå¹¶ä¾èµå
¶ä»èæ¬å/æ DOM 已就绪ï¼è¯·ä½¿ç¨
deferå è½½ï¼å¹¶æå¸ææµè§å¨æ§è¡å®ä»¬çé¡ºåºæ¾ç½®å¯¹åºç<script>å ç´ ã
模ååé
æ¯æ type 屿§ module å¼çæµè§å¨ä¼å¿½ç¥å¸¦æ nomodule 屿§çèæ¬ãå æ¤ï¼å¯ä»¥å¨ä½¿ç¨æ¨¡åèæ¬çåæ¶ï¼ä¸ºä¸æ¯æå®çæµè§å¨æä¾æ æ nomodule çåéèæ¬ã
<script type="module" src="main.js"></script>
<script nomodule src="fallback.js"></script>
使ç¨å¯¼å ¥æ å°å¯¼å ¥æ¨¡å
å¨èæ¬ä¸å¯¼å
¥æ¨¡åæ¶ï¼è¥ä¸ä½¿ç¨ type=importmap åè½ï¼åæ¯ä¸ªæ¨¡åå¿
须使ç¨ç»å¯¹æç¸å¯¹ URL çæ¨¡å说æç¬¦å¯¼å
¥ãä¸ä¾ä¸ï¼ç¬¬ä¸ä¸ªæ¨¡å说æç¬¦æ¯ç»å¯¹ URLï¼ç¬¬äºä¸ªï¼"./shapes/square.js"ï¼ç¸å¯¹äºææ¡£çåº URL è§£æã
import { name as circleName } from "https://example.com/shapes/circle.js";
import { name as squareName, draw } from "./shapes/square.js";
导å
¥æ å°å
许æä¾ä¸ä¸ªæ å°ï¼è¥å¹é
ï¼å坿¿æ¢æ¨¡å说æç¬¦ä¸çææ¬ã䏿¹å¯¼å
¥æ å°å®ä¹ circle å square é®ï¼å¯ä½ä¸ºä¸æ¹æ¨¡å说æç¬¦çå«åã
<script type="importmap">
{
"imports": {
"circle": "https://example.com/shapes/circle.js",
"square": "./shapes/square.js"
}
}
</script>
è¿æ ·ä¾¿å¯ä½¿ç¨æ¨¡å说æç¬¦ä¸çåç§°ï¼è䏿¯ç»å¯¹æç¸å¯¹ URLï¼å¯¼å ¥æ¨¡åï¼
import { name as circleName } from "circle";
import { name as squareName, draw } from "square";
æå ³å¯¼å ¥æ å°çæ´å¤ç¤ºä¾ï¼è¯·åé JavaScript 模åæåä¸ç使ç¨å¯¼å ¥æ å°å¯¼å ¥æ¨¡åç« èã
å¨ HTML ä¸åµå ¥æ°æ®
è¿å¯éè¿å¨ type 屿§ä¸æå®ææçé JavaScript MIME ç±»åï¼ä½¿ç¨ <script> å
ç´ å°æå¡ç«¯æ¸²æçæ°æ®åµå
¥ HTMLã
<!-- ç±æå¡å¨çæ -->
<script id="data" type="application/json">
{
"userId": 1234,
"userName": "Maria Cruz",
"memberSince": "2000-01-01T00:00:00.000Z"
}
</script>
<!-- éæ -->
<script>
const userInfo = JSON.parse(document.getElementById("data").text);
console.log("ç¨æ·ä¿¡æ¯ï¼%o", userInfo);
</script>
å¨èæ¬è·åå¹¶æ§è¡å黿¢æ¸²æ
å¯å¨ blocking 屿§ä¸å
å« render 令çï¼é¡µé¢æ¸²æä¼è¢«é»æ¢ï¼ç´è³èæ¬è¢«è·åå¹¶æ§è¡ãä¸ä¾é»å¡å¼æ¥èæ¬ç渲æï¼å æ¤è¯¥èæ¬ä¸ä¼é»å¡è§£æï¼ä½ä¿è¯ä¼å¨å¼å§æ¸²æå宿æ±å¼ã
<script blocking="render" async src="async-script.js"></script>
ææ¯æ¦è¦
| å 容åç±» | å æ°æ®å å®¹ãæµå¼å 容ãçè¯å 容ã |
|---|---|
| å 许çå 容 | å¨æèæ¬ï¼ä¾å¦ text/javascriptã |
| æ ç¾çç¥ | ä¸å 许ï¼å¼å§åç»ææ ç¾åä¸ºå¿ éã |
| å 许çç¶å ç´ | æ¥åå æ°æ®å 容æçè¯å 容çä»»ä½å ç´ ã |
| éå«ç ARIA è§è² | 没æå¯¹åºçè§è² |
| å 许ç ARIA è§è² | 没æå
许ç role |
| DOM æ¥å£ | HTMLScriptElement |
è§è
| è§è |
|---|
| HTML > # the-script-element > |