学习node.js基本要懂的知识点

node.js是什么?要弄懂这个问题,首先来看两个概念性的东西 javascript、v8引擎

JavaScript:

JavaScript是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

Chrome V8 引擎:

V8引擎是一个JavaScript引擎实现,最初由一些语言方面专家设计,后被谷歌收购,随后谷歌对其进行了开源。V8使用C++开发,,在运行JavaScript之前,相比其它的JavaScript的引擎转换成字节码或解释执行,V8将其编译成原生机器码(IA-32, x86-64, ARM, or MIPS CPUs),并且使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript程序在V8引擎下的运行速度媲美二进制程序。V8支持众多操作系统,如windows、linux、android等,也支持其他硬件架构,如IA32,X64,ARM等,具有很好的可移植和跨平台特性。

    另外,JavaScript引擎的执行过程大致是: 源代码-→抽象语法树-→字节码-→JIT-→本地代码(V8引擎没有中间字节码)。在2017年4月底,v8 发布了5.9 版本,在此版本中新增了一个 Ignition 字节码解释器,并默认开启。做出这一改变的原因为:(主要动机)减轻机器码占用的内存空间,即牺牲时间换空间;提高代码的启动速度;对 v8 的代码进行重构,降低 v8 的代码复杂度。

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境

以往的JavaScript是运行在客户端(最常见的是浏览器)的;

node.js出现后使其可以运行在服务端;最常用作中端 承前启后;

node.js天生异步

事件驱动

非阻塞I/O

轻量、可伸缩,适于实时数据交互应用

单进程,单线程

NodeJS的优缺点

优点:1. 高并发(最重要的优点)

2. 适合I/O密集型应用

缺点:1. 不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起;

解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起;

2. 只支持单核CPU,不能充分利用CPU

3. 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃

原因:单进程,单线程

解决方案:(1)Nnigx反向代理,负载均衡,开多个进程,绑定多个端口;

(2)开多个进程监听同一个端口,使用cluster模块;

4. 开源组件库质量参差不齐,更新快,向下不兼容

5. Debug不方便,错误没有stack trace

KOA2

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

NPM与yarn

1、yarn 比 npm 快

2、yarn支持离线下载

3、yarn并行下载包,这也是快的原因之一

4、yarn更安全,在锁定包依赖版本基础上,增加了协议检查的功能

5、yarn从多个仓库下载包,使其支持性相对于npm来说较好

6、yarn使用上较简单,例如 yarn add mysql 与npm install --save mysql

7、安装版本统一(之前在帮前端同事弄redis缓存时深有体会,因其用的vue框架 内置koa,一开始用npm安装redis包 老是报错  ,弄了好久,改用yarn安装包一切就正常了)


nvm介绍:

经常遇到需要运行多个项目的情况,其要求的node版本可能会不同。这种情况下维护多个版本时很不明智的,为了解决这个问题nvm包管理工具就出现了

安装nvm ,建议卸掉原有的node

https://github.com/coreybutler/nvm-windows/releases

这里是windows中的下载链接  linux、mac在github上面都能找到对应的链接

判断安装是否成功

nvm -v

安装node.js

nvm install node版本号

使用指定版本node

nvm use node版本

查看node版本

node -v

nodemon

在编写调试node.js项目时,经常需要npm run dev 然后在关闭掉,非常繁琐,

使用nodemon工具,可以监听文件变化,自动重启

全局安装

npm install nodemon -g

使用:

在项目中nodemon 【文件名】

pm2

是一个进程,管理node.js进程,查看状态,性能监控,进程守护 负载均衡等

1、 pm2需要全局安装

npm install -g pm2

2、进入项目根目录

2.1 启动进程/应用pm2 start bin/www 或 pm2 start app.js

2.2 重命名进程/应用pm2 start app.js --name wb123

2.3 添加进程/应用 watchpm2 start bin/www --watch

2.4 结束进程/应用pm2 stop www

2.5 结束所有进程/应用pm2 stop all

2.6 删除进程/应用pm2 delete www

2.7 删除所有进程/应用pm2 delete all

2.8 列出所有进程/应用pm2 list

2.9 查看某个进程/应用具体情况pm2 describe www

2.10 查看进程/应用的资源消耗情况pm2 monit

2.11 查看pm2的日志pm2 logs

2.12 若要查看某个进程/应用的日志,使用pm2 logs www

2.13 重新启动进程/应用pm2 restart www

2.14 重新启动所有进程/应用pm2 restart all

你可能感兴趣的:(学习node.js基本要懂的知识点)