Js模块化规范:
一:CommonJS
1,只有node环境下支持;
2,导出:
2.1,使用exports或module.exports,等号导出
2.2,导出原理:
因为js的对象复制仅仅是改变指针位置,所以exports与module.exports写法一样;
exports写法上exports.a=xxx,exports.b=xxx,逐个给exports对象设置值,可以写多个,
module.exports={a:xxx,b:xxx},导出是一个对象;
//原理理解为每个模块为一个函数,自动输入一个module参数,require相当于执行这个函数:
function(module){
module.exports = {};
var exports = module.exports;
//模块的代码
return module.exports
}
3,导入
3.1,使用require导入,导入路径必须为相对路径,即以./或../开头
3.2,模块后缀为.js可以省略
3.3,导入模块存在缓存,重复导入会使用第一次导入的值
二,ES6模块化
1,导出使用export或export default;
2,导出的接受的变量不能更改;
3,export基本导出可以使用多个,export default默认导出只有一个;
4,基本导出有声明,
export var a = 1;
export var b = function(){};
export function fun(){};
var c =3;
export {c};
export {c as temp};
5,默认导出一般用export default{}
export default 3;
export default function(){};
export {c as default};
export {a,b,c as deafault};a,b基本导出,c默认导出
6,导入的是一个对象,导入的default不能作为变量名;
7,导入存在缓存,导入不能写到条件或判断里面,CommonJS可以;
{a:xxx,b:xxx,default:xxx}
import {a,b} from 'xxx';
import c,{a,b} from 'xxx'; //其中导入的c是default
import * as obj from 'xxx; //导入的所有的东西放到obj里面