JavaScript中有import語句。import語句用于將某個模塊中導出的函數(shù)或?qū)ο?、初始值導入到另一個模塊中;語法“import {模塊名稱} from "需要導入模塊的路徑名"”。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
import 語句用于導入由另一個模塊導出的綁定。無論是否聲明了 strict mode,導入的模塊都運行在嚴格模式下。import語句不能在嵌入式腳本中使用。
語法
import defaultExport from “module-name”; import * as name from “module-name”; import { export } from “module-name”; import { export as alias } from “module-name”; import { export1 , export2 } from “module-name”; import { export1, export2 as alias2 , [...] } from “module-name”; import defaultExport, { export [ , [...] ] } from “module-name”; import defaultExport, * as name from “module-name”; import “module-name”;
defaultExport
將引用模塊默認導出的名稱。
module-name
要導入的模塊。這通常是包含模塊的 .js 文件的相對或絕對路徑名,可以不包括 .js 擴展名。某些打包工具可以允許或要求使用該擴展;檢查你的運行環(huán)境,只允許單引號和雙引號的字符串。
name
引用時將用作一種命名空間的模塊對象的名稱。
export,exportN
要導入的導出名稱
alias,aliasN
將引用指定的導入的名稱。
描述
name 參數(shù)是“模塊對象”的名稱,它將用一種名稱空間來引用導出。導出參數(shù)指定單個命名導出,而import * as name 語法導入所有導出。
導入整個模塊的內(nèi)容
這將 myModule 插入當前作用域,其中包含來自位于 /modules/my-module.js 文件導出的所有模塊。
import * as myModule from ‘/modules/my-module.js’;
在這里,訪問導出意味著使用模塊名稱(在這種情況下為”myModule”)作為命名空間。例如,如果上面導入的模塊包含一個doAllTheAmazingThings(),你可以這樣調(diào)用:
myModule.doAllTheAmazingThings();
導入單個導出
給定一個名為 myExport 的對象或值,它已經(jīng)從模塊 my-module 導出(因為整個模塊被導出)或顯式導出(使用 export 語句),將 myExport 插入到當前作用域。
import { myExport } from ‘/modules/my-module.js’;
導入多個導出
將 foo 和 bar 插入當前作用域。
import { foo, bar } from ‘/modules/my-module.js’;
導入帶有別名的導出
導入時可以重命名導出,例如,將shortName 插入當前作用域。
import { reallyReallyReallyLongModuleExportName as shortName } from “/modules/my-module.js”;
導入時重命名多個導出
使用別名導入模塊的多個導出。
import { reallyReallyReallyLongModuleMemberName as shortName, anotherLongModuleName as short } form “/modules/my-module.js”;
僅為副作用而導入一個模塊
模塊僅為副作用(中性詞、無貶義含義)而導入,而不是導入模塊中的任何內(nèi)容,這將運行模塊中的全局代碼,但實際上不導入任何值。
import “/modules/my-module.js”
導入默認值
在 default-export (無論是對象、函數(shù)、類等)有效時可用。然后可以使用 import 語句來導入這樣的默認值。
最簡單的用法是直接導入默認值:
import myDefault from “/modules/my-module.js”;
也可以同時將 default 語法與上述用法(命名空間導入和命名導入)一起使用。在這種情況下,default 導入必須首先聲明。
import myDefault, * as myModule from “/modules/my-module.js”;
或者
import myDefault, { foo, bar } from “/modules/my-module.js”;
示例
從輔助模塊導入以協(xié)助處理 AJAX DSON 請求。
模塊:file.js
function getJSON(url, callback){ let xhr = new XMLHttpRequest(); xhr.onload = function () { callback(this.responseText) }; xhr.open(‘GET’, url, true); xhr.send(); } export function getUserFulContents(url, callback){ getJSON(url, data => callback(JSON.parse(data))); }
主程序:main.js
import { getUserFulContents } from “/modules/file.js”; getUserFulContents(‘http://www.example.com”, data => { doSomethingUseful(data); } )
【