模块化的概念

一、什么是模块化

模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程,模块是可组合、分解和更换的单元

二、模块化的好处

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'