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

CommonJS

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

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

CommonJS——

CommonJS(http://www.commonjs.org/)规范为JavaScript制定了一个美好的愿景——希望JavaScript能够在任何地方运行。...二、CommonJS出发点 CommonJS规范的提出,主要是为了弥补当前JavaScript没有标准的缺陷,已达到像Python、Ruby和Java具有开发大型应用的基础能力,而不是停留在小脚本程序阶段...CommonJS对模块的定义主要分为模块引用、模块定义和模块标识3个部分。 1. 模块定义 在CommonJS规范中,使用exports对象用于导出当前模块的方法或者变量,并且它是唯一导出的出口。...模块引用 在CommonJS规范中,使用require()方法接受模块标识,以此引入一个模块的API到当前上下文。同步加载!...Node能以一种较成熟的姿态出现,离不开CommonJS规范的影响。在服务器端,CommonJS能以一种寻常的姿态进入各个公司的项目代码中,离不开Node优异的表现。

54231

CommonJS

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

16910

CommonJS 详细介绍

CommonJS 试图定义一套普通应用程序使用的 API,从而填补 JavaScript 标准库过于简单的不足。...CommonJS 的终极目标是制定一个像 C++ 标准库一样的规范,使得基于 CommonJS API 的应用程序可以在不同的环境下运行,就像用 C++ 编写的应用程序可以使用不同的编译器和运行时函数库一样...对使用者来说,模块和包的区别是透明的,因此经常不作区分。 CommonJS 规范规定,每个模块内部,module 变量代表当前模块。...如果你觉得,exports 与 module.exports 之间的区别很难分清,一个简单的处理办法,就是放弃使用 exports,只使用 module.exports。...我们使用 npm 获取的包通常就是以这种方式加载的。 在 node_modules 目录的外面一层,外面可以直接使用 require('express') 来代替 require('.

1.1K20

读懂CommonJS的模块加载

如果一定腰在浏览器上使用CommonJs,那么就需要一些编译库,比如browserify来帮助哦我们将CommonJs编译成浏览器支持的语法,其实就是实现require和exports。...那么CommonJS可以用于那些方面呢?虽然CommonJS不能再浏览器中直接使用,但是nodejs可以基于CommonJS规范而实现的,亲儿子的感觉。...CommonJs模块和ES6模块的区别 使用场景 CommonJS因为关键字的局限性,因此大多用于服务器端。...,所以nodejs的服务器开发大家一般使用CommonJS规范来写。...CommonJS模块导入用require,导出用module.exports。导出的对象需注意,如果是静态值,而且非常量,后期可能会有所改动的,请使用函数动态获取,否则无法获取修改值。

1.3K30

聊聊CommonJS与ES6 Module的使用与区别

学了JS并且用过Node.js后,对模块化应该是有所了解和使用了,那么一定见过以下两种模块导入导出的方式 第一种: ES6 Module // B.js function show() { console.log.../B.js') bModule.show() // show方法被执行 以上两种导入导出方法涉及到了两种模块规范,分别是ES6 Module 、CommonJS 本文就来聊聊这两者之间的具体使用与区别...CommonJS CommonJS是2009年由JavaScript社区提出的包含了模块化的一个标准,后来被Node.js所采用并实现,也就是说我们在Node.js中用到的模块导入导出都是依照CommonJS...当需要使用到某个模块时,只需在文件中将目标模块导入即可 要想被其它模块导入首先需要导出需要向外暴露的变量或方法,在CommonJS中导出的语法有以下两种方式 // B.js // 定义了函数show function...console.log('show方法被调用') } let count = 3 export {show, count} 上述代码分了两种情况,且这两种写法是等价的 第一种是单个的变量或函数导出,只需要直接在开头使用

1.3K31

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

67320

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》。

69730

模块化-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

38530

Node基础-CommonJS模块化规范

->容易导致版本冲突 ->安装在全局的模块,不能基于CommonJS模块规范调取使用(也就是不能在JS中通过REQUIRE调取使用) [安装在本地的特点] 1.只能当前项目使用这个模块 ->不能直接的使用命令操作...(安装在全局可以使用命令) 为啥安装在全局下可以使用命令?...模块规范设计的,所以模块是NODE的组成 内置模块:NODE天生提供给JS调取使用的 第三方模块:别人写好的,我们可以基于NPM安装使用 自定义模块:自己创建一些模块 CommonJS模块化设计的思想(...) 2.CommonJS中可以允许模块中的方法互相的调用 B模块中想要调取A模块中的方法 =>A导出 =>B导入 [导出] CommonJS给每一个模块...CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。

62520
领券