在前三篇文章中一次介紹了commonjs,amd,cmd,他們都需要單獨載入檔案在阮一峰老師的module一文中寫到,es6 在語言標準的層面上,實現的模組功能,而且實現得相當簡單,完全可以取代 commonjs 和 amd 規範,成為瀏覽器和伺服器通用的模組解決方案
commonjs
require
實際上是整體載入fs
模組,然後在需要使用的時候使用
1234567
8
// commonjs模組let = require('fs')
// 等同於
let _fs = require('fs')
let stat = _fs.stat
let exists = _fs.exists
let readfile = _fs.readfile
es6
es6
中的import
可以在編譯時,按照需要去載入所需要的模組,這個時候就相當於只載入了大括號裡的3個方法,相比上面commonjs
中使用require
載入整個fs
模組好很多
1
import from'fs'
模組功能主要由兩個命令構成:export
和import
規定對外介面輸出變數:
1234
// poeple.jsexport
var name = 'zhangsan'
export
var height = 180
export
var age = 18
上述**認為是乙個模組,利用export
向外輸出三個變數
也可以在大括號內一塊輸出
123456
// poeple.jsvar name = 'zhangsan'
var height = 180
var age = 18
export
輸出函式或類:
123
exportfunction
add (x, y)
輸出變數改別名:
利用as
關鍵字
1234567
8
functiona1 () {}
function
a2 () {}
function
a3 () {}
export
載入模組
12345
import from'./people.js'
function
getpeople () is $ cm`
}
import
語句可以選擇性的只載入需要的模組,更加節省了資源
星號(*
)指定乙個物件,所有輸出值都載入在這個物件上面
那上面的例子
1
import * as people from'./people.js'
從前面的例子可以看出,使用import
命令的時候,使用者需要知道所要載入的變數名或函式名,否則無法載入
為了給使用者提供方便,讓他們不用閱讀文件就能載入模組,就要用到export default
命令,為模組指定預設輸出
1234
// export-default.jsexport
default
function ()
其他模組載入該模組時,import
命令可以為該匿名函式指定任意名字
123
// import-default.jsimport something from './export-default'
something() // 'foo'
const
宣告的常量只在當前**塊有效。如果想設定跨模組的常量(即跨多個檔案),或者說乙個值要被多個模組共享,可以採用下面的寫法
1234567
891011
1213
14
// constants.js 模組export
const a = 1;
export
const b = 3;
export
const c = 4;
// test1.js 模組
import * as constants from
'./constants';
console.log(constants.a); // 1
console.log(constants.b); // 3
// test2.js 模組
import from
'./constants';
console.log(a); // 1
console.log(b); // 3
在瀏覽器和node
之中載入es6
模組
瀏覽器載入 es6 模組,也使用標籤,但是要加入
type="module"
屬性,以此屬性告訴瀏覽器,這載入的是乙個 es6 模組
1
type="module"src="./foo.js">
script>
該載入是非同步載入,不會造成阻塞,按出現順序載入,相當於h5
中的defer
123
type="module"src="./foo.js">
script>
type="module"
src="./foo.js"
defer>
script>
同樣的可以使用async
屬性,但此時不按順序載入,依然是非同步的,只不過不知道會先載入哪乙個
1
type="module"src="./foo.js"
async>
script>
es6中Module 的語法總結
報錯 export 1 報錯 var m 1 export m 以上寫法都會報錯,第一種寫法直接輸出1,第二種寫法通過變數m,還是直接輸出1。1只是乙個值,不是介面 export匯出時規定的是對外的介面,就是你匯出的東西必須有乙個名字,匯入時才能找到這個名字,第二個方法之所以報錯,是因為不用大括號括...
es6中reduce的用法 Es6基礎語法
1 this this代表當前正在執行的物件 function fn fn window const obj new fn fn.call 2 箭頭函式 1 箭頭函式的this是在定義的時候就固定不變了 2 箭頭函式 沒有自己的this 3 箭頭函式 不能當類 構造器 使用 不可以 new 4 箭頭...
ES6 模組載入
es6中的import 是singleton 的載入方式只會載入一次,並且是編譯是執行,在編譯時進行運算等是會報錯的 export 註冊介面 export 使用方法 import 引入介面 import import from profile.js 介面可以整體載入 載入方式如下 import as...