nodeJs中的模块化

为什么要学习模块化?

    首先要明确:模块化:一个js文件中可以引入另一个js文件的数据。

这个特点是很基础的要求,只要是编程语言都有。而js2015年之前没有;js没有(疼点:多个js都放在一个html文件,而不用相互引用),2015年出了ES6。在语法层面就支持模块化,但是浏览器不支持,所有前面学习传统开发时,还是多个js都放在一个html文件

浏览器不支持,可以:

1.先用开发工具(wepack)搭建一个支持模块化的环境

2.在这个环境中写模块化代码

3.用工具打包打包代码,然后在浏览器中运行

nodeJS和浏览器?

相同点:都是JS代码的运行环境

nodeJS环境是支持模块化的

3.nodejs中的模块化

导出:module.exports ,exports

导入: 自定义模块: const xxx=require(模块文件中的相对位置)

内置模块 :const xxx=require(模块的名字)

第三方模块:const xxx=require(模块的名字)

1. 概念:模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程,对于整个系统来说,模块是可组合,分解和跟换的单元。

2.编程领域中的模块化

编程领域中的模块化,是把一个大文件拆成独立并互相依赖的多个小模块

3.模块的三大类

1.内置模块

由于 Node.js官方提供

2.自定义模块

自己创建的js文件

3.第三方模块

要去官网进行下载

4.require() 函数加载模块

  1. 作用:使用require()方法加载其它模块时,会执行被加载模块中的代码

      注意:在使用require加载用户自定义模块期间,可以省 .js的后缀名 

// yourModule.js    
exports = 1

//index.js
const yourModule = require('./yourModule');
console.log(yourModule)

返回的是一个空的对象   

// yourModule.js    
exports = {a : 1 };

//index.js
const yourModule = require('./yourModule');
console.log(yourModule)

返回的也是一个空的对象

5. 模块作用域

     1. 定义:和函数作用域类似,在自定义模块中定义的变量,方法等成员,只能在当前模块内被访问,叫做模块作用域

     2.好处:防止了全局变量的污染的问题

     3. 例子:变量污染,一个html,引入两个js文件导入 一个js,导入两个js文件

6..module对象

1.概念:

在每一个.js自定义模块都有一个module对象,它里面存储了和当前模块有关的信息。

在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用。

外界用require()方法导入自定义模块时,得到的就是module.exports所指向的对象。

module.exports 默认指向的是一个空的对象。

2.注意点:

使用require()方法导入模块时,导入的结果,永远以module.exports指向的对象为准  

 

3.exports对象

 概念: exports和module.exports 指向的是同一个对象

   注意点:    require()模块最终的指向是module.exports

                   为了防止混乱,建议大家不要在同一个模块中使用exports 和 module.exports

                    module.exports 使用的比较多 一般情况下, 使用 exports 看懂别人的代码 

7.CommonJS规定:

定义:Node.js遵循了CommonJS模块化规范,CommonJS规定了模块的特性和各模块之间如何相互依赖

CommonJS规定:

1.每个模块内部,module变量代表当前模块的module.exports属性,require()方法用于加载模块

2.module变量是一个对象,它的exports属性(即module.exports)是对外的接口

3.加载某个模块,其实是加载该模块的module.exports

8.关于包

1.定义:Node.js中的第三方模块又叫包

2.包是由第三方个人或团队开发出来的,免费供所有人使用

3.为什么需要包?

由于Node.js的内置模块提供了一些底层的APi,导致在基于内置模块进行项目开发时

包是基于内置模块封装出来的,极大地提高了开发效率

4.包的搜索和下载

搜索包:

 下载包:

  npm -v 查看自己电脑上的所安装npm的版本号

5.在项目中的安装包

语法:

1.npm install 包的完整名称 简写 npm i 完整的名称 

列如: npm i moment

2.案例

// 1.导入需要的包
const moment = require('moment')
const dt = moment().format('YYYY-MM-DD HH:mm:ss');
console.log(dt); (网站不在维护)

const moment = require('dayjs')
const dt = moment().format('YYYY-MM-DD HH:mm:ss');
console.log(dt)的使用;(dayjs)

6.下载指定版本的包

语法: npm i moment @ 版本号

第1位数字:大版本

第2位数字:功能版本

第3位数字:Bug修复版本

版本号提示的规则: 只要前面的版本号增长了,则后面的版本号归零

7.安装包 ,删除包

  1.安装指定文件的包

  npm i 包的名字

 2. 安装所有的包

    npm i

3.删除包

  1. 命令:npm uninstall 命令来卸载指定的包

  2. npm uninstall命令执行完成后,会把卸载的包,自动从package.json的dependencies中 移除掉。

    3.devDependencies 在项目开发阶段会用到,在项目上线不会用到

格式: npm i 包名 -D

9.node_modules的文件夹 和package-lock.json的配置文件

 作用:

node_modules的文件夹 用来存放所有安装到项目中的包,require()导入第三方包时,就是从这个目录中查找并加载包

package-lock.json 配置文件用来记录 node_modules目录的每一个包的下载信息,列如包的名字,版本号,下载地址

        

 

10.包管理配置文件(package.json)

定义: npm规定,在项目根目录中,必须提供一个叫package.jsond的包管理配置文件,用来记录与项目相关的一些配置

今后在项目开发中,一定要把node _modules 文件夹,添加到.gitgnore 忽去文件

npm init -y 可以在项目中创建一个package.json文件

1.注意事项 路径不能包含中文和空格

2.npm init -y默认所有的选项 ,可以进行修改 (没有加y需要一个个进行配置)

3.dependcies节点

11.如何解决下载包慢的问题

淘宝NPM镜像服务器

1.每隔一段时间,自动把npm 官方服务器的包同步到国内

官方服务器的包同步到国内

  1. 下包的镜像源,指的就是下包的服务器地址

    指令

    查看当前的下包镜像源

    npm config ger registrt

    2.将下包的镜像源切换为淘宝镜像源

    npm config ger set registrt=http://registry.npm.taobao.org/

    检查镜像源是否下载成功

    npm config get registry

 

为了更方便的切换下包的镜像源,可以安装nrm这个小工具,利用nrm提供的终端命令,可以快速查看和切换下包的镜像源

通过npm包管理器,将nrm安装为全局可用的工具

npm i nrm -g

查看所有可用的镜像源

nrm ls

将下包的镜像源切换为taobao 镜像

nrm use taobao

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值