1.命名匯出命名匯出就是明確匯出的變數名稱和值。
在src目錄下建立math.js,index.js檔案。
math.js內容:
//case 1: export後面跟變數輸出宣告語句
export var pi = 3.14;
//case 2: export後面直接跟變數定義語句
export var add = function (x, y)
這表示math.js模組匯出變數pi和add, 用nodejs的模組格式可表示為:
var pi = 3.14;
var add = function (x, y)
module.exports.pi =pi;
module.exports.add =add;
index.js內容:
import * as math from "./math.js"; //
import是匯入模組,後面會說。
console.log(math.pi);
console.log(math.add(1, 2));
然後執行下面的命令進行babel轉換:
npm run build
如果沒有報錯的化,那module目錄下應該生成了dist子目錄,並且生成了index.js和math.js檔案(先不要在意檔案的內容)。
然後在執行命令:
node dist/index.js
看看輸出結果是否ok:
3.14
3如果匯出多個變數,可以採用簡寫格式(調整math.js內容):
var pi = 3.14;
var add = function
(x, y)
export ;
//簡寫格式,統一列出需要輸出的變數
重複上述步驟中執行npm和node命令檢視看輸出結果是否ok。
並且該簡寫格式還可以對輸出的變數重新命名,之前的都是模組裡宣告的變數名作為模組匯出的變數的名:
再次修改math.js
var pi = 3.14;
var add = function
(x, y)
export ;
//把輸出變數add重新命名為add(注意不用雙引號)
通過關鍵字as把輸出變數add重新命名為add,注意add是個字面量,不是字串不需要引號。同樣在匯入math.js模組的index.js模組也要修改下:
import * as math from "./math.js";
console.log(math.pi);
console.log(math.add(1, 2)); //
add方法名稱改動了。
命名匯出需要同時制定匯出的變數名稱和變數值,所以export語句後面跟的一般是變數輸出宣告語句塊,變數定義語句,不可以是表示式,因為表示式只有值,沒有名字。
2. 預設匯出
通過關鍵字default修飾export可以指定乙個模組的預設輸出變數值(在匯入模組的預設輸出時,不需要指定匯出變數名稱,這個後面再說)。
//case 3 常量
export default 25;
//case 4 變數
var pi = 3.14;
export
default
pi //
case 5 函式
export default
function
add2( x, y)
注意 乙個模組最多只能有乙個預設匯出;
預設輸出可以視為名字是"default"的模組輸出變數;
預設匯出後面可以是表示式,因為它只需要值;
export語句必須在模組作用域的最頂層,即export不可以出現在任意花括號內,如函式語句裡,子**塊裡(控制語句)。
四、模組匯入
通過import語句匯入外部模組。對應export語句的兩種匯出方式(命名模組匯出和預設模組匯出),import也分別存在兩種不同的模組匯入語法格式。
1. 匯入模組的命名輸出變數
修改index.js:
import from './math.js';
console.log(pi);
console.log(add(1, 2));
表示:匯入math.js模組裡輸出的變數pi, add,注意名稱必須要和math.js模組的輸出變數一一對應,否則就是undefined。
重新執行npm和node命令看看輸出是否ok。
該格式還支援對匯入的變數重新命名:
import from './math.js';
如果匯入乙個模組所有命名輸出,可採用萬用字元"*:
修改index.js:
import * as math from './math.js'; // 此時必須通過as指定個別名
console.log(math.pi);
console.log(math.add(1, 2));
表示匯入模組math.js所有命名輸出變數,並通過math變數引用。
2. 匯入模組的預設輸出
修改math.js:
var pi = 3.14;
var add = function (x, y)
export ; // 簡寫格式,統一列出需要輸出的變數
export default function say()
修改index.js:
import say from "./math.js"; //say();
表示匯入模組math.js的預設輸出,此時不可以用as重新命名哦(因為名字可以任意定義)。
執行命令檢視輸出是否ok。
匯入模組預設輸出的名字可以任意命名。
import say2 from "./math.js"; //
say2();
如果同時匯入模組的命名輸出和預設輸出,可採用格式:
import say, * as math from './math.js';
//or
import say, from './math.js';
有個限制條件預設匯入一定放在命名匯入前面,即不能寫成:
import * as math, say from './math.js';
//or
import , say from './math.js';
同樣import語句也必須在模組的最頂層作用域裡,即import不可以出現在任意花括號內,如函式語句裡,子**塊裡(控制語句)。
3. 只匯入
如果只匯入乙個模組,但不引用模組的輸出變數,可以簡寫為:
import './math.js'此時只會出發模組math.js的執行。
五、修改匯入/匯出的變數值
1. 修改匯入的變數值
模組可以匯出任何型別變數(引用變數和值變數),如果在模組index.js裡修改了模組math.js匯出的引用變數或者值變數,那會影響模組math.js裡的值麼?
修改math.js:
var pi = 3.14;
var person =
export ;
export
default
function
say() , pi:$`)
}修改index.js:
import say, * as math from './math.js';
say();
//修改前
math.person = 12;
math.pi = 0;
say();
//修改後
執行npm和node檢視輸出:
clipboard.png
從輸出可以看出雖然我們在index.js模組裡修改了math.js模組的匯出變數,但並不會影響math.js裡的值。
2. 修改匯出的變數值
反過來想想,如果模組math.js修改了其匯出的引用變數或者值變數在,那會影響模組index.js裡的取值麼?
修改math.js:
var count = 0;
var increase = function
() var person =
var changename = function
() export ;
修改index.js:
import say, * as math from './math.js';
console.log(`person:$, count:$`);
//修改前
math.increase();
math.changename();
console.log(`person:$, count:$`);
//修改後
輸出:clipboard.png
從輸出可以看出只要math.js修改了匯出值就會影響index.js的取值。
es6模組匯入匯出
如何在 webpack 構建的專案中,使用 vue 進行開發 複習 在普通網頁中如何使用vue 1.使用 script 標籤 引入 vue 的包 3.通過 new vue 得到乙個 vm 的例項 在webpack 中嘗試使用 vue 注意 在 webpack 中,使用 import vue from...
ES6 函式拓展 類 匯入匯出
上次介紹了es6的最基本的一些點,今天稍微深入一點,談談函式和類 函式拓展 我們知道,之前es5的時候 函式的預設值問題,要寫 判斷是否為空去實現 而現在 es6解決了這一問題 說實話 越來越發現了es6的強大 箭頭函式 上面大家也看到了 按照順序來說 算是超綱啦 不過 帶著疑問去學習是件好事呀 有...
ES6中如何匯入與匯出模組
匯出 export 可以用export關鍵字將內容給其他模組,在最簡單的例子中,可以將export放在任何變數 函式或類宣告的前面,以將它們從模組中匯出。usemodule.js如下 兩種匯出形式的區別 1 預設形式 不用加任何修飾 2 自定義 匯出的內容需要加 匯出變數 export var st...