1、加载机制不同
es是静态加载,其它是动态加载。
Es6 模块的设计思想,是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量。
CommonJS 和 AMD、CMD 模块,都只能在运行时确定这些东西。
比如,其它模块就是对象(运行时,查找对象),输入时必须查找对象属性。ES6 模块不是对象,而是通过export命令显式指定输出的代码(编译时,代码合并重构),再通过import命令输入。这种加载称为“编译时加载”或者静态加载,即 ES6 可以在编译时就完成模块加载,效率要比其它模块的加载方式高

2、输出值不同
加载机制不同,导致了他们export输出的也不同
其它模块机制输出的是一个值的拷贝,而ES6模块输出的是值的引用。
其它模块输出的是被输出值的拷贝,也就是说,一旦输出一个值,模块内部的变化就影响不到这个值
由于ES6输入的模块变量,只生成一个动态的只读引用,所以这个变量是只读的,对它进行重新赋值会报错,只能改变对象属性的值,不能够改变引用。如果是一个基本数据类型,不是引用类型的数据,也不能改变他的值,按照js尿性字符串和布尔就不是引用,举例子不能用这种类型数据写demo,否则演示不出效果

实例证明

(CMD)
index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="wrapp">
<button>改变</button>
</div>
<script src="lib/jquery-3.2.1.min.js"></script>
<script src="lib/sea.js"></script>
<script src="js/app.js"></script>
</body>
</html>

app.js

/**
*模块:
*功能:入口
*/
seajs.use(['./js/hello'],function (hello) {
$('button').click(function () {
hello.up()
console.log(hello.msg)
})
});

hello.js

define(function (require, exports, modul) {
var msg=0;
function up() {
msg++
}
modul.exports={
up:up,
msg:msg
};
})

效果

Es6
index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="wrapp">
<button>改变</button>
</div>
<script src="lib/jquery-3.2.1.min.js"></script>
<script src="bundle.js"></script>
</body>
</html>

app.js

/**
*模块:
*功能:入口
*/
import * as hello from './hello';
$('button').click(function () {
hello.up()
console.log(hello.msg)
})

hello.js

var msg=0;
function up() {
msg++
}
export {up,msg} ;

效果

3、总结
现在es6模块开发尚未被浏览器实现,所有的理论都是在webpack基础上的,不代表最终结果,随时可能被颠覆

参考
http://blog.csdn.net/pcaxb/article/details/53670097
https://www.cnblogs.com/diligenceday/p/5503777.html

最新文章

  1. React Native之 ScrollView介绍和使用
  2. 判断手机端用户打开页面时是android还是ios,并将判断结果通过ajax返回给url接口,传递回去
  3. 【转载】说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
  4. 完全开源Android网络框架 — 基于JAVA原生的HTTP框架
  5. Entity Framework使用Sqlite时的一些配置
  6. linux:指令与档案的搜索
  7. 9款精美别致的CSS3菜单和按钮
  8. AngularJS(12)-BootStrap集成
  9. Debian 7 64位安装 wine
  10. asp.net 中使用不同的数据源绑定gridview
  11. windows7+iis7+php的配置
  12. Activity的onSaveInstanceState()和onRestoreInstanceState()方法
  13. 《转》Java 信号量 Semaphore 介绍
  14. poj 1150 The Last Non-zero Digit
  15. SICP 习题(1.1,1.2,1.3,1.4)解题总结。
  16. ES6的转换器
  17. freemarker 集成 sitemesh 装饰html页面 shiro 标签
  18. POJ 1979 DFS
  19. 3.QT中的debug相关的函数,以及文件锁的使用
  20. spring 相关注解详情(二)

热门文章

  1. 修改Apache访问权限
  2. “几何画板+MathType”双11组合特价,优惠多多
  3. print多重打印
  4. 自己实现一个Promise库
  5. Lumen Carbon 日期及时间处理包
  6. Codevs 5914 [SXOI2016]最大值
  7. ios 给UIImageView添加阴影
  8. Android StaggeredGrid 加下拉刷新功能 PullToRefresh
  9. ubuntu squid 代理服务器安装配置
  10. order meeting room - 离散度30min