ES6 Module把一個文件當作一個模塊,每個模塊有自己的獨立作用域,那如何把每個模塊聯系起來呢?核心點就是模塊的導入(import)與導出(export)。
模塊化的好處:
- 防止命名沖突
- 代碼復用
- 高維護性
暴露也就是導出(export)有三種方式:1.分別暴露 2.統一暴露 3.默認暴露
分別暴露:在需要暴露的變量或者方法前面加上export關鍵字,我們新建一個m1.js文件寫上如下代碼
1 //分別暴露 2 export let team='RNG' 3 4 export function play(){ 5 console.log('this is a team of LPL') 6 } 7 8 function own(){ 9 console.log('不想被暴露'); 10 }
這個時候再在頁面上對這個文件進行引入,同樣新建一個頁面 main.html,通過import關鍵字進行引入
1 <script type="module"> 2 // 引入模塊化js 3 import * as m1 from './modulesJs/m1.js' 4 // 調用暴露的方法 5 m1.play(); // thi is a team of LPL 6 // m1.own() // 由於未暴露own方法這個地方就會報錯 m1.own is not a function 7 console.log(m1) 8 </script>
同理書寫統一暴露m2.js代碼如下:
1 // 統一暴露 2 let name = 'IG' 3 function discription() { 4 console.log('we are the champion'); 5 } 6 7 //以對象的形式進行暴露 8 export { 9 name, 10 // 並且可以通過as取一個別名 11 discription as dis 12 }
引入m2.js的方法不變
1 <script type='module'> 2 import * as m2 from './modulesJs/m2.js' 3 m2.dis() // we are the champion 4 console.log(m2.name) // IG 5 </script>
最后默認暴露(暴露一個default對象)
1 // 默認暴露 2 export default { 3 name: 'EDG', 4 say() { 5 console.log('it is a good team'); 6 } 7 }
1 <script type='module'> 2 import * as m3 from './modulesJs/m3.js' 3 // 默認暴露的模塊JS在調用的時候多了一個default節點 4 m3.default.say() // it is a good team 5 console.log(m3.default.name) // EDG 6 </script>
