ES6的模块化,目前为止(2017-2-24)浏览器兼容还不是太好,需要使用babel进行编译
babel+webpack配置:
webpack.config.js的代码如下:
module.exports = {
entry: './index.js', //入口文件
output: {
filename: 'build.js' //出口
},
module: {
loaders: [{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/ //排除那些目录
}]
}
};
.babelrc文件的配置
{
"presets":[['es2015']]
}
下载相应的模块
npm install babel-loader babel-core babel-preset-es2015
webpack -w运行
ES6里面模块化的使用方式
模块: 定义(导出) 和 引入(导入)
以下例子,导出模块放在 mod.js里面
以下例子,导入模块放在 index.js 里面
-
第一种书写方式
mod.js代码(一个一个导出)
export let a = 12; //导出普通值 export let b = 5; export let json = { //导出json a, b }; export let show = function() { //导出函数 return 'welcome' }; export class Person { //导出类 constructor() { this.name = '123'; } showName() { return this.name; } }
index.js代码
import { a, b, json, show, Person } from './mod' console.log(a, b, json, show, Person);
-
第二种书写方式
mod.js代码
let a = 12; let b = 5; let c = 10; export { a, b, c as cc //as是别名,使用的时候只能用别名 }
index.js代码
import { a, b, cc // cc是导出的,as别名 } from './mod' console.log(a, b, cc);
-
第三种 default方式
default方式的优点,import无需知道变量名,就可以直接使用
mod.js的代码
export default function() { console.log('welcome to ES6 modules') }
index.js的代码
import aa from './mod' aa(); //或者 //import aa as cc from './mod' //as用来起别名 //cc()
小总结: 导出模块如果用default了,引入的时候直接用,若没有用default,引入的时候可以用{}的形式
有了default的方便之处,以后:
import $ from './jquery-3.1.1' //使用 $(function(){ $('body').css({ background:'#ccc' }) })
像这样引入模块就显的非常省事了。
-
总结export和import的用法
-
export的用法
//1. export let a=12; export let b=5; //2. let a=12; let b=5; export {a,b} //3. let a=12; let b=5; export {a as aa, b as bb} //4. export default { a:12, b:5 } //5. export let fn1=function(){} export let fn2=function(){}
-
import的用法
//1. import {a,b} from './mod' //2. import {a as aa, b as bb} from './mod' //3. import {aa,bb} from './mod' //4. import json from './mod' //5. import * as fn from './mod' //* 用来加载所有模块
手边有电脑,就稍微跑一遍试试吧,如果没有,就暂时记住语法规则喽!
-