代码的组织与部署


代码的组织与部署

一、模块路径解析规则

1.1 内置模块

内置模块。使用

require("fs");

1.2 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环境变量

用于指定NodeJs额外的模块搜索路径。linux下用:分隔,windows下使用;分隔。例如定义了以下NODE_PATH环境变量:

 NODE_PATH=/home/user/lib:/home/lib

当使用require(‘foo/bar’)的方式加载模块时,则NodeJS依次尝试以下路径。

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

二、包

2.1 index.js

我们可以把由多个子模块组成的大模块称做,并把所有子模块放在同一个目录里。

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

require(’/home/user/lib/cat/main’)就能达到目的。如果把main.js改为index.js可以像下面那样写。

// 感觉整个目录被当做单个模块使用
var cat = require('/home/user/lib/cat');
var cat = require('/home/user/lib/cat/index');

2.2 package.json

如果想自定义入口模块的文件名和存放位置,就需要在包目录下包含一个package.json文件,并在其中指定入口模块的路径。如路径

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

它的package.json可以这么写。

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

这样,就可以通过下面语句获取模块了。

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

三、工程目录

一个命令行程序为例,一般我们会同时提供命令行模式和API模式两种使用方式,并且我们会借助三方包来编写代码。除了代码外,一个完整的程序也应该有自己的文档和测试用例。因此,一个标准的工程目录都看起来像下边这样。

- /home/user/workspace/node-echo/   # 工程目录
    - bin/                          # 存放命令行相关代码
        node-echo
    + doc/                          # 存放文档
    - lib/                          # 存放API相关代码
        echo.js
    - node_modules/                 # 存放三方包
        + argv/
    + tests/                        # 存放测试用例
    package.json                    # 元数据文件
    README.md                       # 说明文件

记录命令行程序
地址

四、NPM

npm的应用场景。

  • 允许用户从NPM服务器下载别人编写的三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值