AMD / CMD / ES6 / CommonJS

2019-12-29  本文已影响0人  钱罗罗_

一、AMD

                AMD是requireJS推广过程中对模块定义的规范化输出,(Asynchronous Module Definition)异步模块定义,模块的加载不影响它后面语句的执行,所以依赖此模块的语句,都得在回调函数中执行。AMD采用require语句加载模块,需要两个参数

举例:require(['math'],function(math){math.add(2,3)});

requireJS就是AMD规范,是依赖前置、异步定义的框架define([module],function(module){...})

关键字:依赖前置、异步、回调

二、CMD

        CMD是seaJS推广过程中对模块定义的规范化输出,(Common Module Definition)通用模块定义,在CMD规范中,一个文件就是一个模块,用define定义模块

举例:define(require,export,module){}

CMD是依赖就近,在什么地方使用到插件就在什么地方require该插件,即用即返,这是一个同步的概念

三、CommonJS

        node.js的模块系统,就是参照CommonJS规范实现的。在CommonJS中,有一个全局性方法require(),用于加载模块;在前端浏览器里面并不支持module.exports,通过node.js后端使用的,

    导出时都是值拷贝,就算导出的值变了,导入的值也不会改变,所以如果想更新值,必须重新导入一次,加载模块是同步的。

    module.export跟exports的区别

        module.exports 方法还可以单独返回一个数据类型(String、Number、Object...),而 exports 只能返回一个 Object 对象

        所有的 exports 对象最终都是通过 module.exports 传递执行,因此可以更确切地说,exports 是给 module.exports 添加属性和方法

四、ES6

    模块化---export/import对模块进行导出导入的

    采用静态编译,使得编译时就能确定模块的依赖关系,以及输入和输出的变量,不支持动态导入,采用实时绑定的方式,导入导出的值都指向同一个内存地址,所以导入值会跟随导出值变化。

五、export和export default的区别

   1、 export/import可以有多个,export default只有一个;

    2、通过export方式导出,在导入时需要加{},export default不需要

    3、export能导出变量/表达式,export default不可以

    4、 export与export default均可用于导出常量/函数/文件/模块等

六、module.export跟exports的区别(node commonJS规范)

        module.exports和exports指向同一个内存地址、文件最终导出的是module.export的文件地址。如果擅自改动exports的指向,那exports导出的东西。import的时候是拿不到的。

上一篇下一篇

猜你喜欢

热点阅读