美文网首页javascriptJS
AMD、CMD、CommonJs、ES6的对比

AMD、CMD、CommonJs、ES6的对比

作者: 抽疯的稻草绳 | 来源:发表于2021-06-27 22:09 被阅读0次

    一、CommonJS 和 ES6 区别:

    1.CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。

    2.CommonJS 模块的require()是同步加载模块,ES6 模块的import命令是异步加载,有一个独立的模块依赖的解析阶段。

    3.CommonJS是对模块的浅拷⻉,ES6 Module是对模块的引⽤,即ES6 Module只存只读,不能改变其值,具体点就是指针指向不能变,类似const 。

    4.import的接⼝是read-only(只读状态),不能修改其变量值。 即不能修改其变量的指针指向,但可以改变变量内部指针指向。可以对commonJS对重新赋值(改变指针指向),但是对ES6 Module赋值会编译报错。

    二、共同点:

    1.CommonJS和ES6 Module都可以对引⼊的对象进⾏赋值,即对对象内部属性的值进⾏改变。


    AMD、CMD、CommonJs、ES6的对比

    他们都是用于在模块化定义中使用的,AMD、CMD、CommonJs是ES5中提供的模块化编程的方案,import/export是ES6中定义新增的

    什么是AMD、CMD、CommonJs?

    他们之间有什么区别?

    项目当中是如何使用?

    1)AMD-异步模块定义

    AMD是RequireJS在推广过程中对模块定义的规范化产出,它是一个概念,RequireJS是对这个概念的实现,就好比JavaScript语言是对ECMAScript规范的实现。AMD是一个组织,RequireJS是在这个组织下自定义的一套脚本语言

    RequireJS:是一个AMD框架,可以异步加载JS文件,按照模块加载方法,通过define()函数定义,第一个参数是一个数组,里面定义一些需要依赖的包,第二个参数是一个回调函数,通过变量来引用模块里面的方法,最后通过return来输出。

    是一个依赖前置、异步定义的AMD框架(在参数里面引入js文件),在定义的同时如果需要用到别的模块,在最前面定义好即在参数数组里面进行引入,在回调里面加载

    2)CMD---是SeaJS在推广过程中对模块定义的规范化产出,是一个同步模块定义,是SeaJS的一个标准,SeaJS是CMD概念的一个实现,SeaJS是淘宝团队提供的一个模块开发的js框架.

    通过define()定义,没有依赖前置,通过require加载jQuery插件,CMD是依赖就近,在什么地方使用到插件就在什么地方require该插件,即用即返,这是一个同步的概念

    3)CommonJS规范---是通过module.exports定义的,在前端浏览器里面并不支持module.exports,通过node.js后端使用的。Nodejs端是使用CommonJS规范的,前端浏览器一般使用AMD、CMD、ES6等定义模块化开发的

    输出方式有2种:默认输出---module export 和带有名字的输出---exports.area

    4)ES6特性,模块化---export/import对模块进行导出导入的

    相关文章

      网友评论

        本文标题:AMD、CMD、CommonJs、ES6的对比

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