北妈每日一学:ES6 之 模块化-重要!
北媽每日一學
《北媽每日一學》
北媽每日一學用最短的篇幅 ,最好的排版,最簡潔的例子和大家一起學習、入坑。
今天來學 風靡網絡的-?es6箭頭函數
ES6 簡介
ECMAScript 6(以下簡稱ES6)是JavaScript語言的下一代標準。因為當前版本的ES6是在2015年發布的,所以又稱ECMAScript 2015。
也就是說,ES6就是ES2015。
雖然目前并不是所有瀏覽器都能兼容ES6全部特性,但越來越多的程序員在實際項目當中已經開始使用ES6了。所以就算你現在不打算使用ES6,但為了看懂別人寫的代碼你也必須要懂ES6的語法了...
北媽一句白話就是:之前用的,你所熟悉的js語法是es5標準,現在是es6標準,恩就這么多。
????ES6模塊的import和export用法總結
ES6之前已經出現了js模塊加載的方案,最主要的是CommonJS和AMD規范。commonjs主要應用于服務器,實現同步加載,如nodejs。AMD規范應用于瀏覽器,如requirejs,為異步加載。同時還有CMD規范,為同步加載方案如seaJS。
ES6在語言規格的層面上,實現了模塊功能,而且實現得相當簡單,完全可以取代現有的CommonJS和AMD規范,成為瀏覽器和服務器通用的模塊解決方案。
ES6模塊主要有兩個功能:export和import
export用于對外輸出本模塊(一個文件可以理解為一個模塊)變量的接口
import用于在一個模塊中加載另一個含有export接口的模塊。
也就是說使用export命令定義了模塊的對外接口以后,其他JS文件就可以通過import命令加載這個模塊(文件)。如下圖(假設a和b文件在同一目錄下)
// a.js
var sex="boy";
var echo=function(value){
console.log(value)
}
export {sex,echo} ?
//通過向大括號中添加sex,echo變量并且export輸出,就可以將對應變量值以sex、echo變量標識符形式暴露給其他文件而被讀取到
//不能寫成export sex這樣的方式,如果這樣就相當于export "boy",外部文件就獲取不到該文件的內部變量sex的值,因為沒有對外輸出變量接口,只是輸出的字符串。
// b.js
通過import獲取a.js文件的內部變量,{}括號內的變量來自于a.js文件export出的變量標識符。
import {sex,echo} from "./a.js"
console.log(sex) ? // boy
echo(sex) // boy
a.js文件也可以按如下export語法寫,但不如上邊直觀,不太推薦。
// a.js
export var sex="boy";export var echo=function(value){ console.log(value) }
//因為function echo(){}等價于 var echo=function(){}所以也可以寫成
export function echo(value){
console.log(value)
}
以上是export與module的基本用法,再進行拓展學習
前面的例子可以看出,b.js使用import命令的時候,用戶需要知道a.js所暴露出的變量標識符,否則無法加載。可以使用export default命令,為模塊指定默認輸出,這樣就不需要知道所要加載模塊的變量名。
//a.js
var sex="boy";export default sex(sex不能加大括號)
//原本直接export sex外部是無法識別的,加上default就可以了.但是一個文件內最多只能有一個export default。
其實此處相當于為sex變量值"boy"起了一個系統默認的變量名default,自然default只能有一個值,所以一個文件內不能有多個export default。
// b.js
本質上,a.js文件的export default輸出一個叫做default的變量,然后系統允許你為它取任意名字。所以可以為import的模塊起任何變量名,且不需要用大括號包含import any from "./a.js"
import any12 from "./a.js" console.log(any,any12) ? // boy,boy
?參考:http://es6.ruanyifeng.com/#docs/module
總結
以上是生活随笔為你收集整理的北妈每日一学:ES6 之 模块化-重要!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [云炬商业计划书阅读分享]洗车店创业计划
- 下一篇: [云炬商业计划书阅读分享]校园快递创业计