CommonJS 笔记

CommonJS 规范是什么?

在 ES6 之前 JavaScript 是没有模块的概念的,而 Python 有 import 机制,PHP 有 include 和 require 。CommonJS 有一个美好的愿景就是构建 JavaScript 的生态系统,让 JavaScript 也能够运用于 Web 服务器、桌面程序、命令行程序等,进而制定一系列的规范。而这只是一些理论,理论通常要通过实践,才能更好的推广,Node.js 借鉴了 CommonJS 的模块规范,所以 JavaScript 生态系统才变得繁荣。

模块(Modules)规范

每个文件都是一个模块,拥有独立的作用域,对其他文件是不可见的。

CommonJS 模块的定义有三点:

  • 模块定义

    // hello.js 文件
    module.exports = function (){
        console.log('hello CommonJS');
    }
    
  • 模块引用

    let hello = require('./hello');
    hello(); //  打印出 hello CommonJS
    
  • 模块标识

    模块标识其实就是传递给 require() 的参数,详细可以看下面 require() 小节。

image.png

Module 对象

Node.js 内部提供一个 Module 构建函数。所有模块都是 Module 的实例。在每个模块中,在文件中变量 module 是一个指向表示当前模块的对象的引用,所以 module.exports 也可以写成 exports,为什么可以这样写,因为 exports 等同于 var exports = module.exports

The exports variable is available within a module's file-level scope, and is assigned the value of module.exports before the module is evaluated.

参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,652评论 2 41
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    Myselfyan阅读 4,135评论 2 58
  • topics: 1.The Node.js philosophy 2.The reactor pattern 3....
    宫若石阅读 1,156评论 0 1
  • 大楼旁边有个自行车棚,车棚门口有个岗亭。这个岗亭不是空的,里面有人值班,就是严管这些自行车的阿姨们,工作的地方。 ...
    天空有云阅读 429评论 1 0
  • 2017.3.29 全脑表达沙盘内化(作者 @Thor, 畏东剑 ,高涵) 我和女朋友吵架了,吵得很凶,砸了各...
    幽默涵阅读 260评论 0 1