ã¤ã³ãã¼ã屿§
Baseline
2025
*
Newly available
Since April 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
* Some parts of this feature may have varying levels of support.
ã¡ã¢:
ãã®ææ¡ã®ä»¥åã®ãã¼ã¸ã§ã³ã§ã¯ãassert ãã¼ã¯ã¼ãã with ã®ä»£ããã«ä½¿ç¨ãã¦ãã¾ãããã¢ãµã¼ã·ã§ã³æ©è½ã¯ç¾å¨ã§ã¯æ¨æºã§ã¯ããã¾ããã詳細ã¯ãã©ã¦ã¶ã¼äºææ§è¡¨ã調ã¹ã¦ãã ããã
ã¤ã³ãã¼ã屿§æ©è½ã¯ãã¢ã¸ã¥ã¼ã«ã®èªã¿è¾¼ã¿æ¹æ³ã«ã¤ãã¦ã©ã³ã¿ã¤ã ã«ãã¢ã¸ã¥ã¼ã«è§£æ±ºãåå¾ãæ§æè§£æãè©ä¾¡ãªã©ã®åä½ãæç¤ºãã¾ããimport 宣è¨ãexport...from 宣è¨ãåç import() ã§å¯¾å¿ãã¦ãã¾ãã
æ§æ
屿§ã¯ãæ¢å®ã®ã¤ã³ãã¼ããåå空éã®ã¤ã³ãã¼ããªã©ããããã種é¡ã® import/export from æã«æ·»ä»ãããã¨ãã§ãã¾ããã¢ã¸ã¥ã¼ã«æå®åæååã«ç¶ãã¦æå®ããwith ãã¼ã¯ã¼ããæ¥é è¾ã¨ãã¦è¨è¼ãã¾ãã
import { names } from "module-name" with {};
import { names } from "module-name" with { key: "data" };
import { names } from "module-name" with { key: "data", key2: "data2" };
import { names } from "module-name" with { key: "data", key2: "data2", /* â¦, */ keyN: "dataN" };
export { names } from "module-name" with {};
export { names } from "module-name" with { key: "data" };
export { names } from "module-name" with { key: "data", key2: "data2" };
export { names } from "module-name" with { key: "data", key2: "data2", /* â¦, */ keyN: "dataN" };
弿°
解説
ã¤ã³ãã¼ã屿§ã¯ãã©ã³ã¿ã¤ã ã«å ·ä½çãªã¢ã¸ã¥ã¼ã«ãã©ã®ããã«èªã¿è¾¼ãã¹ãããæç¤ºãã¾ãã
主ãªç¨éã¯ãJSON ã¢ã¸ã¥ã¼ã«ã CSS ã¢ã¸ã¥ã¼ã«ãªã©ã® JS 以å¤ã®ã¢ã¸ã¥ã¼ã«ãèªã¿è¾¼ããã¨ã§ãã以ä¸ã®æãèãã¦ã¿ã¾ãããã
import data from "https://example.com/data.json";
ã¦ã§ãä¸ã§ã¯ãimport æã¯ãããã HTTP ãªã¯ã¨ã¹ããçºçããã¾ããã¬ã¹ãã³ã¹ã¯ JavaScript å¤ã¨ãã¦æºåãããã©ã³ã¿ã¤ã ã«ãã£ã¦ããã°ã©ã ã§å©ç¨ã§ããããã«ãªãã¾ããä¾ãã°ãã¬ã¹ãã³ã¹ã¯æ¬¡ã®ããã«è¦ãã¾ãã
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
...
{"name":"John"}
ã¢ã¸ã¥ã¼ã«ã¯ãé
ä¿¡ããã MIME ã¿ã¤ãã®ã¿ã«åºã¥ãã¦èå¥ããã³è§£éããã¾ããURL ã®ãã¡ã¤ã«æ¡å¼µåã¯ããã¡ã¤ã«ã®ç¨®é¡ãèå¥ããããã«ä½¿ç¨ã§ãã¾ããããã®å ´åãMIME ã¿ã¤ã㯠application/json ã§ããããã¡ã¤ã«ã JSON ã§ãããJSON ã¨ãã¦è§£éããå¿
è¦ããããã¨ããã©ã¦ã¶ã¼ã«æç¤ºãã¾ããä½ããã®çç±ï¼ãµã¼ãã¼ãä¹ã£åããããã¾ãã¯å½ç©ã§ãããªã©ï¼ã§ãµã¼ãã¼ã®å¿çã® MIME ã¿ã¤ãã text/javascriptï¼JavaScript ã½ã¼ã¹ç¨ï¼ã«è¨å®ããã¦ããå ´åããã¡ã¤ã«ã¯ã³ã¼ãã¨ãã¦æ§æè§£æããã³å®è¡ããã¾ãã"JSON" ãã¡ã¤ã«ã«å®éã«æªæã®ããã³ã¼ããå«ã¾ãã¦ããå ´åãimport 宣è¨ãæå³ããã«å¤é¨ã³ã¼ããå®è¡ããæ·±å»ãªã»ãã¥ãªãã£ä¸ã®è
å¨ããããããã¨ã«ãªãã¾ãã
ã¤ã³ãã¼ã屿§ã¯ãã¢ã¸ã¥ã¼ã«ãã©ã®ããã«æ¤è¨¼ãã¹ãããéçºè ãæç¤ºçã«æå®ã§ããããã«ãããã¨ã§ããã®åé¡ãä¿®æ£ãã¾ããä¾ãã°ã屿§ãæå®ãã¦ããªãä¸è¨ã®ã¤ã³ãã¼ãæã¯ãå®éã«ã¯å¤±æãã¾ãã
Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "application/json". Strict MIME type checking is enforced for module scripts per HTML spec.
代ããã«ããã®ãã¡ã¤ã«ã JSON ãå«ã¾ãªããã°ãªããªããã¨ãã©ã³ã¿ã¤ã ã«æç¤ºãã屿§ãæå®ããå¿
è¦ãããã¾ããã¢ã¸ã¥ã¼ã«ã®ã¿ã¤ãï¼MIME ã¿ã¤ãçµç±ï¼ãæ¤è¨¼ããã«ã¯ãtype ã¨å¼ã°ãã屿§ãã¼ãå¼ã³åºãã¾ããã¢ã¸ã¥ã¼ã«ã JSON ã¢ã¸ã¥ã¼ã«ã§ãããã¨ãæ¤è¨¼ããã«ã¯ãå¤ã¯ "json" ã§ãã
ã¡ã¢:
å®éã® type 屿§å¤ã¯ãMIMEã¿ã¤ãã«ç´æ¥å¯¾å¿ãã¦ããããã§ã¯ããã¾ãããHTML 仿§ã§ã¯ãå¥åã®æå®ãããã¦ãã¾ãã
ãããã£ã¦ãä¸è¨ã®ã³ã¼ãã¯æ¬¡ã®ããã«æ¸ãç´ãã¹ãã§ãã
import data from "https://example.com/data.json" with { type: "json" };
type 屿§ã¯ãã¢ã¸ã¥ã¼ã«ããã§ããããæ¹æ³ã夿´ãã¾ããï¼ãã©ã¦ã¶ã¼ã¯ ãããã¼ãä»ãã¦ãªã¯ã¨ã¹ããéä¿¡ãã¾ãï¼ãã¢ã¸ã¥ã¼ã«ãè§£æã¾ãã¯è©ä¾¡ããæ¹æ³ã¯å¤æ´ãã¾ãããå®è¡æã«ã¯ãã¬ã¹ãã³ã¹ã® MIME ã¿ã¤ããæå®ããã JSON ã¨ãã¦ã¢ã¸ã¥ã¼ã«ãæ§æè§£æãããã¨ããã§ã«ããã£ã¦ãã¾ãããã®å±æ§ã¯ãAccept: application/jsondata.json ã¢ã¸ã¥ã¼ã«ãå®éã«ã¯ JSON ã¢ã¸ã¥ã¼ã«ã§ãããã¨ãäºå¾çã«ç¢ºèªããããã«ã®ã¿ä½¿ç¨ããã¾ããä¾ãã°ãã¬ã¹ãã³ã¹ãããã¼ã Content-Type: text/javascript ã«å¤æ´ãããå ´åãããã°ã©ã ã¯ä¸è¨ã®ã¨ã©ã¼ã¨åæ§ã®ã¨ã©ã¼ã§å¤±æãã¾ãã
仿§ã§ã¯ãæç¤ºçã« type: "json" ã«å¯¾å¿ãã¦ããã¨å®£è¨ãã¦ãã¾ããã¢ã¸ã¥ã¼ã«ã type: "json" ã§ããã¨ä¸»å¼µãããå®è¡æã«ã¤ã³ãã¼ãã«å¤±æããªããã°ããã㯠JSON ã¨ãã¦è§£éã§ããã¯ãã§ãããããããã以å¤ã®å ´åã®åä½è¦ä»¶ã¯ããã¾ããã type: "json" 屿§ã®ãªãã¤ã³ãã¼ãã®å ´åãå®è¡æã«ã»ãã¥ãªãã£ã課é¡ã¨ãªã£ã¦ããªããã°ãå®è¡æã« JSON ã¨ãã¦è§£éã§ããå¯è½æ§ãããã¾ãã䏿¹ããã©ã¦ã¶ã¼ã¯æé»ã®ãã¡ã«ã¢ã¸ã¥ã¼ã«ã JavaScript ã§ããã¨æ³å®ãã¦ãããã¢ã¸ã¥ã¼ã«ã JavaScript 以å¤ï¼ä¾ãã°ãJSONï¼ã§ããå ´åã¯å¤±æãã¾ããããã«ãããã¢ã¸ã¥ã¼ã«åã常ã«å³å¯ã«æ¤è¨¼ãããã»ãã¥ãªãã£ãªã¹ã¯ã鲿¢ãã¾ããå®éã«ã¯ãNode ã Deno ã®ãããªãã©ã¦ã¶ã¼ä»¥å¤ã®ã©ã³ã¿ã¤ã ã¯ããã©ã¦ã¶ã¼ã®æå³ã¥ãã«é
ç½®ããã type ã JSON ã¢ã¸ã¥ã¼ã«ã«å¼·å¶ãã¾ãã
type 屿§ã¯ãä»ã«ã対å¿ãã¦ããã¢ã¸ã¥ã¼ã«åãããã¾ããä¾ãã°ãHTML 仿§ã§ã¯ CSSStyleSheet ãªãã¸ã§ã¯ããã¤ã³ãã¼ããã css ã¿ã¤ããå®ç¾©ãã¦ãã¾ãã
import styles from "https://example.com/styles.css" with { type: "css" };
屿§ã®æ§æã¯æ¡å¼µã§ããããã«è¨è¨ããã¦ãã¾ããè¨èªã§ã¯ãåãã®ã¿ãæå®ãã¾ãããã©ã³ã¿ã¤ã ã§ã¯ä»ã«ã屿§ãèªã¿åããå¦çãããã¨ãã§ãã¾ãã屿§ã¯ãã¢ã¸ã¥ã¼ã«èªã¿è¾¼ã¿ããã»ã¹ã®å段éã§ã©ã³ã¿ã¤ã ã®åä½ã夿´ãããã¨ãã§ãã¾ãã
-
解決: ãã®å±æ§ã¯ã¢ã¸ã¥ã¼ã«æå®åï¼
fromå¥ã®æååï¼ã®ä¸é¨ã§ãããã®ãããåãæååãã¹ãæå®ãããå ´åã§ããç°ãªã屿§ã«ãã£ã¦ã¾ã£ããç°ãªãã¢ã¸ã¥ã¼ã«ãèªã¿è¾¼ã¾ããå¯è½æ§ãããã¾ããä¾ãã°ãTypeScript 㯠resolution-mode 屿§ã«å¯¾å¿ãã¦ãã¾ããtsimport type { TypeFromRequire } from "pkg" with { "resolution-mode": "require", }; -
åå¾: ä¾ãã°ãCSS ã¢ã¸ã¥ã¼ã«ã¯
destinationã"style"ã«è¨å®ãã¦åå¾ããJSON ã¢ã¸ã¥ã¼ã«ã¯destination: "json"ã«è¨å®ãã¦åå¾ãã¾ããããã¯ãåãåºåå URL ãæå®ãããå ´åã§ãããµã¼ãã¼ã¯ç°ãªãã³ã³ãã³ããè¿ãå¯è½æ§ãããã¨ãããã¨ãæå³ãã¾ãã -
æ§æè§£æã¨è©ä¾¡: å®è¡æã«ãã¢ã¸ã¥ã¼ã«ã®æ§æè§£æã¨è©ä¾¡ã®æ¹æ³ã決å®ããããã«ããã®å±æ§ã使ç¨ãããã¨ãããã¾ãã
ãã ããæªç¥ã®å±æ§ã使ç¨ãããã¨ã¯ã§ãã¾ãããæªç¥ã®å±æ§ãæ¤åºãããã¨ãããã¾ã§ã¨ã©ã¼ã¨ããã¦ããã©ã³ã¿ã¤ã ã§ã¨ã©ã¼ãçºçãã¾ãã
ä¾
>JSON ã¢ã¸ã¥ã¼ã«ã type 屿§ã§ã¤ã³ãã¼ã
data.json:
{
"name": "John"
}
index.html:
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<script type="module">
import data from "./data.json" with { type: "json" };
const p = document.createElement("p");
p.textContent = `åå: ${data.name}`;
document.body.appendChild(p);
</script>
</head>
<body></body>
</html>
ãã¼ã«ã«ã® HTTP ãµã¼ãã¼ãå§ããã«ã¯ï¼ãã©ãã«ã·ã¥ã¼ãã£ã³ã°ãåç
§ï¼ãindex.html ãã¼ã¸ã«ç§»åãã¾ãããã¼ã¸ã« John ã¨è¡¨ç¤ºããã¦ããã¯ãã§ãã
ã¡ã¢:
JSON ã¢ã¸ã¥ã¼ã«ã¯ã1 ã¤ããããã©ã«ãã¨ã¯ã¹ãã¼ãã§ãã¾ãããååä»ãã¤ã³ãã¼ãï¼import { name } from "data.json" ãªã©ï¼ã¯ã§ãã¾ããã
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # prod-WithClause> |