import和require的區別

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'---------------------

相關文章
相關標籤/搜索