JavaScript module導出和導入的介紹(詳解)
這篇文章帶給大家的內容是關於JavaScript module匯出和導入的介紹(詳解),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
最近看了些Vue框架寫的程序,發現自己的前端知識還停留在幾年以前,發現現在Javascript程式裡有各種各樣的對module的導入和到處,導入乍一看跟python的語法挺像的無非就是把from和import這兩個關鍵字的使用顛倒了一下順序。仔細看下來還是和python挺不一樣的import模組的前提是模組有導出,而且還分預設導出和命名導出,有些麻煩。所以今天這篇文章就把所有的export形式和對應的import使用匯總一下。
ES6在語言標準的層面上,實現了模組功能,成為瀏覽器和伺服器通用的模組解決方案,完全可以取代CommonJS 和AMD 規範,基本特點如下:
每一個模組只載入一次, 每一個JS只執行一次, 如果下次再去載入同目錄下同文件,直接從記憶體中讀取;
每一個模組內宣告的變數都是局部變量,不會污染全域作用域;
模組內部的變數或函數可以透過export導出;
#一個模組可以導入別的模組
2.模組功能主要由兩個指令構成:export和import。 export指令用於規定模組的對外接口,import指令用於輸入其他模組提供的功能;
3.一個模組就是一個獨立的文件,該文件內部的所有變量,外部無法取得。如果你希望外部能夠讀取模組內部的某個變量,就必須使用export關鍵字輸出該變數;
var year = '2018'; var month = 'Febuary'; export {year, month};
export 導出模組
export語法聲明用於導出函數、物件、指定檔案(或模組)的原始值。有兩種模組導出方式:命名式導出(名稱導出)和預設導出(定義式導出),命名式導出每個模組可以有多個,而預設導出每個模組僅一個。
命名式導出
模組可以透過export前綴關鍵字聲明導出對象,導出對象可以是多個。這些導出物件用名稱區分,稱為命名式導出
export { func }; // 导出一个已定义的函数func export const foo = Math.sqrt(100); // 导出一个常量
我們可以使用*和from關鍵字來實現的模組的繼承:
export * from 'base_module';
模組導出時,可以指定模組的導出成員。導出成員可以認為是類別中的公有成員,而非導出成員可以認為是類別中的私有成員:
var name = 'Kevin的居酒屋'; var domain = 'http://coffee.toast.com'; export {name, domain}; // 相当于导出{name:name,domain:domain}
模組導出時,我們可以使用as關鍵字對導出成員進行重新命名,上面的導出可以這樣寫:
export {name as siteName, domain}
注意一下語法錯誤:
export 1; var a = 100; export a;
export在導出介面的時候,必須與模組內部的變數有一個對應的關係。直接導出1沒有任何意義,也不可能在import的時候有一個變數與之對應export a
雖然看上去成立,但是a的值是一個數字,根本無法完成解構,因此必須寫成export {a}
的形式。即使a被賦值為一個函數,也是不建議使用上面的形式導出的因為大部分風格都建議,模組中最好在末尾用一個export導出所有的接口,就像上面那些例子一樣。
預設導出
預設導出也被稱為做定義式導出。命名式匯出可以匯出多個值,但在import引用時,也要使用相同的名稱來引用對應的值。預設導出只有導出一個單一值,這個輸出可以是一個函數、類別或其它類型的值,這樣在模組import導入時也會更 容易引用。
export default function() {}; // 导出一个函数 export default class(){}; // 导出一个类
預設導出可以理解為另一種形式的命名導出,預設導出可以認為是使用了default名稱的命名導出。
下面兩種匯出方式是等價的:
const D = 123; export default D; export { D as default };
使用名稱匯出一個模組時:
// "my-module.js" 模块 function cube(x) { return x * x * x; } const foo = Math.PI + Math.SQRT2; export { cube, foo };
在另一個模組(js檔案)中,我們可以像下面這樣引用:
import { cube, foo } from 'my-module'; console.log(cube(3)); console.log(foo);
使用預設導出一個模組時:
// "my-module.js"模块 export default function (x) { return x * x * x; }
在另一個模組中,我們可以像下面這樣引用,相對名稱導出來說使用更為簡單:
import cube from 'my-module'; console.log(cube(3)); // 27
import匯入模組
import語法宣告用於從已匯出的模組、腳本匯入函數、物件、指定檔案(或模組)的原始值。 import模組導入與export模組導出功能相對應,也存在兩種模組導入方式:命名式導入(名稱導入)和預設導入(定義式導入)。
注意事項: import必須放在檔案的最開始,且前面不允許有其他邏輯程式碼,這和其他所有程式語言的匯入風格一致。
命名導入
我們可以透過指定名稱將導入成員插入到當作用域中。可以匯入單一成員或多個成員:
注意,花括號裡面的變數與export後面的變數一一對應
#import {myMember} from "my-module"; import {foo, bar} from "my-module";
通过*符号,我们可以导入模块中的全部属性和方法。当导入模块全部导出内容时,就是将导出模块(’my-module.js’)所有的导出绑定内容,插入到当前模块(’myModule’)的作用域中:
import * as myModule from "my-module";
默认导入
在模块导出时,可能会存在默认导出。同样的,在导入时可以使用import指令导入这些默认值。直接导入默认值:
import defaultName from "my-module"; import myDefault, {foo, bar} from "my-module"; // 指定成员导入和默认导入
default关键字
// my-module.js export default function() {} // 等效于: function func() {}; export {func as default};
在import的时候,可以这样用:
import a from './my-module'; // 等效于,或者说就是下面这种写法的简写 import {default as a} from './my-module';
这个语法糖的好处就是import的时候,可以省去{}。
简单的说,如果import的时候,你发现某个变量没有花括号括起来(没有*号),那么你在脑海中应该把它还原成有花括号的{default as ...}语法,所以import $,{each,map} from 'jquery';import后面第一个$是{default as $}的替代写法。
以上是JavaScript module導出和導入的介紹(詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務
