import
Baseline
åºãå©ç¨å¯è½
*
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2018å¹´5æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
* ãã®æ©è½ã®ä¸é¨ã¯ã対å¿ã¬ãã«ãç°ãªãå ´åãããã¾ãã
éç㪠import 宣è¨ã¯ãä»ã®ã¢ã¸ã¥ã¼ã«ã«ãã£ã¦ã¨ã¯ã¹ãã¼ããããèªã¿è¾¼ã¿å°ç¨ã®åçãã¤ã³ããã¤ã³ãã¼ãããããã«ä½¿ç¨ãã¾ããã¤ã³ãã¼ããããã¤ã³ãã¯ããã¤ã³ããã¨ã¯ã¹ãã¼ãããã¢ã¸ã¥ã¼ã«ã«ãã£ã¦æ´æ°ããã䏿¹ãã¤ã³ãã¼ããã¦ããã¢ã¸ã¥ã¼ã«ã«ãã£ã¦åå²ãå½ã¦ãããã¨ãã§ããªãããã«ããåçãã¤ã³ããã¨å¼ã°ãã¦ãã¾ãã
ã½ã¼ã¹ãã¡ã¤ã«ã®ä¸ã§ import 宣è¨ã使ç¨ããããã«ã¯ãã©ã³ã¿ã¤ã ããã®ãã¡ã¤ã«ãã¢ã¸ã¥ã¼ã«ã¨è¦ãªãå¿
è¦ãããã¾ããHTML ã§ã¯ãtype="module" ã <script> ã¿ã°ã«å ãããã¨ãããã«ç¸å½ãã¾ããã¢ã¸ã¥ã¼ã«ã¯ãèªåçã«å³æ ¼ã¢ã¼ãã¨ãã¦è§£éããã¾ãã
ã¾ãã颿°é¢¨ã®åç㪠import() ãããããã¡ã㯠type="module" ã®ã¹ã¯ãªãããå¿
è¦ã¨ãã¾ããã
æ§æ
import defaultExport from "module-name";
import * as name from "module-name";
import { export1 } from "module-name";
import { export1 as alias1 } from "module-name";
import { default as alias } from "module-name";
import { export1, export2 } from "module-name";
import { export1, export2 as alias2, /* ⦠*/ } from "module-name";
import { "string name" as alias } from "module-name";
import defaultExport, { export1, /* ⦠*/ } from "module-name";
import defaultExport, * as name from "module-name";
import "module-name";
defaultExport-
ã¢ã¸ã¥ã¼ã«ããã®ããã©ã«ãã¨ã¯ã¹ãã¼ããåç §ããååãJavaScript ã®èå¥åã¨ãã¦æå¹ãªæååã§ãªããã°ãªãã¾ããã
module-name-
ã¤ã³ãã¼ãå ã®ã¢ã¸ã¥ã¼ã«ã åä¸å¼ç¨ç¬¦ããã³äºéå¼ç¨ç¬¦ã§å²ã¾ããæååãªãã©ã«ã®ã¿ã許å¯ããã¾ãã æå®åã®è©ä¾¡ã¯ãã¹ãã«ãã£ã¦è¦å®ããã¾ããã»ã¨ãã©ã®ãã¹ãã¯ãã©ã¦ã¶ã¼ã«æºæ ããæå®åãç¾å¨ã®ã¢ã¸ã¥ã¼ã« URLï¼
import.meta.urlåç §ï¼ã«å¯¾ããç¸å¯¾ URL ã¨ãã¦è§£æ±ºãã¾ããNodeãbundlersããã®ä»ã®éãã©ã¦ã¶ã¼ç°å¢ã§ã¯ãããã«å ãã¦ç¬èªã®æ©è½ãå®ç¾©ãã¦ãããã¨ãå¤ããããæ£ç¢ºãªã«ã¼ã«ãçè§£ããã«ã¯ãããã®ããã¥ã¡ã³ããåç §ããå¿ è¦ãããã¾ããã¢ã¸ã¥ã¼ã«æå®åã®è§£æ±ºã®ç¯ã«ã詳細æ å ±ãè¨è¼ããã¦ãã¾ãã name-
ã¤ã³ãã¼ããåç §ããã¨ãåå空éã®ããã«ç¨ããããã¢ã¸ã¥ã¼ã«ãªãã¸ã§ã¯ãã®ååãJavaScript ã®èå¥åã¨ãã¦æå¹ãªæååã§ãªããã°ãªãã¾ããã
exportN-
ã¤ã³ãã¼ãããã¨ã¯ã¹ãã¼ãã®ååã
module-nameã®ã¢ã¸ã¥ã¼ã«ãã¨ã¯ã¹ãã¼ããã¦ããå 容ã«ãã£ã¦ãèå¥åã«ãæååãªãã©ã«ã«ãã©ã¡ãã«ããªããã¾ããæååãªãã©ã«ã®å ´åãæå¹ãªèå¥åãç¨ãã¦å¥åãå²ãå½ã¦ãªããã°ãªãã¾ããã aliasN-
æå®ãããã¤ã³ãã¼ããåç §ããååãJavaScript ã®èå¥åã¨ãã¦æå¹ãªæååã§ãªããã°ãªãã¾ããã
"module-name" ã«ã¯ãã¤ã³ãã¼ã屿§ã with ãã¼ã¯ã¼ãã®å¾ã«ç¶ããã¨ãããã¾ãã
解説
import 宣è¨ã¯ã¢ã¸ã¥ã¼ã«ã®ãããã¬ãã«ï¼è¦ããã«ãããã¯ã颿°ãªã©ã®ä¸ä»¥å¤ï¼ã«ã®ã¿æ¸ããã¨ãã§ãã¾ãããã¼ãµã¼ã import 宣è¨ãã¢ã¸ã¥ã¼ã«ä»¥å¤ã®æèï¼ä¾ãã° type="module" ã®ãªã <script> ã¿ã°ãevalãnew Function ãªã©ããã¹ã¯ãªããããã颿°ã®æ¬ä½ãããã¼ã¹æã®ç®æ¨ã¨ãã¦æã¤ãã®ï¼ ã§æ¤åºããã¨ãSyntaxError ãçºçããã¾ããã¢ã¸ã¥ã¼ã«ä»¥å¤ã®æèã§ã¢ã¸ã¥ã¼ã«ããã¼ãããã«ã¯ããã¤ãããã¯ã¤ã³ãã¼ãã¨ããæ§æã代ããã«ä½¿ç¨ãã¦ãã ããã
ã¤ã³ãã¼ãããããã¹ã¦ã®ãã¤ã³ãã¯ãåãã¹ã³ã¼ãã«è¤æ°åå¨ãã¦ã¯ããã¾ããããã㯠let ã constã classã functionã varããããã import ã¨ãã£ããä»ã®ãããã宣è¨ã¨åæ§ã§ãã
import 宣è¨ã¯æ§æçã«ç¡¬ç´ãããã®ã¨ãªã£ã¦ãã¾ããä¾ãã°ãæååãªãã©ã«ããæå®åã«ä½¿ããªãã£ããããããã¬ãã«ã§ãã使ç¨ã§ããªãã£ããããã¹ã¦ã®ãã¤ã³ããèå¥åã§ãªããã°ãªããªããã¨ãã£ãå¶éãããã¾ãããã®å¶éã«ãããã¢ã¸ã¥ã¼ã«ã¯è©ä¾¡ããåã«éçã«è§£æãã¦ãªã³ã¯ããããã¨ãã§ãã¾ããããã¯ã¢ã¸ã¥ã¼ã«ãéåæã«ãã¼ãããä¸ã§éµã¨ãªãæ§è³ªã§ããããã¬ãã« await ã¨ãã£ãæ©è½ãå®ç¾ããã¦ããã¦ãã¾ãã
import 宣è¨ã®å½¢
import 宣è¨ã«ã¯ 4 ã¤ã®å½¢å¼ãããã¾ãã
- ååä»ã import:
import { export1, export2 } from "module-name"; - ããã©ã«ãã® import:
import defaultExport from "module-name"; - åå空éã® import:
import * as name from "module-name"; - å¯ä½ç¨ã® import:
import "module-name";
æ§æã®æå³ãæããã«ãããããä¸è¨ã«ä¾ã示ãã¾ãã
ååä»ã import
ä¾ãã° my-module ãã myExport ã¨ããååã®å¤ãï¼export * from "another.js" ãªã©ã§æé»çã«ããã export æã§æç¤ºçã«ããï¼ã¨ã¯ã¹ãã¼ãããã¦ããå ´åãæ¬¡ã®ä¾ã§ã¯ myExport ãç¾å¨ã®ã¹ã³ã¼ãã«è¿½å ãã¾ãã
import { myExport } from "/modules/my-module.js";
ä¸ã¤ã®ã¢ã¸ã¥ã¼ã«ããè¤æ°ã®ååãã¤ã³ãã¼ããããã¨ãã§ãã¾ãã
import { foo, bar } from "/modules/my-module.js";
ã¤ã³ãã¼ãããéãã¨ã¯ã¹ãã¼ãããã¦ããååã夿´ãããã¨ãã§ãã¾ããä¾ãã°æ¬¡ã®ããã«æ¸ãã¨ã shortName ãç¾å¨ã®ã¹ã³ã¼ãã«è¿½å ãã¾ãã
import { reallyReallyLongModuleExportName as shortName } from "/modules/my-module.js";
ã¢ã¸ã¥ã¼ã«ããã¨ã¯ã¹ãã¼ãããã¦ããååããèå¥åã¨ãã¦ã¯ç¡å¹ãªæååãªãã©ã«ã«ãªã£ã¦ãããã¨ãããã¾ãããã®å ´å対象ã®ååãç¾å¨ã®ã¹ã³ã¼ãã§ä½¿ç¨ããã«ã¯ãå¥åãä»ããªããã°ãªãã¾ããã
// /modules/my-module.js
const a = 1;
export { a as "a-b" };
import { "a-b" as a } from "/modules/my-module.js";
ã¡ã¢:
import { x, y } from "mod" ã¯ã import defaultExport from "mod" ã㦠defaultExport ãã x 㨠y ãæ§é åè§£ãããã¨ã¨ç価ã§ã¯ããã¾ãããååä»ãã®ã¤ã³ãã¼ãã¨ããã©ã«ãã®ã¤ã³ãã¼ã㯠JavaScript ã®ã¢ã¸ã¥ã¼ã«ã«ãããå¥ç¨®ã®æ§æã§ãã
ããã©ã«ãã® import
ããã©ã«ãã¨ã¯ã¹ãã¼ãã§ã¨ã¯ã¹ãã¼ããããå¤ã¯ã対å¿ããããã©ã«ãã®ã¤ã³ãã¼ãæ§æãç¨ãã¦ã¤ã³ãã¼ãããå¿ è¦ãããã¾ãããã®ãã¼ã¸ã§ã³ã§ã¯ãããã©ã«ãã®å¤ãç´æ¥ã¤ã³ãã¼ããã¾ãã
import myDefault from "/modules/my-module.js";
ããã©ã«ãã®ã¨ã¯ã¹ãã¼ãã¯ååãæç¤ºãã¦ãã¾ããã®ã§ã好ããªååãä¸ãããã¨ãã§ãã¾ãã
ããã©ã«ãã®ã¤ã³ãã¼ãã¨åå空éã®ã¤ã³ãã¼ããã¾ãã¯ååä»ãã¤ã³ãã¼ããä¸ç·ã«ä½¿ç¨ãããã¨ãã§ãã¾ãããã®ãããªå ´åãããã©ã«ãã®ã¤ã³ãã¼ããæåã«å®£è¨ãã¦ãã ãããä¾ãã°æ¬¡ã®ããã«ãªãã¾ãã
import myDefault, * as myModule from "/modules/my-module.js";
// myModule.default 㨠myDefault ã¯åãå¤
ãããã¯ã
import myDefault, { foo, bar } from "/modules/my-module.js";
default ã¨ããååã®ã¤ã³ãã¼ãã¨ããã©ã«ãã®ã¤ã³ãã¼ãã¯ãåãçµæãããããã¾ãããã ã default ã¯äºç´èªãªã®ã§ãå¥åãä»ããªããã°ãªãã¾ããã
import { default as myDefault } from "/modules/my-module.js";
åå空éã® import
次ã®ã³ã¼ãã¯ã /modules/my-module.js ã¨ããå ´æã«ããã¢ã¸ã¥ã¼ã«ãã¨ã¯ã¹ãã¼ããããã¹ã¦ã®å¤ãå«ãã myModule ãç¾å¨ã®ã¹ã³ã¼ãã«è¿½å ãã¾ãã
import * as myModule from "/modules/my-module.js";
ãã®å ´åã myModule ã¯åå空éãªãã¸ã§ã¯ãã表ãã¦ãã¾ããåå空éãªãã¸ã§ã¯ãã¯ã¨ã¯ã¹ãã¼ãããã¦ãããã¹ã¦ã®å¤ãããããã£ã¨ãã¦ä¿æãã¦ãã¾ããä¾ãã°ãä¸è¨ã®ã³ã¼ãã§ã¤ã³ãã¼ããããã¢ã¸ã¥ã¼ã«ã doAllTheAmazingThings() ãã¨ã¯ã¹ãã¼ããã¦ããå ´åãæ¬¡ã®ããã«å¼ã¶ãã¨ãã§ãã¾ã:
myModule.doAllTheAmazingThings();
myModule ã¯å°å°ããã null ãããã¿ã¤ããªãã¸ã§ã¯ãã§ãã ããã©ã«ãã¨ã¯ã¹ãã¼ã㯠default ã¨ããååã®ãã¼ã§å©ç¨ã§ããããã«ãªã£ã¦ãã¾ãã詳細ã¯ã¢ã¸ã¥ã¼ã«åå空éãªãã¸ã§ã¯ããã覧ãã ããã
ã¡ã¢:
JavaScript 㯠import * from "module-name" ã®ãããªãã¯ã¤ã«ã«ã¼ãã¤ã³ãã¼ããæä¾ãã¦ãã¾ãããååã®è¡çªãé«ç¢ºçã§çºçããããã§ãã
å¯ä½ç¨ã®ããã ãã«ã¢ã¸ã¥ã¼ã«ãã¤ã³ãã¼ããã
å¯ä½ç¨ã®ããã ãã«ã¢ã¸ã¥ã¼ã«å ¨ä½ãã¤ã³ãã¼ãããå ´åãä½ãã¤ã³ãã¼ãããã¾ãããã¢ã¸ã¥ã¼ã«ã®ã°ãã¼ãã«ãªã³ã¼ããå®è¡ãããã ãã§ãå¤ã¯ã¤ã³ãã¼ããããªãã®ã§ãã
import "/modules/my-module.js";
ãã®ç¨®ã®ã¤ã³ãã¼ãã¯ãã°ãã°ããªãã£ã«ã®ããã«ç¨ãããã¾ããããªãã£ã«ã¯ã°ãã¼ãã«å¤æ°ãæ¸ãæããããã§ãã
å·»ãä¸ã
ã¤ã³ãã¼ã宣è¨ã¯å·»ãä¸ããè¡ããã¾ãããã®å ´åãã¤ã³ãã¼ããå°å ¥ããèå¥åãã¢ã¸ã¥ã¼ã«å ¨ä½ã§å©ç¨ã§ããã¨ãããã¨ãããã¦ãã®å¯ä½ç¨ãã¢ã¸ã¥ã¼ã«ã®æ®ãã®ã³ã¼ããå®è¡ãããåã«çããã¨ãããã¨ãæå³ãã¦ãã¾ãã
myModule.doAllTheAmazingThings(); // myModule.doAllTheAmazingThings ã¯æ¬¡ã®è¡ã§ã¤ã³ãã¼ãããã
import * as myModule from "/modules/my-module.js";
ã¢ã¸ã¥ã¼ã«æå®åã®è§£æ±º
ECMAScript 仿§æ¸ã¯ã¢ã¸ã¥ã¼ã«æå®åã®è§£æ±ºæ¹æ³ãå®ç¾©ãã¦ãããããã¹ãç°å¢ï¼ãã©ã¦ã¶ã¼ãNode.jsãDeno ãªã©ï¼ã«å§ãã¦ãã¾ãããã©ã¦ã¶ã¼ã®åä½ã¯ HTML 仿§æ¸ã§è¦å®ããã¦ãããããããã¹ã¦ã®ç°å¢ã«ãããäºå®ä¸ã®æ¨æºã¨ãªã£ã¦ãã¾ãã
HTML 仿§æ¸ãNodeããã®ä»å¤ãã®å®è£ ã§åºãèªç¥ããã¦ããæå®åã«ã¯ã主ã«ä»¥ä¸ã® 3 種é¡ãããã¾ãã
/ã./ã../ã§å§ã¾ããç¸å¯¾æå®åãã¯ãç¾å¨ã®ã¢ã¸ã¥ã¼ã« URL ãåºæºã«è§£æ±ºããã¾ãã- ã絶対æå®åãã¯è§£æå¯è½ãª URL ã§ããããã®ã¾ã¾è§£æ±ºããã¾ãã
- ä¸è¨ã«è©²å½ããªããç´ ã®æå®åãã
ç¸å¯¾æå®åã«é¢ããæãéè¦ãªæ³¨æç¹ï¼ç¹ã« CommonJS ã®è¦ç´ã«æ
£ããã¦ã¼ã¶ã¼ã«ã¨ã£ã¦ï¼ã¯ããã©ã¦ã¶ã¼ã§ã¯ 1 ã¤ã®æå®åãæé»çã«è¤æ°ã®åè£ã«è§£æ±ºããããã¨ãç¦æ¢ãã¦ããç¹ã§ããCommonJS ã§ã¯ãmain.js 㨠utils/index.js ãåå¨ããå ´åã以ä¸ã®ãããã®è¨è¿°ã utils/index.js ã®ãããã©ã«ãã¨ã¯ã¹ãã¼ãããã¤ã³ãã¼ããã¾ãã
// main.js
const utils = require("./utils"); // "index.js" ã®ãã¡ã¤ã«åãçç¥
const utils = require("./utils/index"); // ".js" ã®æ¡å¼µåã®ã¿ãçç¥
const utils = require("./utils/index.js"); // ãã£ã¨ãæç¤ºç
ã¦ã§ãä¸ã§ã¯ãããã¯ã³ã¹ãããããã¾ãããªããªããimport x from "./utils" ã¨è¨è¿°ããå ´åããã©ã¦ã¶ã¼ã¯ã¤ã³ãã¼ãå¯è½ãªã¢ã¸ã¥ã¼ã«ãè¦ã¤ããã¾ã§ãutilsãutils/index.jsãutils.jsãããã¦ããããä»ã«ãå¤ãã® URL ã«å¯¾ãã¦ãªã¯ã¨ã¹ããéä¿¡ããå¿
è¦ãããããã§ãããããã£ã¦ãHTML 仿§æ¸ã§ã¯ãæå®åã¯ããã©ã«ãã§ç¾å¨ã®ã¢ã¸ã¥ã¼ã« URL ãåºæºã«è§£æ±ºããã URL ã®ã¿ã«å¶éããã¦ãã¾ãããã¡ã¤ã«æ¡å¼µåã index.js ã¨ãããã¡ã¤ã«åãçç¥ãããã¨ã¯ã§ãã¾ããããã®åä½ã¯ Node.js ã® ESM å®è£
ã«ç¶æ¿ããã¦ãã¾ãããECMAScript 仿§æ¸ã«ã¯å«ã¾ãã¦ãã¾ããã
ãã ãããã㯠import x from "./utils" ãã¦ã§ãä¸ã§å
¨ãæ©è½ããªãã¨ããæå³ã§ã¯ããã¾ããã ãã©ã¦ã¶ã¼ã¯ä¾ç¶ã¨ãã¦ãã® URL ã«ãªã¯ã¨ã¹ããéä¿¡ãããµã¼ãã¼ãæ£ããã³ã³ãã³ãã§å¿çã§ããã°ã¤ã³ãã¼ãã¯æåãã¾ãã éå¸¸ãæ¡å¼µåãªãã®ãªã¯ã¨ã¹ã㯠HTML ãã¡ã¤ã«ã¸ã®ãªã¯ã¨ã¹ãã¨ãã¦è§£éãããããããããå®ç¾ããã«ã¯ãµã¼ãã¼å´ã§ç¬èªã®è§£æ±ºãã¸ãã¯ãå®è£
ããå¿
è¦ãããã¾ãã
絶対æå®åã¯ãã¤ã³ãã¼ãå¯è½ãªã½ã¼ã¹ã³ã¼ãã«è§£æ±ºããããããã種é¡ã® URL ã§ããç¹ã«ä»¥ä¸ã®ãã®ãæãããã¾ãã
-
HTTP URL ã¯ãã»ã¨ãã©ã®ã¹ã¯ãªãããæ¢ã« HTTP URL ã使ç¨ãã¦ãããããã¦ã§ãä¸ã§ã¯å¸¸ã«å¯¾å¿ãã¦ãã¾ããDeno ã§ã¯ãã¤ãã£ãã«å¯¾å¿ãã¦ããã¾ãï¼Deno ã¯å½åãã¢ã¸ã¥ã¼ã«ã·ã¹ãã å ¨ä½ã HTTP URL ã«ä¾åããã¦ãã¾ããï¼ã䏿¹ãNode ã§ã¯ã«ã¹ã¿ã HTTPS ãã¼ãã¼ãä»ããå®é¨çãªå¯¾å¿ã®ã¿ã¨ãªã£ã¦ãã¾ãã
-
file:URL ã¯ãNode ãªã©ã®å¤ãã®ãã©ã¦ã¶ã¼ä»¥å¤ã®ã©ã³ã¿ã¤ã ã§å©ç¨ã§ãããããã®ç°å¢ã§ã¯ã¹ã¯ãªãããæ¢ã«file:URL ã使ç¨ãã¦ãã¾ããããããã»ãã¥ãªãã£ä¸ã®çç±ããããã©ã¦ã¶ã¼ã§ã¯å©ç¨ã§ãã¾ããã -
data URL ã¯ããã©ã¦ã¶ã¼ãNodeãDeno ãªã©å¤ãã®ã©ã³ã¿ã¤ã ã§ä½¿ç¨å¯è½ã§ããå°ããªã¢ã¸ã¥ã¼ã«ãã½ã¼ã¹ã³ã¼ãã«ç´æ¥åãè¾¼ãã®ã«ä¾¿å©ã§ãã対å¿ãã MIME ã¿ã¤ãã¯ãã¤ã³ãã¼ãå¯è½ãªã½ã¼ã¹ã³ã¼ããæå®ãããã®ã§ããä¾ãã°ãJavaScript ç¨ã®
text/javascriptãJSON ã¢ã¸ã¥ã¼ã«ç¨ã®application/jsonãWebAssembly ã¢ã¸ã¥ã¼ã«ç¨ã®application/wasmãªã©ã§ããï¼ãªãã import 屿§ãå¿ è¦ã¨ãªãå ´åãããã¾ããï¼js// HTTP URL import x from "https://example.com/x.js"; // data URL import x from "data:text/javascript,export default 42;"; // JSON ã¢ã¸ã¥ã¼ã«ã® data URL import x from 'data:application/json,{"foo":42}' with { type: "json" };text/javascriptã® data URL ã§ãã£ã¦ãã¢ã¸ã¥ã¼ã«ã¨ãã¦è§£éããã¾ãããç¸å¯¾ã¤ã³ãã¼ãã¯ä½¿ç¨ã§ãã¾ãããããã¯data:URL ã¹ãã¼ã ãé層æ§é ãæããªãããã§ããã¤ã¾ããimport x from "data:text/javascript,import y from './y.js';"ã¯ã¨ã©ã¼ãçºçãã¾ããç¸å¯¾æå®å'./y.js'ã解決ã§ããªãããã§ãã -
node:URL ã¯ãNode.js ã®çµã¿è¾¼ã¿ã¢ã¸ã¥ã¼ã«ã«è§£æ±ºããã¾ããããã㯠Node ããã³ Bun ãªã©ãNode ã¨ã®äºææ§ã主張ããä»ã®ã©ã³ã¿ã¤ã ã§ä½¿ç¨ã§ãã¾ãã
CommonJS ã«ãã£ã¦æ®åããç´ ã®æå®åã¯ãnode_modules ãã£ã¬ã¯ããªã¼å
ã§è§£æ±ºããã¾ããä¾ãã°ãimport x from "foo" ãããå ´åãã©ã³ã¿ã¤ã ã¯ç¾å¨ã®ã¢ã¸ã¥ã¼ã«ã®è¦ªãã£ã¬ã¯ããªã¼å
ã«ããä»»æã® node_modules ãã£ã¬ã¯ããªã¼å
ã§ foo ããã±ã¼ã¸ãæ¢ãã¾ãããã®åä½ã¯ãimport maps ã使ç¨ãããã¨ã§ãã©ã¦ã¶ã¼ã§ãåç¾å¯è½ã§ãããä»ã®æ¹æ³ã§è§£æ±ºãã«ã¹ã¿ãã¤ãºãããã¨ãã§ãã¾ãã
ã¢ã¸ã¥ã¼ã«è§£æ±ºã¢ã«ã´ãªãºã ã¯ãHTML仿§æ¸ã§å®ç¾©ããã¦ãã import.meta.resolve 颿°ã使ç¨ãã¦ãããã°ã©ã çã«å®è¡ãããã¨ãå¯è½ã§ãã
ä¾
>æ¨æºçãªã¤ã³ãã¼ã
ãã¡ãã®ä¾ã§ã¯ãæå®ããç¯å²å ã«ããããã¹ã¦ã®ç´ æ°ãåå¾ãã颿°ãã¨ã¯ã¹ãã¼ããããå使ç¨å¯è½ãªã¢ã¸ã¥ã¼ã«ãä½ãã¾ãã
// getPrimes.js
/**
* `max` ããå°ããªç´ æ°ã®ãªã¹ããè¿ãã
*/
export function getPrimes(max) {
const isPrime = Array.from({ length: max }, () => true);
isPrime[0] = isPrime[1] = false;
isPrime[2] = true;
for (let i = 2; i * i < max; i++) {
if (isPrime[i]) {
for (let j = i ** 2; j < max; j += i) {
isPrime[j] = false;
}
}
}
return [...isPrime.entries()]
.filter(([, isPrime]) => isPrime)
.map(([number]) => number);
}
import { getPrimes } from "/modules/getPrimes.js";
console.log(getPrimes(10)); // [2, 3, 5, 7]
ã¤ã³ãã¼ãããå¤ã¯ã¨ã¯ã¹ãã¼ãããã¢ã¸ã¥ã¼ã«ã ãã夿´ã§ãã
ã¤ã³ãã¼ãããèå¥åã¯ãåçãã¤ã³ããã¨å¼ã°ãã¾ããã¨ã¯ã¹ãã¼ããã¦ããã¢ã¸ã¥ã¼ã«ãåä»£å ¥ããã¨ã¤ã³ãã¼ããã¦ããå¤ãå¤ããããã§ããããããªãããå½ã®å¤æ°ãã¤ã³ãã¼ããã¦ããã¢ã¸ã¥ã¼ã«ã¯åä»£å ¥ã§ãã¾ãããããã§ããã¨ã¯ã¹ãã¼ããããªãã¸ã§ã¯ããä¿æãã¦ããã¢ã¸ã¥ã¼ã«ã¯ãã¤ã³ãã¼ããããªãã¸ã§ã¯ããæ¸ãæãããã¨ãã§ãã¾ããã夿´ããå¤ã¯åãå¤ãã¤ã³ãã¼ããã¦ãããã¹ã¦ã®ã¢ã¸ã¥ã¼ã«ã観測ã§ããããã«ãªã£ã¦ãã¾ãã
å¤ã®å¤æ´ã¯ ã¢ã¸ã¥ã¼ã«åå空éãªãã¸ã§ã¯ããéãã¦è¦³æ¸¬ãããã¨ãã§ãã¾ãã
// my-module.js
export let myValue = 1;
setTimeout(() => {
myValue = 2;
}, 500);
// main.js
import { myValue } from "/modules/my-module.js";
import * as myModule from "/modules/my-module.js";
console.log(myValue); // 1
console.log(myModule.myValue); // 1
setTimeout(() => {
console.log(myValue); // 2; my-module has updated its value
console.log(myModule.myValue); // 2
myValue = 3; // TypeError: Assignment to constant variable.
// ã¤ã³ãã¼ããã¦ããã¢ã¸ã¥ã¼ã«ãã§ããã®ã¯å¤ãèªããã¨ã ãã§ãå代å
¥ã¯ã§ãã¾ããã
}, 1000);
JavaScript 以å¤ã®ã¢ã¸ã¥ã¼ã«ã®ã¤ã³ãã¼ã
JavaScript 以å¤ã®ã¢ã¸ã¥ã¼ã«ã import æã§ã¤ã³ãã¼ãã§ãã¾ããããã®å㯠import 屿§ã使ç¨ãã¦æç¤ºçã«å®£è¨ããå¿
è¦ãããã¾ããä¾ãã°ãJSON ã¢ã¸ã¥ã¼ã«ãã¤ã³ãã¼ãããã«ã¯ãtype: "json" 屿§ãæå®ããå¿
è¦ãããã¾ãã
import data from "./data.json" with { type: "json" };
仿§æ¸
| 仿§æ¸ |
|---|
| ECMAScript® 2027 Language Specification > # sec-imports > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
exportimport()import.meta- Import attributes
- Previewing ES6 Modules and more from ES2015, ES2016 and beyond (blogs.windows.com, 2016)
- ES6 in Depth: Modules (hacks.mozilla.org, 2015)
- ES modules: A cartoon deep-dive (hacks.mozilla.org, 2018)
- Exploring JS, Ch.16: Modules (Dr. Axel Rauschmayer)
- Export and Import (javascript.info)