2.模块简介

模块

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值