搜尋
首頁web前端前端問答es6中用什麼導入資源

es6中用什麼導入資源

Apr 19, 2022 pm 07:48 PM
es6

在es6中,可使用import語句或import()來匯入資源。 import指令用於導入指定模組(資源檔案),語法“import {成員} from '模組標識符'”;import()用於導入檔案或模組,語法“import(資源位置)”。

es6中用什麼導入資源

本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

es6中可以進行模組化開發,在ES6模組化規格中定義:

  • #每個js檔案都是一個獨立的模組

  • #匯入其它模組成員使用import關鍵字

  • 向外共用模組成員使用expost關鍵字

export指令

export

模組功能主要由兩個指令構成:exportimportexport指令用來規定模組的對外接口,import指令用來匯入其他模組提供的功能。

一個模組就是一個獨立的檔案。該文件內部所有的變量,外部無法取得。如果你希望外部能夠讀取模組內部的某個變量,就必須使用export關鍵字輸出該變數。
例如:

//test1.js
export var firstName = 'mike'
export var lastName = 'Jack'

上面程式碼是test1.js文件,保存了使用者資訊。 ES6將其視為一個模組,裡面用export指令對外部輸出了三個變數。
export的寫法,除了像上面哪樣,還有另一種寫法:

//test1.js
var firstName = 'mike'
var lastName = 'Jack'
export {firstName, lastName}

export命令除了輸出變量,還可以輸出函數或類

export function add(x, y){
    return x + y
}

export指令可以出現在模組得任意位置,只要在模組頂層就可以。如果處於區塊級作用域內,就會報錯,import指令也是如此

#as

通常情況下, export輸出的變數就是本來的名字,但是可以使用as關鍵字重新命名

function v1() { ... }
function v2() { ... }

export {
  v1 as streamV1,
  v2 as streamV2,
  v2 as streamLatestVersion
};

import指令

使用export指令定義了模組的對外介面以後,其他js檔案就可以透過import指令來載入這個模組

import {firstName, lastName} from './test1.js'
console.log(firstName,lastName)

如果想為輸入的變數重新取一個名字,import指令要使用as,將輸入的變數重新命名。

import {lastName as suName} from './test1.js'

import指令輸入的變數都是唯讀的,因為它的本質是輸入介面。也就是說,不允許在載入模組的腳本裡面改寫介面。

import {a} from './xxx'
a = {}   //报错

import後面的from指定模組檔案的位置,可以是相對路徑,也可以是絕對路徑,.js後綴可以省去。如果只是模組名,不帶有路徑,那麼必須有設定文件,告訴JavaScript引擎該模組的位置

模組的整體載入

除了指定載入某個輸出值,還可以使用整體加載,即用星號(*)指定一個對象,所有輸出值都加載在這個對像上面。

下面是一個circle.js文件,它輸出兩個方法areacircumference

// circle.js
export function area(radius) {
  return Math.PI * radius * radius;
}

export function circumference(radius) {
  return 2 * Math.PI * radius;
}

現在,載入這個模組。

// main.js

import { area, circumference } from './circle';
console.log('圆面积:' + area(4));
console.log('圆周长:' + circumference(14));

上面寫法是逐一指定要載入的方法,整體載入的寫法如下。

import * as circle from './circle';
console.log('圆面积:' + circle.area(4));
console.log('圆周长:' + circle.circumference(14));

注意,模組整體載入所在的那個物件(上例是circle),應該是可以靜態分析的,所以不允許執行時間改變。下面的寫法都是不允許的。

import * as circle from './circle';

// 下面两行都是不允许的
circle.foo = 'hello';
circle.area = function () {};

export default 指令

export default 用來為模組指定預設輸出

//export-default.js
export default function(){
    console.log('foo')
}

其他模組載入該模組時,import指令可以為該匿名函數指定任意名字

import cus from './export-default.js'

export default指令用在非匿名函數前,也是可以的,但是在模組外部該函式名稱是無效的,載入的時候,視為匿名函數加載,本質上,export default就是輸出一個叫做default的變數或方法,然後系統允許你為他取任意名字

export default function test(){
    console.log('test')
}

比較正常輸出和預設輸出

//第一组
export function arc(){
    //...
} //输出

import {arc} from 'arc'  //输入

//第二组
export default arc2(){
    //...
}  //输出
import arc2 from 'arc2'   //输入

總結:export對應的import語句需要使用大括號,export default 對應的import語句不需要使用大括號。 export default指令用來指定模組的預設輸出,顯然,一個模組只能有一個預設輸出,因此export default在同一個模組中只允許使用一次。所以與他對應的import指令後面才不用加大括號

export 與import的複合寫法

如果在一個模組中,先輸入後輸出同一個模組,import語句可以與export語句寫在一起

export {foo, bar} from 'my_module'
//可以简单理解为
import {foo, bar} from 'my_module'
export {foo, bar}

上面代码中,exportimport语句可以结合在一起,写成一行。但需要注意的是,写成一行以后,foobar实际上并没有导入当前模块,只是相当于对外转发了这两个接口,导致当前模块不能直接使用foobar.

import()函数

import(specifier)

上面的代码中,import函数的参数specifier,指定所要加载的模块的位置。。import命令能够接受什么参数,import()函数就能接受什么参数,两者区别主要是后者为动态加载。

import()返回一个 Promise 对象。下面是一个例子。

const main = document.querySelector('main');
import(`./section-modules/${someVariable}.js`)
  .then(module => {
    module.loadPageInto(main);
  })
  .catch(err => {
    main.textContent = err.message;
  });

import()函数可以用在任何地方,不仅仅是模块,非模块的脚本也可以使用。它是运行时执行,也就是说,什么时候运行到这一句,就会加载指定的模块。另外,import()函数与所加载的模块没有静态连接关系,这点也是与import语句不相同。import()类似于 Node 的require方法,区别主要是前者是异步加载,后者是同步加载。

【相关推荐:javascript视频教程web前端

以上是es6中用什麼導入資源的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
React的生態系統的大小:瀏覽複雜的景觀React的生態系統的大小:瀏覽複雜的景觀Apr 28, 2025 am 12:21 AM

TonavigateReact'scomplexecosystemeffectively,understandthetoolsandlibraries,recognizetheirstrengthsandweaknesses,andintegratethemtoenhancedevelopment.StartwithcoreReactconceptsanduseState,thengraduallyintroducemorecomplexsolutionslikeReduxorMobXasnee

React如何使用密鑰有效地識別列表項目React如何使用密鑰有效地識別列表項目Apr 28, 2025 am 12:20 AM

RectuseSkeyStoeficelyListifyListIdifyListItemsbyProvidistableIdentityToeachelement.1)keysallowReaeActTotRackChangEsInListSwithouterSwithoutreThoutreTheenteringTheEntirelist.2)selectuniqueandstablekeys,避免使用

在React中調試與密鑰相關的問題:識別和解決問題在React中調試與密鑰相關的問題:識別和解決問題Apr 28, 2025 am 12:17 AM

KeysinrectarecrucialforOptimizingTherEnderingProcessandManagingDynamicListSefectefection.tospotaTandFixKey與依賴的人:1)adduniqueKeykeystoliquekeystolistItemStoAvoidWarningSwarningSwarningSwarningSperformance和2)useuniqueIdentifiersIdentifiersIdentifiersIdentifiersFromdatainSteAtofIndicessuessuessessemessuessessemessemessemesseysemessekeys,3)

React的單向數據綁定:確保可預測的數據流React的單向數據綁定:確保可預測的數據流Apr 28, 2025 am 12:05 AM

React的單向數據綁定確保數據從父組件流向子組件。 1)數據流向單一,父組件狀態變化可傳遞給子組件,但子組件不能直接影響父組件狀態。 2)這種方法提高了數據流的可預測性,簡化了調試和測試。 3)通過使用受控組件和上下文,可以在保持單向數據流的同時處理用戶交互和組件間通信。

在React組件中選擇和管理密鑰的最佳實踐在React組件中選擇和管理密鑰的最佳實踐Apr 28, 2025 am 12:01 AM

KeysinReactarecrucialforefficientDOMupdatesandreconciliation.1)Choosestable,unique,andmeaningfulkeys,likeitemIDs.2)Fornestedlists,useuniquekeysateachlevel.3)Avoidusingarrayindicesorgeneratingkeysdynamicallytopreventperformanceissues.

在React應用中使用USESTATE()優化性能在React應用中使用USESTATE()優化性能Apr 27, 2025 am 12:22 AM

USESTATE()ISCICIALFOROPTIMINECREACTAPPPERFORMACTACEUTOPACTONCACTONRE REDERSANDUPDATES.TOOPTIMIZE:1)USEUSECALLBACKTOMEMOEMOEIZEFUNCTIONSANDPREVENTUNNNNNNNNNNNNNNNNENESMARYRERER.2)limemememememoforcachingExpensiveComputations.3)

使用上下文和usestate()在組件之間共享狀態使用上下文和usestate()在組件之間共享狀態Apr 27, 2025 am 12:19 AM

使用Context和useState共享狀態是因為它們可以簡化大型React應用中的狀態管理。 1)減少propdrilling,2)代碼更清晰,3)更易管理全局狀態。但要注意性能開銷和調試複雜性,合理使用Context和優化技術可以提升應用的效率和可維護性。

不正確鍵對React虛擬DOM更新的影響不正確鍵對React虛擬DOM更新的影響Apr 27, 2025 am 12:19 AM

使用不正確的鍵會導致React應用程序中的性能問題和意外行為。 1)鍵是列表項的唯一標識符,幫助React高效地更新虛擬DOM。 2)使用相同或不唯一的鍵會導致列表項重新排序和組件狀態丟失。 3)使用穩定且唯一的標識符作為鍵可以優化性能,避免全量重渲染。 4)使用工具如ESLint來驗證鍵的正確性。正確使用鍵可以確保React應用的高效和可靠性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。