前端配置
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
招到入口模块所在位置。
网友评论