import和require的區別


import和require都是被模塊化使用

1. a.    require是CommonJs的語法(AMD規范引入方式),CommonJs的模塊是對象。

    b.    import是es6的一個語法標准(瀏覽器不支持,本質是使用node中的babel將es6轉碼為es5再執行,import會被轉碼為                        require),es6模塊不是對象

 2. a.    require是運行時加載整個模塊(即模塊中所有方法),生成一個對象,再從對象上讀取它的方法(只有運行時才能得到這                個對象,不能在編譯時做到靜態化),理論上可以用在代碼的任何地方

     b.  import是編譯時調用,確定模塊的依賴關系,輸入變量(es6模塊不是對象,而是通過export命令指定輸出代碼,再通過                  import輸入,只加載import中導的方法,其他方法不加載),import具有提升效果,會提升到模塊的頭部(編譯時執行)

          export和import可以位於模塊中的任何位置,但是必須是在模塊頂層,如果在其他作用域內,會報錯

          es6這樣的設計可以提高編譯器效率,但沒法實現運行時加載

3. a.   require是賦值過程,把require的結果(對象,數字,函數等),默認是export的一個對象,賦給某個變量(復制或淺拷貝)

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM