Nodejs核心模块与模块化的一些笔记

2020/01/07 Nodejs Notes

想要熟练掌握Node.js则必须熟悉Node为JavaScript提供的服务器层级的API。这些API绝大多数都被包装在一些具名的核心模块里。例如文件操作的fs核心模块,http服务构建的http模块,path路径操作模块,os操作系统信息模块等等……

核心模块

Node提供的模块一般称为核心模块。这些模块必须先使用require方法加载后才能使用:

var fs = require("fs");
var http = require("http");

用户自定义模块

  • 同样需要使用require方法进行加载,使用相对路径或者绝对路径。如果使用相对路径需要加上“./”来表示此模块是用户自定义模块,而不是Node提供的核心模块。

  • 在Node中,没有全局作用域,只存在模块作用域。(模块互相默认封闭)

  • 在Node中,require方法有两个作用,一个是加载文件模块并执行代码,二是拿到被加载文件模块导出的接口对象。在每个文件模块中都提供了一个对象:exportsexports默认是一个空对象。所有需要被外部访问的成员挂载在exports上。

      var foo = function(request, response) {
          console.log(request);
          console.log(response);
      }
    
      exports.foo = foo;
    

模块系统简要总结

  • 在Node中没有全局作用域的概念。

  • 在Node中,只能通过require方法来加载执行多个JavaScript的脚本文件。

  • require加载只能是执行代码,文件与文件之间由于是模块作用域,所以不会有代码污染的问题。
    • 模块完全是封闭的。
    • 外部无法访问内部。
    • 内部也无法访问外部。
    • 避免变量命名冲突污染的问题。
  • 模块之间需要通信时,使用require方法和exports对象来完成。exports默认是一个空对象,需要将被外部访问使用的成员手动挂载在exports接口对象上。

Search

    Table of Contents