NodeJS 基本概念精简
什么是NodeJS
官方说法:
NodeJS是一个基于Chrome V8引擎的JavaScript运行环境
Node使用事件驱动,以及非阻塞的I/O式模型使其轻量又高校;
NodeJS的npm是全球最大的包管理网站(垃圾管理网站)
简单的来说:
- NodeJS其实就是运行在服务端的JavaScript代码
什么是I/O模型
I:input
O:output
您细品
什么是引擎
每一个浏览器都有一个内核,每个内核都会有一个引擎,引擎又分为脚本引擎(运行脚本)和渲染引擎(DOM)。Chrome V8引擎是最好的脚本引擎
NodeJS底层也是基于C去写的
NodeJS 和 JavaScript的区别
-
浏览器的JS:主要是DOM操作,不能操作系统底层的API
有些Node的API是JS无法使用的: process、global等
-
NodeJS:可以调用系统底层的API,例如文件的读写、服务器的创建、服务器与服务器之间的交互
有些JS的API是NodeJS无法使用的,例如操作DOM、BOM的API
NodeJS的主要用途
NodeJS在工作当中的主要用途是用来处理高并发的
NodeJS做中间层来处理高并发时,服务端与服务端之间进行通信的时候不会涉及到跨域
缺点:NodeJS不适合做大量运算 只要遇到了复杂的运算,服务就会挂掉
NodeJS中如何运行JS文件,以及如何进行JS语法的编译
运行JS文件:node 文件名称
编译:node交互模式 => 命令行中输入node
退出:ctrl+c 2次 || Ctrl+d 1次
npm
-
什么是npm:包管理器
- npm 是一个包
- npm 是一个命令
- npm 是一个网站:
[https://www.npmjs.com/](https://www.npmjs.com/)
-
npm常用的命令
命令 功能 npm install 包名 -g 全局安装 npm install 找到包中的package.json文件 安装package.json文件中的依赖 npm install 包名 --save 将包安装到生产环境中 npm install 包名 --save-dev 将包安装到开发环境中 npm uninstall 包名 卸载 npm update 包名 更新包 npm search 包名 查找包 npm info 包名 查看包的信息 npm cache clear 清除缓存 -
npm是国外的网站,因此下载的时候速度比较慢,有时会出错,所以推荐使用cnpm、nrm
npm install cnpm -g
cnpm install nrm -g
-
nrm:源管理器
cnpm install nrm -g
nrm ls
列出所有镜像源nrm use taobao
设置镜像源
yarn 包管理器
yarn与npm的区别:
- npm安装多个依赖的时候是同步安装
- yarn安装多个依赖的时候是异步安装、yarn安装过的依赖会进行本地缓存、yarn会对安装过的包进行版本的锁定
安装:cnpm install yarn -g
常用命令:
npm命令 | yarn命令 |
---|---|
npm install 包名 -g | yarn add 包名 global |
npm install | yarn install |
npm install 包名 --save | yarn add 包名 |
npm install 包名 --save-dev | yarn add 包名 --dev |
npm uninstall 包名 | yarn remove 包名 |
npm update 包名 | yarn upgrade 包名 |
npm search 包名 | yarn search 包名 |
npm info 包名 | yarn info 包名 |
npm cache clear | yarn cache clear |
yarn global bin:全局安装文件的位置 |
Node版本号
LTS:稳定版本(推荐)
current:最新版本
12.14.0:
第一个版本号:大版本号
第二个:小版本好
第三个:补丁
NodeJS模块化
-
前后端模块化的解决方案:NodeJS用commonjs规范
- requireJS:前端
- seajs:前端
- module:前端
- commonjs:后端
-
模块化的好处
- 便于项目的二次迭代更新
- 便于多人协作
- 解决类名冲突
- 解决引入优先级的问题
- ... ...
-
模块化的规范是什么
模块化的规范是如何将模块进行导入和导出
其中,NodeJS中的commonjs规范 => module.exports:导出模块,require:导入模块
NodeJS中的模块分类
-
内置模块
http、path、querystring...
内置模块不需要通过npm下载或者路径引入等操作,自身携带的
const http = require('http')
-
自定义模块
通过module.exports进行导出 require进行引入
-
第三方模块
需要npm进行安装,然后进行引入:第三方模块都是在node_modules中的
择日排版