<script type="module" src="es7-1.js" ></script> <script type="module" src="es7-2.js" ></script> <!-- 頁面渲染完成再去加載,至關於設置了defer,不會形成瀏覽器阻塞 -->
用script引入模塊文件時,須要加上type="module"es6
這裏補充一下defer和async屬性:sql
1 <script src="a.js" async></script>
設置了async屬性後,瀏覽器加載頁面的過程是:渲染引擎開始渲染,發現設置async屬性的腳本,繼續渲染,同時下載腳本,當腳本下載完成,渲染引擎將瀏覽器控制權腳本JS引擎,執行腳本。由於可能會碰見多個腳本,同時腳本的下載時間有長有短,因此腳本執行順序可能不是腳本書寫的順序!apache
設置defer屬性,瀏覽器的工做狀況:前面與上面相似,不過當發現腳本,渲染引擎會繼續渲染頁面,直到頁面渲染完成,再將瀏覽器控制權交給JS引擎,執行腳本;因此腳本執行順序與腳本書寫的順序一致。這種與在頁面底部引入的腳本文件做用相似!瀏覽器
若是均未設置以上屬性,瀏覽器工做狀況:渲染引擎開始渲染,發現腳本,將瀏覽器控制權腳本js引擎,下載腳本,執行腳本,結束後JS引擎再將瀏覽器控制權交給渲染引擎,渲染引擎繼續渲染。。。服務器
export:導出變量,函數,類等app
第一種寫法:async
1 export let name='apple' 2 export let age=100 3 export let year=2017
第二種寫法:更推薦(在最下面使用export導出,能看出究竟哪些變量或其餘類型被導出,更直觀)函數
1 let name1='apple' 2 let age1=100 3 let year1=2017 4 export {name1,age1,year1}
1 export {name1 as a,age1 as b}
1 let a1=function (){} 2 // export a1//錯誤的寫法 3 export {a1}
1 export function f(){}//正確寫法 2 function f1(){} 3 // export f1//錯誤寫法
1 export default function(){} 2 // 而導入時,能夠import abc from './es7-2' 注意此時的abc沒有用大括號括起來,abc能夠爲任意有效變量名 3 // 整體來講export default後, import後面能夠加上任意變量名,比較方便
import:當export導出了模塊的對外接口,此時就能夠用import導入接口(加載導出的模塊)優化
1 import {name1,age1,year1} from './es7-1.js' 2 console.log(name1,age1,year1)//apple 100 2017 3 // form後面路徑能夠是相對路徑也能夠是絕對路徑,.js後綴能夠省略 4 // 可是我開apache時,省略js報錯了,同時若是script是行內引用的話,必須加.js後綴,因此建議任什麼時候候都加上後綴
1 import {name1 as a1}