模块化的概念
一、什么是模块化
模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程,模块是可组合、分解和更换的单元
二、模块化的好处
1、提高了代码的复用性
2、提高了代码的可维护性
3、可以实现按需加载
三、模块化规范
1、模块化规范就是对代码进行模块化的拆分与组合时,需要遵守的规范
2、模块化好处是大家都遵守同样的模块化规范写代码,大大降低了沟通的成本
模块化分类
内置模块:由Node.js官方提供,例如:fs、path、http
自定义模块:用户创建的js模块
第三方模块:由第三方开发出来的模块,需要下载使用
require():可以引入模块
模块化作用域和module
模块作用域
和函数作用域类似,每个模块定义的变量、方法只能在当前模块内被访问,这叫做模块作用域
模块作用域的好处
防止了全局变量的污染
module
1、每个js文件都有一个module对象,里面存储了和当前模块有关的信息
2、在自定义模块中,可以使用module.exports对象,将模块共享出去,供外界使用
3、外界使用require()方法导入自定义模块时,得到的就是module.exports对象,并且导入的对象永远以module.exports对象为准
module.exports和exports
为了简化向外共享的代码,Node提供了exports对象,默认module.exports和exports指向同一个对象,最终共享情况,以module.exports为准
包与npm
查找包:https://www.npmjs.com
下载包:https://registry.npmjs.org
如何下载包
1、通过包管理工具npm下载包
2、命令:npm install/i
有关包的一些注意事项
1、初次装包之后,文件夹多了一个node_modules文件夹和package-lock.json文件
2、package.json使用命令行npm init -y生成
3、包的版本一共有三位数字,第一位大版本,第二位功能版本,第三位bug修复
4、npm使用-D下载开发依赖包
5、npm使用-g安装全局包,在硬盘的某个目录下
解决下包慢的问题
下载慢的原因?
默认是从国外https://registry.npmjs.org地址下载的,所以很慢
解决下载慢的原因
1、可以设置镜像
2、查看当前下包源:npm config get registry
3、将下包源切换为淘宝:npm config set registry=https://registry.npm.taobao.org
4、为了更方便的切换镜像源可以下载一个工具nrm
4.1、npm i nrm -g
4.2、查看镜像源:nrm ls
4.3、切换镜像源:nrm use 镜像名字
npm发布包流程
1、在npm | Home注册自己的账号
2、准备自己的项目,项目包括入口文件,即在package.json中配置的main路径、README.md、核心代码
3、npm login登录自己的npm账号
4、npm publish发布自己的包
模块加载机制
1、模块在第一次被加载后会被缓存,这也意味着多次调用require()不会导致模块的代码被多次执行
2、如果在用require()引入时省略后缀名字,node会按照顺序加载下面文件,
2.1、确切的文件名
2.2、补全.js后缀加载
2.3、补全.json后缀加载
2.4、补全.node后缀加载
2.5、加载失败,终端报错
3、当用require()引入时,首先会先找main入口,如果没有配置,会找目录下的index.js,如果上述两个步骤都找不到,会报:Error:Cannot find module 'xxx'