摘要:如果我們想要包含得多帶帶導入和導出二和的注意點可能的錯誤在沒有的情況下,不能匿名函數前面我們講到可以在定義一個函數的時候就,但是這個函數不能是匿名函數,除非這個函數作為導出。
一: export和import的正常用法
1:export變量
// ./module/example.js export var firstName = "roger"; export const lastName = "waters"; export let dob = 1944; // index.js import {firstName, lastName, dob} from "./module/example.js";
2:export方法
// ./module/example.js //定義方法的時候,就可以export export function sum(a, b) { return a + b; } function multiply(a, b) { return a * b; } //也可以先定義,再export export { multiply };
在別的文件里面import上面2個方法,是一樣的
//./index.js import {sum, multiply} from "./module/example.js";
3:export重命名
有時候你也許不想用一個變量,方法,類的原本的名字,而是想換一個別的名字。那么你可以使用 as
,而且在export和import的時候都可以,例如:
// ./module/example.js function sum(a, b) { return a + b; } export {sum as add}; //./index.js import {add} from "./module/example.js";
4: import重命名
在第三點里面,我們看到了可以在export的時候重命名變量。同樣的效果,也可以在import的時候做,依然是用as:
// ./module/example.js function sum(a, b) { return a + b; } export {sum}; //./index.js import {sum as add} from "./module/example.js"; //此時在index.js里面可以被使用的方法是add(),而不是sum()
5:export default
我們可以給一個js module制定默認值,也就是這里的default。導出一個default和前面我們講到的導出一個變量一樣也是有三種方式:
1. 在定義的時候export
//./module/example.js export default function(a, b) { return a + b; } //./index.js import sum from "./module/example.js";
export的可以是一個匿名函數,在導入的時候,用任意合理的名字代表默認導出,但是注意與非default變量的區別在于,這里沒有花括號({})
2. 先定義再export
//./module/example.js function sum(a, b) { return a + b; } export default sum; //./index.js import sum from "./module/example.js";
在import的時候,依然可以是任意的合理的變量名,不一定得是sum。
3. 使用 as
//./module/example.js function sum(a, b) { return a + b; } export {sum as default} //./index.js import sum from "./module/example.js";
在import的時候,依然可以是任意的合理的變量名,不一定得是sum。
6:export default和其他變量一起
一個module可以export default的同時export其他變量,語法與只export其中一樣沒有區別;只是在import的時候,default一定要在非default前:
//./module/example.js export var firstName = "roger"; export const lastName = "waters"; export let dob = 1944; function sum(a, b) { return a + b; } export {sum as default} // ./index.js //語法正確 import sum, {firstName, lastName, dob} from "./module/example.js"; //error: 語法錯誤 import {firstName, lastName, dob}, sum from "./module/example.js";
7: import *
當我們想把一個module所有export的東西都一次性import的時候,就可以使用 import * as
// ./module/example.js export var firstName = "roger"; export const lastName = "waters"; export let dob = 1944; function sum(a, b) { return a + b; } export {sum as default} //./index.js import * as example from "./module/example.js"; console.log(example.firstName); console.log(example.lastName); console.log(example.dob); example.default(1, 2);
這里特別注意的是,這里的example.default就是我們export的default變量。
8:export import
我們可以把從別的module導入的變量作為本module的導出。例如下面的例子./mian.js從./idnex.js導入變量firstName, 而firstName原本是./index.js從./module/example.js導入的:
//./module/example.js export var firstName = "roger"; export const lastName = "waters"; export let dob = 1944; function sum(a, b) { return a + b; } export {sum as default} //./index.js import {firstName} from "./module/example.js"; export {firstName}; //./main.js import {firstName} from "./index.js"
在./index.js文件里的2行代碼等同于下面的一行:
export {firstName} from "./module/example";
這個時候也可以使用 as:
export {firstName as nickName} from "./module/example";
也可以使用 *
export * from "./module/example";
export *的時候,是不包含default的。如果我們想要包含default,得多帶帶導入和導出default:
//./module/example.js export var firstName = "roger"; export const lastName = "waters"; export let dob = 1944; function sum(a, b) { return a + b; } export {sum as default} //./index.js export * from "./module/example"; import sum from "./module/example"; export {sum}; //./main.js import {firstName, lastName, dob} from "./index.js" import {sum} from "./index"
二:export和import的注意點可能的錯誤
1:在沒有default的情況下,不能export匿名函數
前面我們講到可以在定義一個函數的時候就export,但是這個函數不能是匿名函數,除非這個函數作為default導出。
2:export和import都只能用在module的最高層scope
不能在if..else,方法里,或者任何需要在runtime的時候才能確定下來的情況下,使用export和import。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/103796.html
摘要:背景現在最主流的模塊機制是和。模塊模塊導出的變量始終指向的是模塊內部的變量,使用時可以獲得此變量的最新值。我們叫導出綁定。但是在看對默認導出代碼的轉換時,發現實現并不使用。所以改了并不等于改了,自然的東西沒有變化。 背景 JavaScript 現在最主流的模塊機制是 commonjs 和 ES6 module。兩者不單是語法上有所區別,在加載的時候也有所不同,譬如 commonjs 是...
摘要:和必須始終顯示在其各自用法的頂級范圍中。也就是說不可以在條件中放置或它們必須放在所有塊和函數之外。不幸的是,它存在一些缺點,并正式地不鼓勵這樣做。用戶可以另外手動將和列為命名導入,如果他們想要的話。 ES6提供了兩個關鍵字import導入和export導出,語法上有些差別。!important: import和export必須,始終顯示在,其各自用法的,頂級范圍中。也就是說不可以在if...
摘要:前言在理想的狀態下,你可以在深入了解之前了解和開發的所有知識。繼承另一個類的類,通常稱為類或類,而正在擴展的類稱為類或類。這種類型的組件稱為無狀態功能組件。在你有足夠的信心構建用戶界面之后,最好學習。 原文地址:JavaScript Basics Before You Learn React 原文作者: Nathan Sebhastian 寫在前面 為了不浪費大家的寶貴時間,在開...
閱讀 1357·2021-10-09 09:44
閱讀 1440·2021-09-28 09:36
閱讀 15927·2021-09-22 15:55
閱讀 1239·2021-09-22 15:45
閱讀 2199·2021-09-02 09:48
閱讀 2783·2019-08-29 17:19
閱讀 2296·2019-08-29 10:54
閱讀 906·2019-08-23 18:40