摘要:简单来讲,它是一个规范。规范规定,每个模块内部,变量代表当前模块。这个变量是一个对象,它的属性即是对外的接口。加载模块是同步的,所以只有加载完成才能执行后面的操作。
对于前端开发者来说 CommonJS 和 AMD 是经常遇到的概念,那么 CommonJS 和 AMD 到底是什么呢?
CommonJSCommonJS is a project with the goal of specifying an ecosystem for JavaScript outside the browser (for example, on the server or for native desktop applications).
维基百科说,CommonJS 是一个致力于规范化浏览器之外的 JavaScript 生态系统的项目(例如,在服务器端或者是原生的桌面应用程序)。
简单来讲,它是一个规范。根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。CommonJS 规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。
CommonJS 加载模块是同步的,所以只有加载完成才能执行后面的操作。像Node.js主要用于服务器的编程,加载的模块文件一般都已经存在本地硬盘,所以加载起来比较快,不用考虑异步加载的方式,所以CommonJS规范比较适用。但如果是浏览器环境,要从服务器加载模块,这是就必须采用异步模式。所以就有了 AMD,CMD 解决方案。
AMD(Asynchromous Module Definition)CommonJS是主要为了js在后端的表现制定的,是不适合前端的,为什么这么说呢?这需要分析一下浏览器端的js和服务器端js都主要做了哪些事,有什么不同了:
于是乎,AMD(异步模块定义)出现了,它就主要为前端JS的表现制定规范。
AMD就只有一个接口:
define(id?,dependencies?,factory)
它要在声明模块的时候制定所有的依赖(dependencies),并且还要当做形参传到factory中,像这样:
define(["./a", "./b"], function(a, b) { // 依赖必须一开始就写好 a.doSomething() // 此处略去 100 行 b.doSomething() ... })参考链接
1. JavaScript 标准参考教程(alpha)
2. amdjs/amdjs-api
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/92840.html
摘要:所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。也采用语句加载模块,但是不同于,它要求两个参数第一个参数,是一个数组,里面的成员就是要加载的模块第二个参数,则是加载成功之后的回调函数。 本篇文章来自对文章《js模块化编程之彻底弄懂CommonJS和AMD/CMD!》的总结,大部分摘自文章原话,本人只是为了学习方便做的笔记,之后有新的体会会及时补充...
摘要:若不存在则模块标识应该默认定义为在加载器中被请求脚本的标识。这也是目前很多插件头部的写法,就是用来兼容各种不同模块化的写法。语句输出的值是动态绑定的,绑定其所在的模块。 前言 历史上,js没有模块化的概念,不能把一个大工程分解成很多小模块。这对于多人开发大型,复杂的项目形成了巨大的障碍,明显降低了开发效率,java,Python有import,甚至连css都有@import,但是令人费...
摘要:函数有两个参数,第一个参数是当前运行时环境,第二个参数是模块的定义体。在执行规范时,会优先判断是当前环境是否支持环境,然后再检验是否支持环境,否则认为当前环境为浏览器环境 CommonJS规范 CommonJS定义的模块分为3部分: require 模块引用 exports 模块导出 module 模块本身 根据CommonJS规范,一个单独的文件就是一个模块。每一个模块都是一个...
摘要:模块化规范有的模块系统。规范是服务器端模块的规范,由推广使用。对于依赖的模块,是提前执行,是延迟执行。浏览器厂商和都宣布要原生支持该规范。它将逐渐取代和规范,成为浏览器和服务器通用的模块解决方案。 本文由云+社区发表 模块化是指把一个复杂的系统分解到一个一个的模块。 模块化开发的优点: (1)代码复用,让我们更方便地进行代码管理、同时也便于后面代码的修改和维护。 (2)一个单独的文件就...
阅读 1290·2019-08-30 15:44
阅读 1964·2019-08-30 13:49
阅读 1634·2019-08-26 13:54
阅读 3467·2019-08-26 10:20
阅读 3213·2019-08-23 17:18
阅读 3277·2019-08-23 17:05
阅读 2087·2019-08-23 15:38
阅读 992·2019-08-23 14:35