9

有时我听说 CommonJS http://www.commonjs.org/是在努力创建一组模块化的 javascript 组件,但坦率地说,我从来没有理解过它。

我可以在哪里使用这些模块化组件?我在他们的主页上看不到太多内容。

4

3 回答 3

16

CommonJS 只是一个标准,它指定了一种模块化 JavaScript 的方式,因此 CommonJS 本身并不提供任何 JavaScript 库。

CommonJS 指定了一个require()函数,它允许导入模块然后使用它们,模块有一个特殊的全局变量命名exports,它是一个对象,它保存将要导出的东西。

// foo.js ---------------- Example Foo module
function Foo() {
    this.bla = function() {
        console.log('Hello World');
    }
}

exports.foo = Foo;

// myawesomeprogram.js ----------------------
var foo = require('./foo'); // './' will require the module relative
                            // in this case foo.js is in the same directory as this .js file
var test = new foo.Foo();
test.bla(); // logs 'Hello World'

Node.js 标准库和所有 3rd 方库都使用 CommonJS 来模块化他们的代码。

再举一个例子:

// require the http module from the standard library
var http = require('http'); // no './' will look up the require paths to find the module
var express = require('express'); // require the express.js framework (needs to be installed)
于 2010-11-25T23:16:38.763 回答
1

这个想法似乎(我不知道这一点)是为不仅仅是 Web 浏览器提供 javascript。例如,CouchDB支持 javascript 进行查询。

于 2010-11-25T23:16:49.153 回答
0

CommonJS 不是一个模块,它只是一个规范,它定义了两个 JavaScript 模块应该如何相互通信。该规范使用 exports 变量和 require 函数来定义模块将如何相互公开和使用。

为了实现 CommonJS 规范,我们有很多遵循 CommonJS 规范的开源 JS 框架。JS 加载器的一些示例是 systemJS、Webpack、RequireJS 等。下面是一个解释 CommonJS 的简单视频,它还演示了 systemJS 如何实现 common js 规范。

常见的 JS 视频:- https://www.youtube.com/watch?v=jN4IM5tp1SE

于 2017-02-09T18:34:44.167 回答