模块(module)
--------------------------------
1. 在Node.js中,以模块为单位划分所有功能,并且提供了一个完整的模块加载机制,这时的我们可以将应用程序划分为各个不同的部分。
不可能用一个js文件去写全部的业务

2. 在 Nodejs 中每一个js文件都可以当成是一个模块,多个js文件之间可以通过require()来相互调用,实现一个共同的功能,这些js文件整体对外又可以当成一个模块。

3. Node.js中,一个JavaScript文件中定义的变量、函数,都只在这个文件内部有效。当需要从此JS文件外部引用这些变量、函数时,必须使用exports对象进行暴露。使用者要用require()命令引用这个JS文件。

4.一个JavaScript文件,可以向外exports无数个变量、函数。但是require的时候,仅仅需要require这个JS文件一次。使用的它的变量、函数的时候,用点语法即可

注意:
exports为一个空的对象 作用是向外暴露数据
require()函数接受收据,接受的数据即为exports对象
require()的时候可以不需要文件的后缀名,英文node默认识别js文件
在require函数中使用./的写法,表示到当前路径下去寻找相对应的文件,没有使用./表示在node_modules中寻找相对应的文件

5. 在nodejs中一般使用一个文件夹来管理模块,文件夹名为node_modules,
那么Node.js中在使用require命令时候将会去寻找node_modules目录下的相对应文件执行。

这样做的好处:分享项目的时候,不需要带着modules一起给别人。

6. node_modules文件夹并不一定在同级目录里面,在任何直接祖先级目录中,都可以

7. 可以使用文件夹来管理模块,比如 var bar = require("bar"); 那么Node.js将会去寻找node_modules目录下的bar文件夹中的index.js去执行。

每一个模块文件夹中,推荐都写一个package.json文件,这个文件的名字不能改。node将自动读取里面的配置。有一个main项,就是入口文件,package.json文件,要放到模块文件夹的根目录去。

---------------------------------------------------------------
npm 包管理工具

1. 模块就是一些功能的封装,所以一些成熟的、经常使用的功能,都有人封装成为了模块。并且放到了社区中,供人免费下载。
这个社区,叫做npm node package management

2. 官网 https://www.npmjs.com

3. 安装模块 npm install 模块名 模块名字全球唯一。 命令提示符的所在位置即为 模块的下载位置

安装依赖

1.我们的依赖包,可能在随时更新,我们永远想保持更新,或者某持某一个版本;
2.项目越来越大的时候,给别人看的时候,没有必要再次共享我们引用的第三方模块。

用package.json来管理依赖。
在cmd中,使用npm init可以初始化一个package.json文件,用回答问题的方式生成一个新的package.json文件。

npm 常用命令操作

npm init --yes # 快速初始化一个package.json文件
npm install 模块 # 安装一个模块
npm uninstall 模块 # 卸载一个模块

npm install 根据package.json来进行模块的下载

npm install 模块 --save 进行模块下载的时候同时生成一个安装依赖

#####
1.当使用require() 别的js文件的时候,会执行那个js文件

2.require()中的路径,是从当前这个js文件出发,找到别人。而fs是从命令提示符找到别人

3.在文件读取文件的时候建议使用绝对路径 采用__dirname

4.在开发过程中将从网上下载的模块放在node_modules中,自己开发的模块放在module文件夹中