继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

《Node与Express开发》学习笔记-第四章

路北
关注TA
已关注
手记 36
粉丝 90
获赞 327
4.4 npm包

包的存放位置
项目所依赖的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/

4.6 Node模块

前面主要讲解了如何管理包,接下来具体来看看如何使用包。

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开发过程中分而治之的开发思想。通过文件组织把文件一个一个的打碎分文别类的存放代码,然后通过模块化的管理机制再将打碎的代码组合起来。
虽然这一章讲的不是很具体很多更加高级的模块化技巧,最重要的要先建立起宏观的项目思维才能吸收好过多的细节。这也是这个书的魅力所在,后续作者会详细介绍这些细节。

打开App,阅读手记
5人推荐
发表评论
随时随地看视频慕课网APP

热门评论

var str = "string";


查看全部评论