Node.js

2020年7月19日 作者 张舫

Node.js的组成

  • javaScript 是由三部分组成 ECMAScript DOM BOM
  • Node.js 是由ECMAScript 及 Node环境提供的一些附加API组成的,包括文件,网络,路径等等一些强大的API
  • 在所有ECMAScript语法在Node环境中都可以使用

 

node.js全局对象global

  • 在浏览器中全局对象是window,在node中全局对象是global
  • node中全局对象下有以下方法,可以在任何地方使用,global可以使用

javaScript开发弊端

  • 文件依赖问题
  • 文件冲突问题

Nodejs模块化开发

  • 一个功能就是一个模块,多个模块可以组成完整的应用,抽离一个模块不会影响其他功能运行.
  • Node.js规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到
  • 模块内可以使用export对象进行成员导出,使用require方法导入其他模块

 

模块化开发案例

a.js

b.js

模块成员的另一种导出方式

什么是系统模块

Node运行环境提供的API,因为这些APi都是以模块的方式进行开发,所以我们又称Node运行环境提供的API为系统模块

系统模块fs文件操作

系统模块path路径操作

  • 不同的操作系统路径的分隔符不统一
  • windows上是 \/
  • linux上是 /

相对路径vs绝对路径

  • 大多数情况下使用绝对路径 , 因为相对路径有时候相对的是命令行工具的当前工作目录
  • 读取文件或者设置文件路径时都会选择绝对路径
  • 使用 __dirname获取当前文件所在的绝对位置

案例

什么是第三方模块

别人写好的,具有特定功能的,我们能直接使用的模块即第三方模块,由于第三方模块通常都是由多个文件组成并且被防止在一个文件夹中,所以又名包.

第三方模块既有两种存在形式:

  • 以js文件存在,提供实现项目具体功能的API接口
  • 以命令行工具形式存在,辅助项目开发

获取第三方模块

npm (node package manager):node的第三方模块管理工具

  • 下载:npm install 模块名称
  • 卸载:npm uninstall package 模块名称

如果选择包安装的方式

  • 命令行工具: 全局安装  -g
  • 库文件:本地安装

package.json文件

项目描述文件,记录了当前项目信息,例如项目名称 版本 作者 github地址,当前项目依赖了那些第三方模块等.使用 npm init -y命令生成

项目依赖

  • 在项目开发阶段和线上运营阶段,都需要的第三方包,称为项目依赖
  • 使用npm install 包名会默认被添加到package.json文件的 dependencies 字段中
  • npm install –production  使用这个命令安装线上环境的依赖

开发依赖

  • 在项目的开发阶段需要的依赖,向上运营阶段不需要依赖的第三方包,称为开发依赖
  • 使用 npm install 包名 –save-dev命令将包添加到package.json文件的devDependencies字段中

package-lock.json文件的作用

  • 锁定包版本,确保再次下载时不会因为包依赖而产生不同版本
  • 加快下载速度,因为改文件中已经记录项目所依赖第三方包的树张结构和包的下载地址,重新安装时只需下载即可,不需要做额外的工作

模块查找规则

1当模块拥有路径但没有后缀时

  • require方法根据模块路径查找模块,如果是完整路径直接引用模块
  • 如果模块后省略,先找同名js文件 ,再找同名文件夹,
  • 如果找到同名文件夹,再到文件夹中找index.js
  • 如果文件夹中没有index.js就会到当前所在文件夹中的package.js文件中(以当前案例为参考是./mode/add的package.js ),查找main选项中的入口文件.
  • 如果指定的文件不存在或者没有指定入口文件就会报错,模块没有找到

2.没有路径没有后缀时

  • 首先假设是系统模块,如果系统模块里没有
  • node.js会去node_modules文件夹中,先看有没有.js文件,再看是否有同名文件
  • 如果有文件看是否有index.js文件如果没有
  • 看改文件夹中package.json中的main字段来确定模块入口文件
  • 如果这都没有就保存