咱们今天来说讲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"]); })