模块化的基本概念
编程中的模块化 及 模块化拆分的好处:
模块化规范:
node中的模块分类:
node的 加载模块:
使用require()
方法
注:
只有加载用户自定义模块时,需要写路径
,其他的都只需要写名称
即可
使用require
加载其他模块(其他js)时,会执行其中的代码
执行:
**注:**使用require
加载 自定义模块,可省略.js后缀名
node中的模块作用域
就是访问不了模块中定义的变量和方法
作用域的好处:
防止变量污染
向外共享 模块作用域 中的成员
module
对象
通过module
对象中的 exports
输出
每个自定义模块中都会有一个module
对象
module.exports
对象:
是当前模块对外的一个出口
例子:
结果为空对象
因为11.自定义模块.js内没有任何代码(没有exports),所以模块作用域
module.exports使用例子:
共享成员的注意点
永远以module.exports指向的对象为准
exports对象
默认情况下 module.exports
和exports
指向同一个对象
怎么证明两个默认是指向同一对象:
使用exports输出例子:
注:
无论是exports
还是module.exports
,结果都以module.exports
指向的对象为准
注:
输出sayHello
为方法时,打印出来的是【Function】(exports.sayHello赋值为function())
exports写法相对简单
exports和module.exports的使用误区
require()
模块时,永远以module.exports
指向的对象为准
注:
如果先声明过exports
,再次声明module.exports
(不是module.exports.xxx
直接挂载,而是module.exports={}
),输出结果为module.exports
所声明的新对象
例子:
注:
exports
和module.exports
的使用误区例子
把exoprts
指向的对象赋值给了module.exports
的结果:
会把module.exports
指向对象替换成exports
指向的对象
注:
为了防止混乱,建议不要在同一个模块中同时使用exports
和module.exports
,以防混淆
node中的模块化规范
npm与包
第三方模块又叫做包
包的来源
为什么需要包
注:
包是基于内置模块封装出来的,没有内置模块就不会有第三方模块(包)
从哪里下载包
https://www.npmjs.com
怎么下包
初次装包后 多了哪些文件
包的信息会记录在package-lock.json中的dependencies中
注:
不要去手动修改node_modules
和package-lock.json
中的任何代码,npm
包管理器会自动维护它们
安装指定版本的包
@
符号
发现包版本不对,直接npm i xxx@版本号
,重新安装即可
包的 语义话版本规范
提升规则:第一位增长,第二和第三位数字都变为0,第二位数字增长,第三位就变为0
包管理配置文件
package.json
(必须在项目根目录下)
多人协作问题(git上传去除node_modules)
添加到gitigonre
忽略文件中
快速创建package.json
第一次npm init -y
注:
项目名称不能包含空格和中文
否则 npm init -y
命令会报错
dependencies节点
记录使用了哪些包
注:
刚创建时没有,在npm install
以后就会出现
一次性安装所有的包
卸载包
npm uninstall
卸载指定包
npm uninstall xxx
devDepndencies节点
只在开发阶段
会用到,包建议记录到dev Dependencies
节点中
开发
和上线后
都会用到,建议把包记录到dependencies
节点中
怎么记录到devDependencies
?
npm i 包名 -D
注:
- -save-dev
可以简写成-D
解决小包速度慢的问题
默认从国外服务器上下包,需要通过海底光缆,所以慢
解决方法:使用淘宝镜像
如何切换npm的下包镜像源
注:下包镜像源,就是下包的服务器地址
默认下载地址是官方地址:https://registry.npmjs.org/
nrm
用来快速切换和查看下包的镜像源
用的最多的一版就是淘宝的服务器和npmjs官网的服务器地址
nrm
切换要用use
包的分类
1.项目包
被安装到node_modules
目录中的包
项目包分两类:记录到devDependenices
中的包和记录在dependenices
中的包
开发依赖包和核心依赖包
全局包
全局安装或全局下载 -g
注:
是否要加-g
在npmjs
官方网站中会体现出来
先去官网搜索,比如nrm,再点入nrm中,下拉到install,即会体现(一般用-g的都是工具性质的包)
i5ting_toc
注:把md文档转为html页面的小工具
-f 文件名(转换指定文件),tab键自动补齐文件名,-o默认浏览器中打开
注:md就是markdown文件
规范的包结构
发布包
1.注册npm
账号
2.登陆npm账号
注:这里指的登陆不是npm网站上的登陆,而是终端运行npm login
命令
注:运行npm login
命令时,下包服务器的地址一定要切换为npm官方地址,否则会导致发布包失败
建议可以先使用nrm ls
命令查看当前服务器地址
星号代表当前服务器地址
把包发布到npm上
包使用 cd 文件夹名
切换到包根目录
再运行npm publish
命令
删除已发布的包
注:npm unpublish
只能删除72
小时以内的包,删除的包24
小时以内不允许重复发布