node入门(二)

2018-06-26  本文已影响12人  萘小蒽

前端配置

1.node_modules目录

node定义了一个特殊的node_modules目录用于存放模块,例如某个模块的绝对路径是/home/user/hello.js,在该模块中是用require('foo/bar')方式加载模块时,则Node依次尝试使用以下路径。

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

往往我们npm下载时的模块都在这个目录里


2.包(package)

编译的模块或第三方模块,都有不同的依赖关系,往往复杂的模块又有不同的子模块组成。为了方便管理和修改操作,我们会把所有子模块放在同一个目录里。

在组成一个包的所有子模块中,需要一个入口模块,入口模块的导出对象被作为包的到处对象。例如以下目录结构。

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

其中car目录定义了一个包,其中包含了三个子模块。main.js作为入口模块,其中内容如下:

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

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

tips:index.js
以上,require('/home/user/lib/cat/main')能达到目的。
当我们把main.js模块的文件名替换成index.js,加载模块式可以使用模块所在的目录的路径替代模块文件路径。例如以下两条语句等价:

//两个都是引入的index模块
var cat  = require ('home/user/lib/cat');
var cat = require('home/user/lib/cat/index');

经过以上的操作,只需要传包路径给require函数,整个目录被当作单个模块使用,更有编译体验感。

3.package.json

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

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

其中packge.json内容如下。

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

这样就可以使用require('/home/user/lib/cat')的方式加载模块。node会根据包目录下的package.json招到入口模块所在位置。

上一篇 下一篇

猜你喜欢

热点阅读