javascript中import和export用法示例總結(jié)
import
import 和 require 的區(qū)別
import 和js的發(fā)展歷史息息相關(guān),歷史上 js沒有模塊(module)體系,無法將一個大程序拆分成互相依賴的小文件,再用簡單的方法拼裝起來。這對開發(fā)大型工程非常不方便。
在 ES6 之前,社區(qū)制定了一些模塊加載方案,最主要的有 CommonJS 和 AMD 兩種。前者用于服務(wù)器,后者用于瀏覽器。ES6 在語言標準的層面上,實現(xiàn)了模塊功能,而且實現(xiàn)得相當簡單,完全可以取代 CommonJS 和 AMD 規(guī)范,成為瀏覽器和服務(wù)器通用的模塊解決方案。也就是我們常見的 require 方法。 比如 `let { stat, exists, readFile } = require('fs');
` 。
ES6 在語言標準的層面上,實現(xiàn)了模塊功能。ES6 模塊不是對象,而是通過export命令顯式指定輸出的代碼,再通過import命令輸入。
import 的幾種用法:
import defaultName from 'modules.js'; import { export } from 'modules'; import { export as ex1 } from 'modules'; import { export1, export2 } from 'modules.js'; import { export1 as ex1, export2 as ex2 } from 'moduls.js'; import defaultName, { expoprt } from 'modules'; import * as moduleName from 'modules.js'; import defaultName, * as moduleName from 'modules'; import 'modules';
import用法解釋
- import后面的from指定模塊文件的位置,可以是相對路徑,也可以是絕對路徑,.js后綴可以省略。如果只是模塊名,不帶有路徑,那么必須有配置文件,告訴 JavaScript 引擎該模塊的位置。某些打包工具可以允許或要求使用擴展名。
- 上面代碼使用的 ==as== 關(guān)鍵字,相當于import 進來的‘值’的別名。
import * from 'xx'
將導(dǎo)入整個模塊的內(nèi)容,而import defaultName 和 import { export1, export2 } 將導(dǎo)入export的某個對象或值
- 最后一種方式
import 'modules'
將運行模塊中的全局代碼,而不導(dǎo)入任何值。 - import的形式需要export的支持,比如
import defaultName from 'module.js
將導(dǎo)出 在modules.js中export default的對象或值。
export
如上,export也是es6的內(nèi)容,和import是一對。
export的幾種用法
export { name1, name2, …, nameN }; export { variable1 as name1, variable2 as name2, …, nameN }; export let name1, name2, …, nameN; // also var export let name1 = …, name2 = …, …, nameN; // also var, const export function FunctionName() {...} export class ClassName {...} export default expression; export default function (…) { … } // also class, function* export default function name1(…) { … } // also class, function* export { name1 as default, … }; export * from …; export { name1, name2, …, nameN } from …; export { import1 as name1, import2 as name2, …, nameN } from …;
export用法解釋
- 命名導(dǎo)出
比如:
<!--module.js--> const ex1 = 'xxx'; const fun = function() {...} export { ex1, fun as demoFun}; export let ex2 = 'demo'; export function multiply(x, y) { return x * y; };
對應(yīng)的import 寫法
<!--main.js--> import { ex1, demoFun, ex2, multiply } from 'module.js';
- 默認導(dǎo)出
export 命名導(dǎo)出需要export 名字和import名字嚴格一致。而export default命令,為模塊指定默認輸出,在import 的時候可以隨意命名名字。一個模塊只能有一個默認輸出,也就是說 export default 一個模塊只能用一次。
用法:
// a.js 輸出一個默認函數(shù) export default function add(x, y) { return x + y; } import anyName from 'a.js'; // b.js 輸出一個默認變量 let name = 'b.js'; export default name; import anyName from 'b.js' // c.js 輸出一個類 export default class { ...} import anyClass from 'c.js'; // d.js 輸出一個值 export default 1; import value from 'd.js'
- export 和 import 混合使用(模塊重定向)
也就是在一個模塊之中,先輸入后輸出同一個模塊。比如:
如:
<!--命名導(dǎo)出 引入的命名導(dǎo)出--> export { foo, bar } from 'my_module'; // 等價為,值得注意的是 在該模塊中不能直接使用 foo 和 bar。 import { foo, bar } from 'my_module'; export { foo, bar }; export * from './other-module'; // 導(dǎo)出所有方法,但注意此種方法不會到導(dǎo)出module.js中的默認導(dǎo)出變量。 // 導(dǎo)出 默認導(dǎo)出用下面寫法 export {default} from './other-module';
參考
阮一峰 Module的語法
MDN import 命令
MDN export 語法
到此這篇關(guān)于javascript中import和export用法總結(jié)的文章就介紹到這了,更多相關(guān)js import和export用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js控制文本框只能輸入中文、英文、數(shù)字與指定特殊符號的實現(xiàn)代碼
下面小編就為大家?guī)硪黄猨s控制文本框只能輸入中文、英文、數(shù)字與指定特殊符號的實現(xiàn)代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09JavaScript增加數(shù)組中指定元素的5種方法總結(jié)
在JS中數(shù)組方法是非常重要且常用的的方法,在此整理總結(jié)一番,下面這篇文章主要給大家介紹了關(guān)于JavaScript增加數(shù)組中指定元素的5種方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-02-02淺析如何在Bash中調(diào)用Node運行JS文件進行數(shù)據(jù)通信
這篇文章主要來和大家探討在 Bash 中調(diào)用 Node 運行 JS 文件時如何進行數(shù)據(jù)通信,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03bootstrap-treeview自定義雙擊事件實現(xiàn)方法
這篇文章主要介紹了bootstrap-treeview自定義事件雙擊事件實現(xiàn)方法,需要的朋友可以參考下2016-01-01