關於 ES6 的 import 與 export 的思考

liangtongzhuo發表於2017-12-14

前言

模組劃分,為了解耦,所以才出了這些規定。 我在學習這些模組化的時候,思考到如果你的程式碼規範,專案複雜度不高。完全不用這些語法,並且你可以自由的定義全域性變數,非常的自由高效快速。 在 Node.js 上就有模組化,我另外一篇文章具體分析 CommonJS 模組底層如何實現

憂慮

__1.現在我還沒有體會到把一個檔案裡的程式碼寫到不可維護的程度,就要學習模組劃分。 2.這樣其實有點拔苗助長,另外 ES6 module 沒有達到我心目中的模組劃分極致簡約語法 3.模組化的出現是為了妥協,向大型專案妥協,向多人開發妥協。 4.現在的專案越來越大,新語法新規定越來越多。這無疑加重了我們的學習時間。程式設計師的主要目的不是為了技術而學習,是為了創造好的產品專案才去學習的。最終我們的目的是創造好的專案,進而改變世界 。(不排除有程式設計師單純的熱愛技術與編碼藝術) __

__我心目中的 import 與 export __

const a = import('路徑');
export = a;
複製程式碼

是的就這兩句話。

總結現在 ES6 的 module 語法規範

匯出,匯入

export const animal = {
  bird: 'bird',
  pig: 'pig'
}
import {bird as duck, pig} from 'animal'; //匯出修改名字
複製程式碼

變數提升

console.log(pig); 
import {bird as duck, pig} from 'animal';
複製程式碼

靜態執行

import { 'p' + 'ig' } from 'animal';//報錯
複製程式碼
if (x === 1) {
  import { pig } from 'animal';//報錯
}
複製程式碼

整體匯入

import * as animal from 'animal';
//animal.bird;
//animal.pig;
複製程式碼

default

export default {
  bird: 'bird',
  pig: 'pig'
}
import xxx from 'animal';
複製程式碼

輸入輸出結合

export * from 'animal'; //這樣的語法有必要存在嗎?也許有少許場景把
export {bird as duck, pig} from 'animal';
複製程式碼

相關文章