最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ES6 exports與import導(dǎo)出模塊使用基礎(chǔ)示例

 更新時(shí)間:2023年06月29日 09:54:50   作者:時(shí)傾  
這篇文章主要為大家介紹了ES6 exports與import導(dǎo)出模塊使用基礎(chǔ)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

在創(chuàng)建JavaScript模塊時(shí),export 用于從模塊中導(dǎo)出實(shí)時(shí)綁定的函數(shù)、對(duì)象或原始值,以便其他程序可以通過 import使用它們。

被導(dǎo)出的綁定值依然可以在本地進(jìn)行修改。

在使用import 進(jìn)行導(dǎo)入時(shí),這些綁定值只能被導(dǎo)入模塊所讀取,但在 export 導(dǎo)出模塊中對(duì)這些綁定值進(jìn)行修改,所修改的值也會(huì)實(shí)時(shí)地更新。

exports

ES6模塊只支持靜態(tài)導(dǎo)出,只可以在模塊的最外層作用域使用export,不可在條件語句與函數(shù)作用域中使用。

Named exports (命名導(dǎo)出)

這種方式主要用于導(dǎo)出多個(gè)函數(shù)或者變量, 明確知道導(dǎo)出的變量名稱。

使用:只需要在變量或函數(shù)前面加 export 關(guān)鍵字即可。

使用場景:比如 utils、tools、common 之類的工具類函數(shù)集,或者全站統(tǒng)一變量等。

export 后面不可以是表達(dá)式,因?yàn)楸磉_(dá)式只有值,沒有名字。

每個(gè)模塊包含任意數(shù)量的導(dǎo)出。

// lib.js
export const sqrt = Math.sqrt;
export function square(x) {
    return x * x;
}
export function diag(x, y) {
    return sqrt(square(x) + square(y));
}
// index.js 使用方式1
import { square, diag } from 'lib';
console.log(square(11)); // 121
// index.js 使用方式2
import * as lib from 'lib';
console.log(lib.square(11)); // 121

簡寫格式,統(tǒng)一列出需要輸出的變量,例如上面的lib.js可以改寫成:

// lib.js
const sqrt = Math.sqrt;
function square(x) {
    return x * x;
}
function add (x, y) {
    return x + y;
}
export { sqrt, square, add };

Default exports (默認(rèn)導(dǎo)出)

這種方式主要用于導(dǎo)出類文件或一個(gè)功能比較單一的函數(shù)文件;
使用:只需要在變量或函數(shù)前面加 export default 關(guān)鍵字即可。

每個(gè)模塊最多只能有一個(gè)默認(rèn)導(dǎo)出;

默認(rèn)導(dǎo)出可以視為名字是default的模塊輸出變量;

默認(rèn)導(dǎo)出后面可以是表達(dá)式,因?yàn)樗恍枰怠?/p>

導(dǎo)出一個(gè)值:

export default 123;

導(dǎo)出一個(gè)函數(shù):

// myFunc.js
export default function () { ... };
// index.js
import myFunc from 'myFunc';
myFunc();

導(dǎo)出一個(gè)類:

// MyClass.js
class MyClass{
  constructor() {}
}
export default MyClass;
// 或者
export { MyClass as default, … };
// index.js
import MyClass from 'MyClass';

export default 與 export 的區(qū)別:

  • 不需要知道導(dǎo)出的具體變量名;
  • 導(dǎo)入【import】時(shí)不需要 { } 包裹;

Combinations exports (混合導(dǎo)出)

混合導(dǎo)出是 Named exports 和 Default exports 組合導(dǎo)出。

混合導(dǎo)出后,默認(rèn)導(dǎo)入一定放在命名導(dǎo)入前面;

// lib.js
export const myValue = '';
export const MY_CONST = '';
export function myFunc() {
  ...
}
export function* myGeneratorFunc() {
  ...
}
export default class MyClass {
  ...
}
// index.js
import MyClass, { myValue, myFunc } from 'lib';

Re-exporting (別名導(dǎo)出)

一般情況下,export 導(dǎo)出的變量名是原文件中的變量名,但也可以用 as 關(guān)鍵字來指定別名。這樣做是為了簡化或者語義化 export 的函數(shù)名。

同一個(gè)變量允許使用不同名字輸出多次

// lib.js
function getName() {
   ...
};
function setName() {
  ...
};
export {
  getName as get,
  getName as getUserName,
  setName as set
}

Module Redirects (中轉(zhuǎn)模塊導(dǎo)出)

為了方便使用模塊導(dǎo)入,在一個(gè)父模塊中“導(dǎo)入-導(dǎo)出”不同模塊。簡單來說:創(chuàng)建單個(gè)模塊,集中多個(gè)模塊的多個(gè)導(dǎo)出。
使用:使用 export from 語法實(shí)現(xiàn);

export * from 'lib'; // 沒有設(shè)置 export default
export * as myFunc2 from 'myFunc'; // 【ES2021】沒有設(shè)置 export default
export { default as function1, function2 } from 'bar.js';

上述例子聯(lián)合使用導(dǎo)入和導(dǎo)出:

import { default as function1, function2 } from 'bar.js';
export { function1, function2 };

盡管此時(shí) export 與 import 等效,但以下語法在語法上無效:

import DefaultExport from 'bar.js'; // 有效的
export DefaultExport from 'bar.js'; // 無效的

正確的做法是重命名這個(gè)導(dǎo)出:

export { default as DefaultExport } from 'bar.js';

Importing

// Named imports
import { foo, bar as b } from './some-module.mjs';
// Namespace import
import * as someModule from './some-module.mjs';
// Default import
import someModule from './some-module.mjs';
// Combinations:
import someModule, * as someModule from './some-module.mjs';
import someModule, { foo, bar as b } from './some-module.mjs';
// Empty import (for modules with side effects)
import './some-module.mjs';

以上就是ES6 exports與import導(dǎo)出模塊使用基礎(chǔ)示例的詳細(xì)內(nèi)容,更多關(guān)于ES6 exports import使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JavaScript延時(shí)效果比較不錯(cuò)的

    JavaScript延時(shí)效果比較不錯(cuò)的

    JavaScript延時(shí)效果比較不錯(cuò)的...
    2007-08-08
  • 實(shí)時(shí)編輯網(wǎng)頁網(wǎng)頁文字實(shí)時(shí)編輯,如同TEXTBOX一般

    實(shí)時(shí)編輯網(wǎng)頁網(wǎng)頁文字實(shí)時(shí)編輯,如同TEXTBOX一般

    實(shí)時(shí)編輯網(wǎng)頁網(wǎng)頁文字實(shí)時(shí)編輯,如同TEXTBOX一般...
    2007-03-03
  • js實(shí)現(xiàn)自動(dòng)圖片輪播代碼

    js實(shí)現(xiàn)自動(dòng)圖片輪播代碼

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)自動(dòng)輪播的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • JavaScript delete 屬性的使用

    JavaScript delete 屬性的使用

    JavaScript對(duì)象數(shù)據(jù)結(jié)構(gòu)基本形式:{ key : value},其中key:value就為對(duì)象的一個(gè)屬性,key作為屬性名稱,value為屬性值,這值可以是任何JavaScript數(shù)據(jù)類型。
    2009-10-10
  • js實(shí)現(xiàn)一鍵換膚效果

    js實(shí)現(xiàn)一鍵換膚效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)一鍵換膚效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JavaScript 中 Set 和 Map 的示例詳解

    JavaScript 中 Set 和 Map 的示例詳解

    文章介紹了Set和Map兩種數(shù)據(jù)結(jié)構(gòu),Set存儲(chǔ)唯一值且無序,支持快速查找和去重,Map以鍵值對(duì)形式存儲(chǔ),鍵可為任意類型,保持插入順序,適用于復(fù)雜鍵管理和緩存場景,兩者在存儲(chǔ)內(nèi)容、鍵類型及應(yīng)用場景上有明顯區(qū)別,感興趣的朋友跟隨小編一起看看吧
    2025-07-07
  • Js 中debug方式

    Js 中debug方式

    以前在VS2005中以為要斷點(diǎn)debug js 要 用 debug模式并且在相應(yīng)的js中設(shè)置斷點(diǎn) 才可以debug,今天學(xué)了一招,可以在要調(diào)試的js前加一句js命令debugger;
    2010-02-02
  • 微信小程序wepy框架筆記小結(jié)

    微信小程序wepy框架筆記小結(jié)

    這篇文章主要介紹了微信小程序wepy框架筆記小結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • 一文詳解如何初始化Egg.js?項(xiàng)目

    一文詳解如何初始化Egg.js?項(xiàng)目

    egg.js是node.js的一個(gè)web后臺(tái)框架,為我們進(jìn)行web后臺(tái)開發(fā)帶來了太多的便利,這篇文章主要介紹了如何初始化Egg.js?項(xiàng)目的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-08-08
  • 理解 javascript 中的函數(shù)表達(dá)式與函數(shù)聲明

    理解 javascript 中的函數(shù)表達(dá)式與函數(shù)聲明

    這篇文章主要介紹了理解 javascript 中的函數(shù)表達(dá)式與函數(shù)聲明,需要的朋友可以參考下
    2017-07-07

最新評(píng)論

嘉义市| 晋宁县| 仁寿县| 竹溪县| 清流县| 田东县| 乌苏市| 龙江县| 松阳县| 文登市| 博爱县| 揭阳市| 阿坝县| 沿河| 龙岩市| 扶风县| 迁西县| 镇平县| 新干县| 嘉鱼县| 黄冈市| 柏乡县| 基隆市| 莱西市| 绩溪县| 静宁县| 缙云县| 河津市| 宜丰县| 新昌县| 江达县| 定远县| 治多县| 阿鲁科尔沁旗| 长兴县| 宜川县| 德惠市| 乳山市| 榆中县| 米脂县| 永嘉县|