import和require都是被模塊化使用node
1. a. require是CommonJs的語法(AMD規範引入方式),CommonJs的模塊是對象。es6
b. import是es6的一個語法標準(瀏覽器不支持,本質是使用node中的babel將es6轉碼爲es5再執行,import會被轉碼爲 require),es6模塊不是對象瀏覽器
2. a. require是運行時加載整個模塊(即模塊中全部方法),生成一個對象,再從對象上讀取它的方法(只有運行時才能獲得這 個對象,不能在編譯時作到靜態化),理論上能夠用在代碼的任何地方babel
b. import是編譯時調用,肯定模塊的依賴關係,輸入變量(es6模塊不是對象,而是經過export命令指定輸出代碼,再經過 import輸入,只加載import中導的方法,其餘方法不加載),import具備提高效果,會提高到模塊的頭部(編譯時執行)模塊化
export和import能夠位於模塊中的任何位置,可是必須是在模塊頂層,若是在其餘做用域內,會報錯函數
es6這樣的設計能夠提升編譯器效率,但無法實現運行時加載ui
3. a. require是賦值過程,把require的結果(對象,數字,函數等),默認是export的一個對象,賦給某個變量(複製或淺拷貝)es5
b. import是解構過程(須要誰,加載誰)設計
寫法:對象
1. require/exports(僅有下面的三種簡單寫法)
const a=require('a') //真正被require出來的是來自module.exports指向的內存塊內容
exports.a=a //exports 只是 module.exports的引用,輔助module.exports操做內存中的數據
module.exports=a
2. import / export
import a from 'a'
import { default as a } from 'a'
import * as a from 'a'
import { fun1,fun2 } from 'a'
import { fun1 as myfunction } from 'a'
import a, { fun1 } from 'a'
---------------------------------------------------------
export default a
export const a=1
export functon a{ }
export { fun1,fun2 }
export * from 'a'---------------------