模块
1.模块的导入与导出
1.导入模块require
index1.js
//在没有任何内容导出去的情况下获取某个文件的内容,会得到一个空对象
let a=require("./index2.js");
//require获取文件时可以不加后缀名,默认后缀名是js
console.log(a); //结果:{}
2.导出模块exports与module
index2.js
let a=123;
let b=456;
//exports就是默认导出的对象
exports.a=a;
//再次运行index1.js得到结果:{ a:123 }
//module.exports导出
module.exports.b=b;
//再次运行index1.js得到结果:{ a:123,b:456 }
//说明系统默认设置了:exports=module.exports
//最后导出的结果由modulde.exports决定,如下
exports={ user:'小明' }
//再次运行index1.js得到结果:{ a:123,b:456 }
module.exports={ user:'小明' }
//再次运行index1.js得到结果:{ user:'小明' }
//因此:
//在使用exports时,只能单个设置属性exports.a=a
//使用module.exports时,可以单个设置属性,也可以整个赋值
2.模块的初始化
一个模块中的js代码在模块第一次被使用时执行一次
,在使用的过程中进行初始化,之后缓存起来便于后续继续使用。
假设index1.js输出的结果是{ user:‘小明’ },修改index1.js的代码
let a=require("./index2.js");
let b=require("./index2.js");
console.log(a==b);
//输出结果是true,说明模块只导出了一次
3.第三方模块的下载与导入
1.下载
Node.js中使用CommonJs
模块化机制,通过npm
下载的第三方包
npm install ['第三方包']
2.导入
let $=require('jquery');
console.log($);
//结果是:[ function ],说明导入第三方包成功
原理:
1.优先在加载该包的模块的同级目录node_modules
中查找第三方包。
2.如果找到了,找包中的package.json文件,并且找到里面的main属性对应的入口模块
,该入口模块即为加载的第三方模块。
3.如果没有找到package.json文件或者package.json文件中没有main属性,默认加载第三方包中的index.js
文件。
4.如果在加载第三方模块的同级目录没有找到node_modules文件,或者以上所有情况都没有找到,则会向上一级父目录
下查找node_modules文件夹,规则如上。
5如果依照找到该模块的磁盘根路径都没找到
,会报错:can not find module xxx
3.总结
1.Node中每个模块都有一个module
对象,module
对象中的有一个exports
属性为一个接口对象,我们需要把模块之间公共的方法或属性挂载在这个接口对象中,方便其他的模块使用这些公共的方法或属性。
2.Node中每个模块的最后,都会return: module.exports
。
3.Node中每个模块都会把module.exports
指向的对象赋值给一个变量exports
,也就是说:exports = module.exports
。
4.module.exports = XXX
,表示当前模块导出一个单一成员,结果就是XXX。
5.如果需要导出多个成员时必须使用exports.add = XXX; exports.foo = XXX;
或者使用module.exports.add = XXX; module.export.foo = XXX;
。
4.npm的常用命令
npm英文全称:node package manager,npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门。它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(package) (即,代码模块)。来自各大洲的开源软件开发者使用 npm 互相分享和借鉴。包的结构使您能够轻松跟踪依赖项和版本。 我们平时开发项目都是需要使用npm下载依赖,常见的npm命令总结如下:
1.npm -v:
查看npm版本。
2.npm init:
初始化后会出现一个package.json配置文件。可以在后面加上-y ,快速跳过问答式界面。
3.npm install:
会根据项目中的package.json文件自动下载项目所需的全部依赖。
4.npm install 包名 --save-dev(npm install包名-D):安装的包只用于开发环境,不用于生产环境,会出现在package.json文件中的devDependencies属性中。
5.npm install 包名 --save(npm install 包名 -S):
安装的包需要发布到生产环境的,会出现在package.json文件中的dependencies属性中。
6.npm list:
查看当前目录下已安装的node包。
7.npm list -g:
查看全局已经安装过的node包。
8.npm --help:
查看npm帮助命令。
9.npm update 包名:
更新指定包。
10.npm uninstall 包名:
卸载指定包。
11.npm config list:
查看配置信息。
12.npm 指定命令 --help:
查看指定命令的帮助。
13.npm info 指定包名:
查看远程npm上指定包的所有版本信息。
14.npm config set registry https://registry.npm.taobao.org:
修改包下载源,此例修改为了淘宝镜像。
15.npm root:
查看当前包的安装路径。
16.npm root -g:
查看全局的包的安装路径。
17.npm ls 包名:
查看本地安装的指定包及版本信息,没有显示empty。
18.npm ls 包名 -g:
查看全局安装的指定包及版本信息,没有显示empty。