节点。js的模块知识汇总

  

在写节点。js应用程序的时候,你确实可以把所有代码放在巨大原指数。js文件中,不在乎你的应用程序会变得多大多复杂.Node。js解释器不会在意这个事情。但在代码组织方面,你很快就会陷入混乱,不能理解代码,而且难以调试。所以,作为一个人,你应该关心代码的结构。这就是使用模块的原因。

  

你可以把节点。js模块当作JavaScript库,是整体代码中你想放在一起的某个部分(比如,函数集),你会想把这部分代码相对独立于代码库中的其它部分,可以把事情区分清楚。

  

就们我们把袜子放在衣柜一个抽屉,把衬衣放在衣柜的另一个抽屉,我们可以把它们组成一天的着装,在代码库中,我们将不同的部分保存在不同的模块中,然后将它们有条不紊地合并成一个应用程序。

  

<强>内建模块

  

即使我们不创造任何节点。js模块,也有模块可用,因为节点。js环境提供了内建模块。我们已经遇到过一个模块,就是在博客中寻找如何使用内建的SHATWG URL解析器的时候。

  

在我们自己的代码文件中,我们需要使用已经存在但是在别处声明的代码——这种情况下,URL类是节点。js内置模块url中的一部分。
  

        var URL=要求(URL) .URL;   之前      

要求(url)让我们可以访问url模块。这个模块定义在哪里,是怎么定义的,对我们来说完全不透明,我们所需要知道的只是它的名称,url,以及它公开的属性,比如url。

  

其它内建的模块直接导出我们需要的属性(通常是JavaScript对象)。以http模块为例:
  

        var http=要求(“http”);      http。res createServer(函数(点播){   res.writeHead(200年,{“内容类型”:“text/html”});   res.end (“Hello World !”);   }).listen (8080);            之前      

这里,请求http模块让我们可以直接访问http对象,我们可以直接使用其方法,比如createServer。

  

节点初学者这本书讲述了如何使用节点。js写一个完整的Web服务器,它就是使用的内建http模块。

  

<强>外部模块

  

内建模块随节点。js发布,它可以解决很多开发问题,而不需要为每个应用发明新的轮子,但是真正促进节点。js编程能力的是由来自节点。js社区的开源模块构建起来的庞大生态系统。这些模块也可以集成到我们的代码库中,但是由于它们不是内置的,并且不会随每次安装节点。js一起安装,所以只在是我们的代码中要求是不够的。我们需要先安装包含外部模块的代码库,由于NPM,节点包管理器(节点包管理器)的存在,这很容易。

  

请参博客文章,它以如何使用异步库为例来介绍如何使用外部模块。

  

此外,节点工匠书还使用了一个章节来介绍了使用NPM的细节。

  

<>强创建你自己的模块

  

内建模块和外部模块都是别人提供的,但它们不会妨碍你创建自己的节点。js模块。

  

下面的例子创建了一个名为myRandom的模块,它会提供了一个辅助函数,用于返回0到10之间的数。

  

文件myRandom。js:
  

        函数getRandom(最小,最大){   返回math . random() *(最大值-最小值)+分钟;   }      出口。between1and10=function () {   返回getRandom (10);   };            之前      

你应该把代码放在自己的myRandom.js文件中。由于此文件存在,并通过出口向外提供属性,另一个文件index.js可以使用导出的功能:

  

文件索引。js:
  

        var myRandom=要求('/myRandom.js。');      console.log (myRandom.between1and10 ());            之前      

需要再次发挥作用,它让本地myRandom模块中导出的属性生效——在这里是指between1and10函数。

  

注意:虽然模块系统允许公开模块的功能,但它也允许隐藏在模块之外不会用到的功能,只要不通过出口导出就好。即使index.js文件请求了myRandom。js文件,它也不能访问未导出的getRandom函数:
  

        var myRandom=要求('/myRandom.js。');      console.log (myRandom。getRandom (99));   之前      

这会导致TypeError: myRandom。getRandom不是函数。

  

通过将实现细节隐藏在模块中,只暴露出需要在其它代码中使用的部分,可以很好的组织你的代码。

节点。js的模块知识汇总