首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CommonJS

老实说,之前我对 CommonJS 也是一无所知,直到不久前 Node.js 火起来,我去研究它,才了解到 Node.js 其实是 CommonJS 的一个部分实现,我才关注起 CommonJS 来。...另一方面,在 2009 年 8 月,CommonJS 诞生了(不妨读读这篇文章)。...从 CommonJS 的官网来看,它至始至终都避免使用 “规范” 这个词,似乎不想自认,但我的理解,CommonJS 本质上就是一个规范,它并不提供默认实现,而是要求一些 JavaScript 库、框架...如果你有兴趣,在这里可以找到 CommonJS 所有的子规范。...按照 CommonJS 小组自己的话来说,在 CommonJS 0.5 版本的开发过程中,已经讨论了 API 需要包含的范围,建立了一个收集提议和优先级信息的 Wiki 页,讨论了现有的提议并排序,达成了基本一致的意见

34210

CommonJS——

CommonJS(http://www.commonjs.org/)规范为JavaScript制定了一个美好的愿景——希望JavaScript能够在任何地方运行。...二、CommonJS出发点 CommonJS规范的提出,主要是为了弥补当前JavaScript没有标准的缺陷,已达到像Python、Ruby和Java具有开发大型应用的基础能力,而不是停留在小脚本程序阶段...(1)服务器端JavaScript应用程序 (2)命令行工具 (3)桌面图形界面应用程序 (4)混合应用 三、CommonJS的模块规范 CommonJS构建模块导出和引入机制使得用户完全不必考虑变量污染...CommonJS对模块的定义主要分为模块引用、模块定义和模块标识3个部分。 1. 模块定义 在CommonJS规范中,使用exports对象用于导出当前模块的方法或者变量,并且它是唯一导出的出口。...Node能以一种较成熟的姿态出现,离不开CommonJS规范的影响。在服务器端,CommonJS能以一种寻常的姿态进入各个公司的项目代码中,离不开Node优异的表现。

52931
您找到你想要的搜索结果了吗?
是的
没有找到

CommonJS

理论和实践总是相互影响和促进的,NodeJS能以一种比较成熟的姿态出现,离不开CommonJS规范的影响,同样,在服务端,CommonJS能以一种寻常的姿态写进各个公司的项目中,也离不开NodeJS优异的表现...,下图是NodeJS与W3C、还有浏览器,CommonJS组件、ES规范之间的关系: NodeJS借鉴了CommonJS的模块化规范实现了一套非常易用的模块。...CommonJS规范 CommonJS对模块的定义十分简单,主要分为模块引用、模块定义、模块标识三个部分。...CommonJS模块规范也允许在标识符中不包含文件扩展名,这种情况下,Node会按.js、.json、.node的次序补足扩展名,依次尝试。...在这个过程中,NodeJS对CommonJS包规范进行了一定程度的支持。

15510

CommonJS 详细介绍

CommonJS 规范与实现 正如当年为了统一 JavaScript 语言标准,人们制定了 ECMAScript 规范一样,如今为了统一 JavaScript 在浏览器之外的实现,CommonJS 诞生了...CommonJS 的终极目标是制定一个像 C++ 标准库一样的规范,使得基于 CommonJS API 的应用程序可以在不同的环境下运行,就像用 C++ 编写的应用程序可以使用不同的编译器和运行时函数库一样...Node.js 是目前 CommonJS 规范最热门的一个实现,它基于 CommonJS 的 Modules/1.0 规范实现了 Node.js 的模块,同时随着 CommonJS 规范的更新,Node.js...CommonJS 规范的实现 Node.js 的模块和包机制的实现参照了 CommonJS 的标准,但并未完全遵循。...CommonJS 中的 Require 建议阅览:CommonJS require 规范

98720

读懂CommonJS的模块加载

叨叨一会CommonJS Common这个英文单词的意思,相信大家都认识,我记得有一个词组common knowledge是常识的意思,那么CommonJS是不是也是类似于常识性的,大家都理解的意思呢?...CommonJs规范 那么CommonJS规范了些什么呢?要解释这个规范,就要从JS的特性说起了。JS是一种直译式脚本语言,也就是一边编译一边运行,所以没有模块的概念。...那么CommonJS可以用于那些方面呢?虽然CommonJS不能再浏览器中直接使用,但是nodejs可以基于CommonJS规范而实现的,亲儿子的感觉。...CommonJs模块和ES6模块的区别 使用场景 CommonJS因为关键字的局限性,因此大多用于服务器端。...CommonJS模块总结 CommonJS模块只能运行再支持此规范的环境之中,nodejs是基于CommonJS规范开发的,因此可以很完美地运行CommonJS模块,然后nodejs不支持ES6的模块规范

1.3K30

commonjs与es6 module

当前最主流的两个模块化方案:nodejs使用的是commonjs规范、前台浏览器端主要使用的是es6 Module nodejs当前就是commonjs规范的代表实践者,因此用的是require。...用法如下: ES6 Module export a = 1 export default b = 2 import { a } from x.js import b from x.js commonjs...exports.a = {} // 不能重写 exports,比如:exports = { a: {} } 调用方法 var x = require('x.js') console.log(x.a, x.b) commonjs...和es6 module对比 1.commonjs输出的是值的拷贝、es6 输出的是值的引用 2.commonjs是运行时加载,es6 是编译时输出接口 对待循环引用的区别: es6模块,遇到模块加载命令...CommonJS模块,的特性是加载时执行,在首次加载的时候就已经执行出结果了,此结果会一直缓存在内存中,等需要用到的时候直接取用缓存结果,因此,如果出现循环引用,只会输出已经执行的部分 其它,amd、cmd

26920

NodeJS学习二CommonJS规范

Node模块采用了CommonJS规范。 根据CommonJS规范,一个单独的文件就是一个模块。...CommonJS规定,每个文件的对外接口是module.exports对象。这个对象的所有属性和方法,都可以被其他文件导入。...AMD规范与CommonJS规范的兼容性 CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。AMD规范则是非同步加载模块,允许指定回调函数。...由于Node.js主要用于服务器编程,模块文件一般都已经存在于本地硬盘,所以加载起来比较快,不用考虑非同步加载的方式,所以CommonJS规范比较适用。...require的内部处理流程 require命令是CommonJS规范之中,用来加载其他模块的命令。

53820

nodejs学习一CommonJS和AMD

CommonJS CommonJS本质上就是一个规范,它并不提供默认实现,而是要求一些JavaScript库、框架、环境……去实现它的这些API定义。 那么,都有哪些API层面的定义呢?...CommonJS定义的模块分为:{模块引用(require)} {模块定义(exports)} {模块标识(module)}, require()用来引入外部模块;exports对象用于导出当前模块的方法或变量...node.js的模块系统,就是参照CommonJS规范实现的。在CommonJS中,有一个全局性方法require(),用于加载模块。假定有一个数学模块math.js,就可以像下面这样加载。...var math = require('math'); //然后,就可以调用模块提供的方法: var math = require('math'); math.add(2,3); // 5 AMD CommonJS...参考文档: 1.wiki-CommonJS

65120

webpack模块化原理-commonjs

bar.bar(); } webpack传入的第一个参数module是当前缓存的模块,包含当前模块的信息和exports;第二个参数exports是module.exports的引用,这也符合commonjs...在我们的模块中,就可以对外使用module.exports或exports进行导出,使用__webpack_require__导入需要的模块,代码跟commonjs完全一样。...webpack管理着这些模块的缓存,如果一个模块被require多次,那么只会有一次加载过程,而返回的是缓存的内容,这也是commonjs的规范。...结论 到这里,webpack就hack了commonjs代码。 原理还是很简单的,其实就是实现exports和require,然后自动加载入口模块,控制缓存模块,that's all。...细心的你一定会发现,文章到这里只介绍了webpack对commonjs的实现,那么ES6 module是如何实现的呢? 欢迎阅读本系列第二篇《webpack模块化原理-ES6 module》。

65730

模块化-CommonJs、AMD、CMD

模块化规范 CommonJs CommonJS经node.js应运而生,根据CommonJS规范,每一个模块都是一个单独的作用域。也就是说,在该模块内部定义的变量,无法被其他模块读取。...由于Node.js主要用于服务器编程,加载的模块文件一般都存在本地硬盘,加载起来比较快,不用考虑异步加载的方式,因此,CommonJS规范比较适用。.../a' 这里在语法不做过多介绍,主要说一说 ES6 模块 与 CommonJS 模块 的差异。 它们有两个重大差异: CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。...CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。 第二个差异是因为 CommonJS 加载的是一个对象(即module.exports属性),该对象只有在脚本运行完才会生成。...总结 CommonJS 模块输出的是一个值的拷贝,CommonJS 模块是运行时加载,CommonJS规范主要用于服务端编程,加载模块是同步的,同步意味着阻塞加载,浏览器资源是异步加载的,因此有了AMD

35330

Node基础-CommonJS模块化规范

模块规范设计的,所以模块是NODE的组成 内置模块:NODE天生提供给JS调取使用的 第三方模块:别人写好的,我们可以基于NPM安装使用 自定义模块:自己创建一些模块 CommonJS模块化设计的思想(...AMD/CMD/ES6 MODULE都是模块设计思想) 1.CommonJS规定,每一个JS都是一个单独的模块(模块是私有的:里面涉及的值和变量以及函数等都是私有的,和其它JS文件中的内容是不冲突的...) 2.CommonJS中可以允许模块中的方法互相的调用 B模块中想要调取A模块中的方法 =>A导出 =>B导入 [导出] CommonJS给每一个模块...提供的内置变量,用来导入模块的(其实导入的就是module.exports暴露出来的东西);导入的值也是[object]类型的; CommonJS特点: 1....CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。

61320
领券