包的存放位置
项目所依赖的npm 包放在node_modules 目录
package.json
package.json 文件有双重作用:描述项目和列出依赖项。
{
"dependencies": {
"express": "^4.0.0",
"express3-handlebars": "^0.5.0"
}
}
dependencies 项目依赖的包
其中(^)这表明在下一个主要版本号之前,所有以指定版本号开始的版本都能用。
安装包的时候加上 --save命令会自动把下载的包添加到dependencies中。
npm install --save 包名
恢复包文件
npm install //会自动下载dependencies中的包
4.5 项目元数据
package.json
package.json 文件的另一个作用便是存放项目的元数据,比如项目名称、作者、授权信息等。
一般情况下通过 npm init 就可以更随提示进行配置。
如果项目放到npm或Github上的话就相对比较严格。
具体可参考:
https://www.npmjs.org/doc/files/package.json.html
README.md
这个文件很适合描述网站的整体架构,也适合于存放刚接触项目的人需要了解的重要信息。这个文件是用基于Markdown 的文本维基格式写成的。
Markdown 文档:
http://daringfireball.net/projects/markdown/
前面主要讲解了如何管理包,接下来具体来看看如何使用包。
Node模块和npm包的差异
Node模块提供了一个模块化和封装的机制。
npm 包则提供了一种存储、版本化和引用项目(不限于模块)的标准范式。
使用模块
var express = require('express');
在node代码中通过require引入需要的模块,这样就在代码中使用express了。
写一个自己的模块
创建一个模块
首先在项目目录中创建一个lib目录用于存放我们自己的模块。
在这个目录下创建一个fortune.js 文件:
var fortuneCookies = [
"Conquer your fears or they will conquer you.",
"Rivers need springs.",
"Do not fear what you don't know.",
"You will have a pleasant surprise.",
"Whenever possible, keep it simple.",
];
exports.getFortune = function() {
var idx = Math.floor(Math.random() * fortuneCookies.length);
return fortuneCookies[idx];
};
这个模块是一个封闭的作用域,主要作用是命名空间的管理防止各个文件代码间命名冲突问题。
node模块提供了一个借口 exports 可以把需要暴露出来的接口向外暴露出去。
加载模块
var fortune = require('./lib/fortune.js');
这里模块名前面多了个./,因为node模块会自动从node_modules 目录中
查找这个模块。加上相对路径后node知道这不是npm包,然后会根据路径去寻找这个模块。
这一章主要了解了node 是如何项目管理机制。
- 其中一个项目应该包含元数据信息也,就是项目的基本介绍。
- 项目的依赖关系。如何去使用别人写好的包。以及package.json 去描述我们的依赖包,已被以后管理和使用。
- 如何去写自己的模块和使用自己的模块。
这些都是node开发过程中分而治之的开发思想。通过文件组织把文件一个一个的打碎分文别类的存放代码,然后通过模块化的管理机制再将打碎的代码组合起来。
虽然这一章讲的不是很具体很多更加高级的模块化技巧,最重要的要先建立起宏观的项目思维才能吸收好过多的细节。这也是这个书的魅力所在,后续作者会详细介绍这些细节。
热门评论