es6的模块化

es6的模块化是浏览器端和服务器端通用的模块开发规范,其设计思想就是尽量的静态化,在编译时就确定模块的依赖关系,以及输入输出的变量

其模块化规范中定义:

每个js文件都是一个独立的模块

导入其他成员用import关键字

向外共享成员变量用export关键字

 

AMD

异步加载模块,主要用于浏览器,其定义需要使用requireJs

  • AMD具有以下几个特性:

    1. 采用异步方式加载模块,模块的加载不影响它后面语句的运行.
    2. 所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行.
    3. 推崇依赖前置,在定义模块的时候就要声明其依赖的模块
  • AMD的使用
    使用require.js来实现AMD规范的模块化:用require.config()指定引用路径。用define()来定义模块用require来加载模块。

define('moduleName',['a','b'],function(ma, mb) {
  return someExportValue;
})

require(['a', 'b'], function(ma, mb) {
   //    do something
})

CMD

通用模块定义,就近依赖,延迟执行,其定义使用用SeaJs

  • CMD具有以下几个特性:

    1.采用异步方式加载模块,模块的加载不影响它后面语句的运行.
    2.推崇就近依赖,只有在用到某个模块的时候再去require

  • CMD的使用
    使用define来定义define(id?, deps?, factory)
    factory是一个函数,有三个参数,function(require, exports, module)
    require 是一个方法,接受 模块标识 作为唯一参数,用来获取其他模块提供的接口:require(id)
    exports 是一个对象,用来向外提供模块接口
    module 是一个对象,上面存储了与当前模块相关联的一些属性和方法

 // 定义模块  module.js
define(function(require, exports, module) {
  var $ = require('jquery.min.js')
  $('div').addClass('active');
});

// 加载模块
seajs.use(['module.js'], function(my){
});

 

 

原文地址:http://www.cnblogs.com/qianduan-Wu/p/16799524.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性