如何應用Javascript Exports & Imports (Modules)

6 月 4, 2018 | | 0 comments

Exports & Imports (Modules)

在撰寫 API 過程中你會將很多分支檔案拆開寫,一方面是減少過長的程式碼另一方面是日後好管理。你必須要先匯出分支檔(export)再經由主檔案中被引入(import),以下有個簡單例子,第一個分支檔 person.js 將函式 person 匯出,第二支分支檔將函式 clean 和變數 bastData 匯出 (另一種匯出寫法) ,最後再主檔案 index.js 引入被呼叫使用。

分支檔 person.js、utility.js

// person.js 分支檔1
const person ={
  name:'Andy'
} 

export default person;
// utility.js 分支檔2
export const clean = () => {}
export const bastData = 10;

主檔 index.js

// index.js
//default export
import person from './person.js';
//named export
import {baseData} from './utility.js';
import {clean} from './utility.js';

//named export (rename)
import {clean as c} from './utility.js';
import * as c from './utility.js';

四種不同寫法

1.export default{ } 集中匯出

分支檔 utility.js

//utility.js

const app1 = () => {
  console.log('app1');
};

const app2 = () => {
  console.log('app2');
};

export default { app1, app2 };

主檔 index.js

//index.js
import app from './utility';

app.app1();
app.app2();

2.單個變數匯出,並ㄧ次引入所有

此寫法可以注意觀察主檔 index.js,使利用萬用字元 * 表示該檔內所有變數引入。

分支檔 utility.js

//utility.js
export const app1 = () => {
  console.log('app1');
};

export const app2 = () => {
  console.log('app2');
};

主檔 index.js

//index.js
import * as app from './utility';

app.app1();
app.app2();

3.單個變數匯出,並分別引入

此寫法在主檔 index.js 引入時在大括號內著名是要引入哪個變數。

分支檔 utility.js

//utility.js
export const app1 = () => {
  console.log('app1');
};

export const app2 = () => {
  console.log('app2');
};

主檔 index.js

//index.js
import { app1 } from './utility';
import { app2 } from './utility';

app1();
app2();

4.單個變數匯出,並分別引入與重新命名

此寫法與第三種相類似差別在於引入進來的變數給予重新命名。

分支檔 utility.js

//utility.js
export const app1 = () => {
  console.log('app1');
};

export const app2 = () => {
  console.log('app2');
};

主檔 index.js

//index.js
import { app1 as App1 } from './utility';
import { app2 as App2 } from './utility';

App1();
App2();

Classes

在物件導向程式設計,類別是一種物件導向電腦程式語言的構造,是建立物件的藍圖,描述了所建立的物件共同的屬性和方法。

一個 class 是由屬性 (Property) 和方法 (Method) 所組成

class Person {
  constructor() {
    this.name = 'Andy';
  }
  call=() => {
    console.log(this.name);
  }
}

const myPerson = new Person();

myPerson.call();

繼承寫法

class Human {
  constructor() {
    this.gender = 'male';
  }
}

class Person extends Human {
  constructor() {
    super();
    this.name = 'Andy';
  }
  call=() => {
    console.log(this.name);
    console.log(this.gender);
  }
}

const myPerson = new Person();

myPerson.call();

由於上述都是 ES6 寫法,可以利用線上編譯器來編譯程式碼。

https://jsbin.com/sobapehifu/edit?html,js,console,output

文章分享來源:https://andy6804tw.github.io/2017/12/21/js-tutorial-part4/