美文网首页
AMD / CMD / ES6 / CommonJS

AMD / CMD / ES6 / CommonJS

作者: 钱罗罗_ | 来源:发表于2019-12-29 03:31 被阅读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的时候是拿不到的。

    相关文章

      网友评论

          本文标题:AMD / CMD / ES6 / CommonJS

          本文链接:https://www.haomeiwen.com/subject/gpvwgctx.html