咱們今天來說講es6的導入導出,es6的導入導出是什麼呢?它有哪些方便之處呢?其實啊,如今的ES6自帶了模塊化,咱們能夠直接做用import和export在瀏覽器中導入和導出各個模塊了, 一個js文件表明一個js模塊;首先咱們來具體瞭解瞭解es6模塊化:node
ES6模塊主要有兩個功能:export和import
export用於對外輸出本模塊變量的接口
import用於在一個模塊中加載另外一個含有export接口的模塊。
也就是說使用export命令定義了模塊的對外接口之後,其餘JS文件就能夠經過import命令加載這個模塊
一個模塊就是一個獨立的文件。該文件內部的全部變量,外部沒法獲取。若是你但願外部可以讀取模塊內部的某個變量,就必須使用export關鍵字輸出該變量。下面是一個JS文件,裏面使用export命令輸出變量:
/Pb.js
//導出常量 export const sqrt = Math.sqrt;
//導出函數
`export function square(x) {webpack
return x * x;
}`
//導出函數
`export function diag(x, y) {es6
return sqrt(square(x) + square(y));
}`web
//main.js import { square, diag } from '.Pb';
console.log(square(11)); // 121
console.log(diag(4, 3)); // 5
編程
這個例子意思就是在lib.js文件中, 使用 export{接口} 導出接口, 大括號中的接口名字爲上面定義的變量,直接在export的地方定義導出的函數,或者變量。 gulp
若是想爲輸入的變量從新取一個名字,import命令要使用as關鍵字,將輸入的變量重命名。 import { lastName as surname } from '.Pb';
數組
import命令具備提高效果,會提高到整個模塊的頭部,首先執行。 foo();
import { foo } from 'my_module';
瀏覽器
還有一種導出方法: 默認導出
這種導出的方式不須要知道變量的名字, 至關因而匿名的, 直接把開發的接口給export;
若是一個js模塊文件就只有一個功能, 那麼就可使用export default導出;babel
ES6將模塊加載過程的細節徹底交由最終的實現來定義,模塊執行的其它部分卻是在規範中有詳細定義。當你通知JS引擎運行一個模塊時,它必定會按照如下四個步驟執行下去:app
JavaScript做爲一門動態語言已經獲得了一個使人驚訝的靜態模塊系統。
var gulp=require("gulp"); var watch=require("gulp-watch"); var babel=require("gulp-babel"); gulp.task("babel",function(){ gulp.src("./js/*.js") .pipe(babel({ presets:["es2015"] })) .pipe(gulp.dest("./dist/js")); }); gulp.task("watch",function(){ gulp.watch("./js/*.js",["babel"]); })