有时我听说 CommonJS http://www.commonjs.org/是在努力创建一组模块化的 javascript 组件,但坦率地说,我从来没有理解过它。
我可以在哪里使用这些模块化组件?我在他们的主页上看不到太多内容。
有时我听说 CommonJS http://www.commonjs.org/是在努力创建一组模块化的 javascript 组件,但坦率地说,我从来没有理解过它。
我可以在哪里使用这些模块化组件?我在他们的主页上看不到太多内容。
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)
这个想法似乎(我不知道这一点)是为不仅仅是 Web 浏览器提供 javascript。例如,CouchDB支持 javascript 进行查询。
CommonJS 不是一个模块,它只是一个规范,它定义了两个 JavaScript 模块应该如何相互通信。该规范使用 exports 变量和 require 函数来定义模块将如何相互公开和使用。
为了实现 CommonJS 规范,我们有很多遵循 CommonJS 规范的开源 JS 框架。JS 加载器的一些示例是 systemJS、Webpack、RequireJS 等。下面是一个解释 CommonJS 的简单视频,它还演示了 systemJS 如何实现 common js 规范。
常见的 JS 视频:- https://www.youtube.com/watch?v=jN4IM5tp1SE