>

js基于模块和包的代码部署方式

- 编辑:正版管家婆马报彩图 -

js基于模块和包的代码部署方式

模块路线分析法则

分析Node.js基于模块和包的代码安排方式,node.js安顿

模块路线深入分析准则

有经验的 C 程序猿在编排三个新程序时首先从 make 文件写起。同样的,使用 NodeJS 编写程序前,为了有个出色的起来,首先供给计划好代码的目录结商谈布局方式,就就如修房屋要先搭脚手架。本章将介绍与之有关的各种文化。

模块路线剖析准则 大家已经明白,require函数帮助斜杠(/)或盘符(C:)先导的相对路线,也匡助./伊始的相对路线。但那三种路子在模块之间确立了强耦合关系,一旦某些模块文件的存放地点供给改造,使用该模块的别的模块的代码也急需随着调治,变得牵一发动全身。由此,require函数匡助第两种样式的路子,写法类似于foo/bar,并一一根据以下法规深入分析路线,直到找到模块地点。

放到模块

一经传递给 require 函数的是 NodeJS 内置模块名称,不做路线深入分析,直接回到内部模块的导出对象,例如require('fs')。

node_modules 目录

NodeJS 定义了三个古怪的 node_modules 目录用于寄存模块。举例有些模块的相对路线是 /home/user/hello.js,在该模块中利用 require('foo/bar') 方式加载模块时,则 NodeJS 依次尝试使用以下门路。

 /home/user/node_modules/foo/bar
 /home/node_modules/foo/bar
 /node_modules/foo/bar

NODE_PATH 碰到变量

与 PATH 情状变量邻近,NodeJS 允许通过 NODE_PATH 景况变量来钦点额外的模块寻觅路线。NODE_PATH 情形变量中富含一到五个目录路线,路线之间在 Linux 下采用:分隔,在 Windows 下使用;分隔。比方定义了以下 NODE_PATH 意况变量:

 NODE_PATH=/home/user/lib:/home/lib
当使用 require('foo/bar')的办法加载模块时,则 NodeJS 依次尝试以下渠道。

 /home/user/lib/foo/bar
 /home/lib/foo/bar

笔者们早已知晓了 JS 模块的为主单位是单个 JS 文件,但复杂些的模块往往由五个子模块组成。为了便于管理和行使,大家能够把由八个子模块组成的大模块称做包,并把全部子模块放在同多个目录里。

在组成三个包的全数子模块中,须要有叁个入口模块,入口模块的导出对象被看做包的导出对象。比方有以下目录结构。

- /home/user/lib/
  - cat/
    head.js
    body.js
    main.js

其中 cat 目录定义了三个包,个中积存了 3 个子模块。main.js 作为入口模块,其内容如下:

var head = require('./head');
var body = require('./body');

exports.create = function (name) {
  return {
    name: name,
    head: head.create(),
    body: body.create()
  };
};

在别的模块里采用包的时候,必要加载包的输入模块。接着上例,使用 require('/home/user/lib/cat/main')能落得指标,但是进口模块名称出现在路子里看起来不是个好主意。由此我们必要做点额外的做事,让包使用起来更疑似单个模块。

index.js 当模块的文本名是 index.js,加载模块时得以采取模块所在目录的路子取代模块文件路线,由此接着上例,以下两条语句等价。

var cat = require('/home/user/lib/cat');
var cat = require('/home/user/lib/cat/index');

那样处理后,就只须求把包目录路径传递给 require 函数,感到上全体目录被作为单个模块使用,更有全部感。

package.json 假定想自定义入口模块的公文名和贮存地方,就须求在包目录下饱含多个package.json 文件,并在里头钦赐入口模块的门径。上例中的 cat 模块能够重构如下。

- /home/user/lib/
  - cat/
    + doc/
    - lib/
      head.js
      body.js
      main.js
    + tests/
    package.json

在那之中package.json内容如下。

{
  "name": "cat",
  "main": "./lib/main.js"
}

如此一来,就同一能够应用 require('/home/user/lib/cat')的章程加载模块。NodeJS 会依据包目录下的 package.json 找到入口模块所在地点。

有经验的 C 技术员在编辑三个新程序时首先从 make 文件写起。同样的,使用 NodeJS 编写程序前,为了有个美好的发端,首先须要企图好代码的目录结交涉配置形式,就犹如修房屋要先搭脚手架。本章将介绍与之毛将焉附互为表里的各类知识。

你恐怕感兴趣的文章:

  • 选用npm宣布Node.JS程序包教程
  • node.js使用npm 安装插件时提示install Error: ENOENT报错的化解格局
  • nodejs npm package.json汉语文档
  • Node.js安装教程和NPM包处理器使用详解
  • 自作者的Node.js学习之路(二)NPM模块管理
  • nodejs npm包管理的布局格局及常用命令介绍
  • nodejs npm install全局安装和本地安装的区分
  • Node.js生成HttpStatusCode帮助类公布到npm
  • 在linux中使用包管理器安装node.js
  • 详解Node.js包的工程目录与NPM包管理器的采纳

模块路径分析法规 有经验的 C 技师在编排一个新程序时首先从 make 文件写起。同样的...

模块路径解析法规 我们已经驾驭,require函数协助斜杠(/)或盘符(C:)伊始的相对路线,也帮助./起先的相对路线。但那三种渠道在模块之间创建了强耦合关系,一旦有些模块文件的存放地方须求改变,使用该模块的任何模块的代码也急需随着调节,变得牵一发动全身。由此,require函数援助第二种情势的门路,写法类似于foo/bar,并逐条依据以下法规深入分析路线,直到找到模块地点。

置于模块

若是传递给 require 函数的是 NodeJS 内置模块名称,不做路线剖判,直接回到内部模块的导出对象,比如require('fs')。

node_modules 目录

NodeJS 定义了三个区别经常的 node_modules 目录用于寄存模块。举个例子有个别模块的相对路线是 /home/user/hello.js,在该模块中利用 require('foo/bar') 方式加载模块时,则 NodeJS 依次尝试使用以下路子。

 /home/user/node_modules/foo/bar
 /home/node_modules/foo/bar
 /node_modules/foo/bar

NODE_PATH 景况变量

与 PATH 景况变量类似,NodeJS 允许通过 NODE_PATH 情形变量来钦命额外的模块找出路线。NODE_PATH 情况变量中满含一到五个目录路线,路线之间在 Linux 下选取:分隔,在 Windows 下使用;分隔。举例定义了以下 NODE_PATH 情状变量:

 NODE_PATH=/home/user/lib:/home/lib
当使用 require('foo/bar')的措施加载模块时,则 NodeJS 依次尝试以下门路。

 /home/user/lib/foo/bar
 /home/lib/foo/bar

笔者们早已清楚了 JS 模块的基本单位是单个 JS 文件,但复杂些的模块往往由多少个子模块组成。为了便于管理和行使,大家能够把由多个子模块组成的大模块称做包,并把全部子模块放在同叁个目录里。

在组成二个包的全数子模块中,须要有三个进口模块,入口模块的导出对象被用作包的导出对象。比如有以下目录结构。

- /home/user/lib/
  - cat/
    head.js
    body.js
    main.js

个中 cat 目录定义了贰个包,当中蕴藏了 3 个子模块。main.js 作为入口模块,其内容如下:

var head = require('./head');
var body = require('./body');

exports.create = function (name) {
  return {
    name: name,
    head: head.create(),
    body: body.create()
  };
};

在别的模块里使用包的时候,要求加载包的进口模块。接着上例,使用 require('/home/user/lib/cat/main')能落得目的,然则进口模块名称出现在路子里看起来不是个好主意。因而大家供给做点额外的干活,让包使用起来更疑似单个模块。

index.js 当模块的文本名是 index.js,加载模块时方可接纳模块所在目录的路子取代模块文件路线,因而接着上例,以下两条语句等价。

var cat = require('/home/user/lib/cat');
var cat = require('/home/user/lib/cat/index');

诸有此类处理后,就只供给把包目录路线传递给 require 函数,感到上全部目录被看成单个模块使用,更有全部感。

package.json 倘诺想自定义入口模块的文本名和贮存地点,就必要在包目录下包罗二个package.json 文件,并在里面钦命入口模块的路径。上例中的 cat 模块能够重构如下。

- /home/user/lib/
  - cat/
    + doc/
    - lib/
      head.js
      body.js
      main.js
    + tests/
    package.json

其间package.json内容如下。

{
  "name": "cat",
  "main": "./lib/main.js"
}

如此一来,就同样能够运用 require('/home/user/lib/cat')的主意加载模块。NodeJS 会依据包目录下的 package.json 找到入口模块所在地方。

你只怕感兴趣的篇章:

  • 利用OpenVSwitch在多台主机上配备Docker的教程
  • 在Docker上起来布局Python应用的课程
  • 在Docker上配备Python的Flask框架的科目
  • 在Docker中自动化布署Ruby on Rails的教程
  • 行使Docker来加速塑造Android应用的中央配置思路分析
  • 依靠NodeJS的光景端分离的想想与试行(六)Nginx + Node.js + Java 的软件栈布置执行
  • 教您在heroku云平台上配置Node.js应用
  • 一行命令消除node.js 版本进级
  • 跟小编学Nodejs(一)--- Node.js简单介绍及安装开采条件
  • 在Docker火速安排Node.js应用的详实步骤

本文由网络计算发布,转载请注明来源:js基于模块和包的代码部署方式