Baseline Widely available *
import()
æ§æã¯ããããã¤ãããã¯ã¤ã³ãã¼ãã¨å¼ã°ãã¾ãããéåæãã¤åçã«ã ECMAScript ã¢ã¸ã¥ã¼ã«ããæ½å¨çã«ã¢ã¸ã¥ã¼ã«ã§ã¯ãªãç°å¢ã«èªã¿è¾¼ããããã«ãã颿°é¢¨ã®å¼ã§ãã
宣è¨ã¹ã¿ã¤ã«ã®ãã®ã¨ã¯ç°ãªããåçã¤ã³ãã¼ãã¯å¿ è¦ãªã¨ãã ãè©ä¾¡ãããããæè»ãªæ§æãå¯è½ã«ãªãã¾ãã
æ§æimport(moduleName)
import(moduleName, options)
import()
å¼ã³åºãã¯é¢æ°å¼ã³åºãã«ããä¼¼ãæ§æã§ããã import
èªä½ã¯ãã¼ã¯ã¼ãã§ããã颿°ã§ã¯ããã¾ãããconst myImport = import
ã®ãããªã¨ã¤ãªã¢ã¹ã使ãããã¨ã¯ã§ããã SyntaxError
ãçºçãã¾ãã
æ«å°¾ã³ã³ã ã¯ãã©ã³ã¿ã¤ã ã options
ã«ã対å¿ãã¦ããå ´åã®ã¿è¨±å¯ããã¾ãããã©ã¦ã¶ã¼ã®äºææ§ã確èªãã¦ãã ããã
moduleName
ã¤ã³ãã¼ãå ã¢ã¸ã¥ã¼ã«ãæå®åã®è©ä¾¡ã¯ãã¹ã次第ã§ããã常ã«éçãªã¤ã³ãã¼ã宣è¨ã¨åãã¢ã«ã´ãªãºã ã«å¾ãã¾ãã
options
ã¤ã³ãã¼ããªãã·ã§ã³ãæ ¼ç´ãããªãã¸ã§ã¯ãã以ä¸ã®ãã¼ãèªèããã¾ãï¼
with
以ä¸ã®ãããã¹ãè¿ãã¾ãï¼
moduleName
ããã®ãã¹ã¦ã®ã¨ã¯ã¹ãã¼ããæ ¼ç´ãããªãã¸ã§ã¯ãï¼ã§å±¥è¡ããã¾ããmoduleName
ã®æååã¸ã®å¼·å¶å¤æã§ä¾å¤ãçºçããå ´åããã®ä¾å¤ã§æå¦ããã¾ããError
ã使ç¨ãããã¹ã¦ã®ãã©ã¦ã¶ã¼ã¯ TypeError
ã使ç¨ãã¾ãï¼ãä¸è¬çãªåå ã«ã¯ä»¥ä¸ãããã¾ãï¼
ã¡ã¢: import()
ãåæçã«ã¨ã©ã¼ãçºçããããã¨ã¯ããã¾ããã
import宣è¨ã®æ§æï¼import something from "somewhere"
ï¼ã¯éçã§ã常ã«ã¢ã¸ã¥ã¼ã«ã èªã¿è¾¼ã¾ããæç¹ã§è©ä¾¡ãããçµæã¨ãªãã¾ãããã¤ãããã¯ã¤ã³ãã¼ãã使ç¨ããã¨ãimport宣è¨ã®æ§æã®ç¡¬ç´æ§ãåé¿ããæ¡ä»¶ä»ãã¾ãã¯ãªã³ããã³ãã§ã¢ã¸ã¥ã¼ã«ãèªã¿è¾¼ããã¨ãã§ãã¾ãã以ä¸ã®ãããªçç±ã§ãåçã¤ã³ãã¼ãã使ç¨ãããã¨ãããã¾ãã
eval
ãã¹ã¯ãªãããã¡ã¤ã«ï¼ã«ããã¨ããåçã¤ã³ãã¼ãã¯å¿ è¦ãªã¨ãã ã使ç¨ãã¦ãã ãããéçãªå½¢ã¯ãåæã®ä¾åé¢ä¿ãèªã¿è¾¼ãã®ã«é©ãã¦ãããéçè§£æãã¼ã«ãããªã¼ã·ã§ã¤ãã³ã°ã®æ©æµãåãããããªãã¾ãã
ãã¡ã¤ã«ãã¢ã¸ã¥ã¼ã«ã¨ãã¦å®è¡ããã¦ããªãå ´åï¼HTML ãã¡ã¤ã«ã§åç
§ãããå ´åãscript ã¿ã°ã« type="module"
ãå¿
è¦ï¼ãéç㪠import 宣è¨ã¯ä½¿ç¨ã§ãã¾ããããéåæã®åç import æ§æã¯å¸¸ã«å©ç¨ã§ããã®ã§ãã¢ã¸ã¥ã¼ã«ä»¥å¤ã®ç°å¢ã«ãã¢ã¸ã¥ã¼ã«ãã¤ã³ãã¼ããããã¨ãã§ãã¾ãã
options
弿°ã使ç¨ããã¨ããã¾ãã¾ãªã¤ã³ãã¼ããªãã·ã§ã³ãæå®ã§ãã¾ããä¾ãã°ãã¤ã³ãã¼ã屿§ãªã©ã§ãï¼
import("./data.json", { with: { type: "json" } });
åçã¢ã¸ã¥ã¼ã«ã¤ã³ãã¼ãã¯ããã¹ã¦ã®å®è¡ã³ã³ããã¹ãã§è¨±å¯ããã¦ããããã§ã¯ããã¾ãããä¾ãã°ãimport()
ã¯ã¡ã¤ã³ã¹ã¬ãããå
±æã¯ã¼ã«ã¼ãå°ç¨ã¯ã¼ã«ã¼ã§ä½¿ç¨ã§ãã¾ããããµã¼ãã¹ã¯ã¼ã«ã¼ãã¯ã¼ã¯ã¬ããå
ã§å¼ã³åºãã¨ä¾å¤ãçºçãã¾ãã
ã¢ã¸ã¥ã¼ã«åå空éãªãã¸ã§ã¯ã ã¯ãã¢ã¸ã¥ã¼ã«ããã®ãã¹ã¦ã®ã¨ã¯ã¹ãã¼ããè¨è¿°ãã¦ãããªãã¸ã§ã¯ãã§ããããã¯éçãªãªãã¸ã§ã¯ãã§ãã¢ã¸ã¥ã¼ã«ãè©ä¾¡ãããã¨ãã«ä½æããã¾ããã¢ã¸ã¥ã¼ã«ã®åå空éãªãã¸ã§ã¯ãã«ã¢ã¯ã»ã¹ããæ¹æ³ã¯ 2 ã¤ããã¾ããåå空éã¤ã³ãã¼ã (import * as name from moduleName
)ãã¾ãã¯åçã¤ã³ãã¼ãã®å±¥è¡å¤ãéãã¦ã§ãã
ã¢ã¸ã¥ã¼ã«åå空éãªãã¸ã§ã¯ãã¯å°å°ãããããããã¿ã¤ãã null
ã®ãªãã¸ã§ã¯ãã§ããããã¯ããªãã¸ã§ã¯ãã®ãã¹ã¦ã®æååãã¼ããã¢ã¸ã¥ã¼ã«ã®ã¨ã¯ã¹ãã¼ãã«å¯¾å¿ããä½åãªãã¼ããªããã¨ãæå³ãã¦ãã¾ãããã¹ã¦ã®ãã¼ã¯è¾æ¸é ã«åæå¯è½ã§ï¼ããªãã¡Array.prototype.sort()
ã®æ¢å®ã®åä½ï¼ãããã©ã«ãã¨ã¯ã¹ãã¼ã㯠default
ã¨ãããã¼ã§å©ç¨ã§ãã¾ããããã«ãã¢ã¸ã¥ã¼ã«åå空éãªãã¸ã§ã¯ãã«ã¯ [Symbol.toStringTag]
ããããã£ããããå¤ã¯ "Module"
ã§ã Object.prototype.toString()
ã§ä½¿ç¨ããããã®ã§ãã
æååããããã£ã¯æ§æä¸å¯è½ã§ãObject.getOwnPropertyDescriptors()
ã使ç¨ãã¦ãã®è¨è¿°åãåå¾ããã¨æ¸ãè¾¼ã¿ãå¯è½ã«ãªãã¾ããããããããããã£ãæ°ããå¤ã«åå²ãå½ã¦ããã¨ã¯ã§ããªããããå®è³ªçã«èªã¿åãå°ç¨ã¨ãªãã¾ãããã®åä½ã¯ãéçã¤ã³ãã¼ãããã©ã¤ãçµåã- å¤ãã¨ã¯ã¹ãã¼ãããã¢ã¸ã¥ã¼ã«ã¯åå²ãå½ã¦ããã¨ãã§ããããã¤ã³ãã¼ãããã¢ã¸ã¥ã¼ã«ã¯ã§ããªã - ã使ããã¨ããäºå®ãåæ ãããã®ã§ããããããã£ã®æ¸ãè¾¼ã¿å¯å¦ã¯ãå¤ãå¤åããå¯è½æ§ãåæ ãã¾ããæ§æä¸å¯è½ã§æ¸ãè¾¼ã¿ä¸å¯ã®ããããã£ã¯ä¸å®ã§ãªããã°ãªããªãããã§ããä¾ãã°ã夿°ã®ã¨ã¯ã¹ãã¼ããããå¤ãå代å
¥ãããã¨ãã§ããæ°ããå¤ã¯ã¢ã¸ã¥ã¼ã«åå空éãªãã¸ã§ã¯ãã§ç£è¦ãããã¨ãã§ãã¾ãã
ããããã®ï¼æ£è¦åãããï¼ã¢ã¸ã¥ã¼ã«æå®åã¯åºæã®ã¢ã¸ã¥ã¼ã«åå空éãªãã¸ã§ã¯ãã«å¯¾å¿ãããããä¸è¬çã«ã¯ä»¥ä¸ã®ããã«ãªãã¾ãã
import * as mod from "/my-module.js";
import("/my-module.js").then((mod2) => {
console.log(mod === mod2); // true
});
ãã ãã1ã¤ã ãå¥å¦ãªå ´åãããã¾ãããããã¹ã¯æ±ºã㦠thenable ã«å±¥è¡ããããã¨ã¯ãªãã®ã§ããã my-module.js
ã¢ã¸ã¥ã¼ã«ã then()
ã¨ãã颿°ãã¨ã¯ã¹ãã¼ãããã¨ããã®é¢æ°ã¯ãããã¹è§£æ±ºããã»ã¹ã®ä¸é¨ã¨ãã¦ããã¤ãããã¯ã¤ã³ãã¼ãã®ãããã¹ãå±¥è¡ãããã¨èªåçã«å¼ã°ãããã¨ã«ãªãã¾ãã
// my-module.js
export function then(resolve) {
console.log("then() called");
resolve(1);
}
// main.js
import * as mod from "/my-module.js";
import("/my-module.js").then((mod2) => {
// Logs "then() called"
console.log(mod === mod2); // false
});
è¦å: ã¢ã¸ã¥ã¼ã«ãã then()
ã¨ããååã®é¢æ°ãã¨ã¯ã¹ãã¼ãããªãã§ãã ãããããã«ãããã¢ã¸ã¥ã¼ã«ã¯åçã«ã¤ã³ãã¼ããããã¨ãã¨éçã«ã¤ã³ãã¼ããããã¨ãã§ç°ãªãåä½ããã¾ãã
ãã®ç©æ¥µçãªãã£ãã·ã¥ã«ãããJavaScript ã³ã¼ãã¯è¤æ°åã¤ã³ãã¼ãããã¦ãä¸åº¦ã ãããå®è¡ãããªããã¨ãä¿è¨¼ããã¾ããå°æ¥ã®ã¤ã³ãã¼ã㯠HTTP ãªã¯ã¨ã¹ãããã£ã¹ã¯ã¢ã¯ã»ã¹ã«ããçºå±ãã¾ãããJavaScript ç°å¢å ¨ä½ãåèµ·åããã«ã¢ã¸ã¥ã¼ã«ãåã¤ã³ãã¼ããã¦åè©ä¾¡ããå¿ è¦ãããå ´åãä¸ã¤ã®å¯è½ãªããªãã¯ã¯ãã¢ã¸ã¥ã¼ã«æå®åã§ä¸æã®ã¯ã¨ãªã¼ãã©ã¡ã¼ã¿ã¼ã使ç¨ãããã¨ã§ãããã㯠URL æå®åããµãã¼ããããã©ã¦ã¶ã¼ä»¥å¤ã®ã©ã³ã¿ã¤ã ã§ãåä½ãã¾ãã
import("/my-module.js?t=" + Date.now());
ããã«ãããé·æéå®è¡ãããã¢ããªã±ã¼ã·ã§ã³ã§ã¡ã¢ãªã¼ãªã¼ã¯ãçºçããå¯è½æ§ããããã¨ã«æ³¨æãã¦ãã ãããã¨ã³ã¸ã³ã¯ã¢ã¸ã¥ã¼ã«åå空éãªãã¸ã§ã¯ããå®å ¨ã«ã¬ãã¼ã¸ã³ã¬ã¯ã·ã§ã³ã§ããªãããã§ããç¾å¨ãã¢ã¸ã¥ã¼ã«åå空éãªãã¸ã§ã¯ãã®ãã£ãã·ã¥ãæåã§ã¯ãªã¢ããæ¹æ³ã¯ããã¾ããã
ã¢ã¸ã¥ã¼ã«åå空éãªãã¸ã§ã¯ãã®ãã£ãã·ã¥ã¯ãæ£å¸¸ã«èªã¿è¾¼ã¾ãããªã³ã¯ãããã¢ã¸ã¥ã¼ã«ã«ã®ã¿é©ç¨ããã¾ããã¢ã¸ã¥ã¼ã«ã¯ 3 ã¤ã®ã¹ãããã§ã¤ã³ãã¼ãããã¾ãï¼èªã¿è¾¼ã¿ï¼ã¢ã¸ã¥ã¼ã«ã®åå¾ï¼ããªã³ã¯ï¼ä¸»ã«ã¢ã¸ã¥ã¼ã«ã®è§£æï¼ãè©ä¾¡ï¼è§£æãããã³ã¼ãã®å®è¡ï¼ãè©ä¾¡ã®å¤±æã®ã¿ããã£ãã·ã¥ããã¾ããã¢ã¸ã¥ã¼ã«ã®èªã¿è¾¼ã¿ããªã³ã¯ã«å¤±æããå ´åãæ¬¡ã®ã¤ã³ãã¼ãã§å度èªã¿è¾¼ã¿ã¨ãªã³ã¯ã試è¡ããå ´åãããã¾ãããã©ã¦ã¶ã¼ã¯å徿ä½ã®çµæããã£ãã·ã¥ããå ´åã¨ããªãå ´åãããã¾ãããä¸è¬ç㪠HTTP ã»ãã³ãã£ã¯ã¹ã«å¾ãã¹ããªã®ã§ããã®ãããªãããã¯ã¼ã¯é害ã®å¦ç㯠fetch()
ã®å¤±æãå¦çãããã¨ã¨ç°ãªãã¹ãã§ã¯ããã¾ããã
(async () => {
if (somethingIsTrue) {
// å¯ä½ç¨ã®ããã¢ã¸ã¥ã¼ã«ãã¤ã³ãã¼ã
await import("/modules/my-module.js");
}
})();
èªåã®ããã¸ã§ã¯ãã§ ESM ãã¨ã¯ã¹ãã¼ãããããã±ã¼ã¸ã使ç¨ããå ´åãå¯ä½ç¨ãããå ´åã®ã¿ã¤ã³ãã¼ããããã¨ãã§ãã¾ãããã®å ´åãããã±ã¼ã¸ã®ã¨ã³ããªã¼ãã¤ã³ããã¡ã¤ã«ï¼ããã³ãã®ãã¡ã¤ã«ãã¤ã³ãã¼ããããã¹ã¦ã®ãã¡ã¤ã«ï¼å ã®ã³ã¼ãã®ã¿ãå®è¡ããã¾ãã
ããã©ã«ããã¤ã³ãã¼ãã¤ã³ãã¼ããããã¢ã¸ã¥ã¼ã«åå空éãªãã¸ã§ã¯ããæ§é åè§£ããå ´åãdefault
ã¯äºç´èªã§ãããããdefault
ãã¼ã®ååã夿´ããå¿
è¦ãããã¾ãã
(async () => {
if (somethingIsTrue) {
const {
default: myDefault,
foo,
bar,
} = await import("/modules/my-module.js");
}
})();
ã¦ã¼ã¶ã¼æä½ã«å¿ãããªã³ããã³ãã®ã¤ã³ãã¼ã
ãã®ä¾ã§ã¯ãã¦ã¼ã¶ã¼ã®æä½ï¼ãã®å ´åã¯ãã¿ã³ã®ã¯ãªãã¯ï¼ã«åºã¥ãã¦ãã¼ã¸ã«æ©è½ãèªã¿è¾¼ã¾ãããã®ã¢ã¸ã¥ã¼ã«å
ã®é¢æ°ãå¼ã³åºãæ¹æ³ã示ãã¦ãã¾ãããã®æ©è½ãå®è£
ããããã®å¯ä¸ã®æ¹æ³ã¨ããããã§ã¯ããã¾ãããimport()
颿°ã¯ await
ã«ã対å¿ãã¦ãã¾ãã
const main = document.querySelector("main");
for (const link of document.querySelectorAll("nav > a")) {
link.addEventListener("click", (e) => {
e.preventDefault();
import("/modules/my-module.js")
.then((module) => {
module.loadPageInto(main);
})
.catch((err) => {
main.textContent = err.message;
});
});
}
ç°å¢ã«å¿ãã¦æ§ã
ãªå½¢ã®ã¢ã¸ã¥ã¼ã«ãã¤ã³ãã¼ã
ãµã¼ãã¼ãµã¤ãã¬ã³ããªã³ã°ãªã©ã®å¦çã§ã¯ããµã¼ãã¼ã¨ãã©ã¦ã¶ã¼ã§ç°ãªãã°ãã¼ãã«ãã¢ã¸ã¥ã¼ã«ã¨å¯¾è©±ãããããç°ãªããã¸ãã¯ãèªã¿è¾¼ãå¿
è¦ãããå ´åãããã¾ãï¼ä¾ãã°ããã©ã¦ã¶ã¼ã®ã³ã¼ã㯠document
ã navigator
ãªã©ã®ã¦ã§ã API ã«ããµã¼ãã¼ã³ã¼ãã¯ãµã¼ãã¼ãã¡ã¤ã«ã·ã¹ãã ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãï¼ãæ¡ä»¶ä»ãã®åçã¤ã³ãã¼ãã«ãã£ã¦ããã®ãããªãã¨ãå¯è½ã«ãªãã¾ãã
let myModule;
if (typeof window === "undefined") {
myModule = await import("module-used-on-server");
} else {
myModule = await import("module-used-in-browser");
}
ãªãã©ã«ã§ãªãæå®åãæã¤ã¢ã¸ã¥ã¼ã«ã®ã¤ã³ãã¼ã
åçã¤ã³ãã¼ãã§ã¯ãã¢ã¸ã¥ã¼ã«æå®åã¨ãã¦ãæååãªãã©ã«ã«éãããä»»æã®å¼ã§æå®ãããã¨ãã§ãã¾ãã
ããã§ã¯ã /modules/module-0.js
ã/modules/module-1.js
ãªã©ã10 åã®ã¢ã¸ã¥ã¼ã«ã並åã«èªã¿è¾¼ãã§ããããããã¨ã¯ã¹ãã¼ããã load
颿°ãå¼ã³åºãã¦ãã¾ãã
Promise.all(
Array.from({ length: 10 }).map(
(_, index) => import(`/modules/module-${index}.js`),
),
).then((modules) => modules.forEach((module) => module.load()));
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4