1.Node.js是什么?
Node.js 诞生于 2009 年,由 Joyent 的员工 Ryan Dahl 开发而成, 目前官网最新版本已经更新到 14.15.4版本,最新稳定的是10.15.3。Node.js 不是一门语言也不是框架,它只是基于 Google V8 引擎的 JavaScript 运行时环境,同时结合 Libuv 扩展了 JavaScript 功能,使之支持 io、fs 等只有语言才有的特性,使得 JavaScript 能够同时具有 DOM 操作(浏览器)和 I/O、文件读写、操作数据库(服务器端)等能力,是目前最简单的全栈式语言。
这里我们可以简单理解Node.js是一个内置有chrome V8引擎的JavaScript运行环境,他可以使原本在浏览器中运行的JavaScript有能力跑后端,从而操作我们数据库,进行文件读写等。
目前市面上高密集的I/O模型,比如 Web 开发,微服务,前端构建等都有做Node.js的身影。不少大型网站都是使用 Node.js 作为后台开发语言的,比如 淘宝 双十一、去哪儿网 的 PC 端核心业务等。另外我们一些前端工具譬如VSCode,webpack等也是有Node.js开发。
Node.js的包管理工具npm,npm已经成为世界开源包管理中最大的生态,功能强大,目前单月使用者接近1000万。
2.Node.js特点(记住三句话,后面会具体介绍)
- 事件驱动
- 非阻塞IO模型(异步)
- 轻量和高效
3.Node在一线企业中的运用
-
作为中间层
我们通常说前端和后端,前端负责用户界面,而后端负责提供数据和业务接口。现在我们在两者间加入一层,前端并不是直接去请求后端业务接口,而是请求到中间层。再由中间层去请求业务接口,看一下示意图:
整个流程可以描述为:客户端直接请求到中间层的Node服务,Node服务分析请求,看需要哪个页面,再去请求对应 数据,拿到数据后和模版结合成用户看到页面,再给到客户端,那么有的人可能会觉得,这种模式不是更麻烦了吗? 其实不然,我们来看看 中间层的优点 :
- 减轻客户端内存,项目用户体验好。不会像mvvm模式的项目把页面渲染和数据请求都压在客户端,而是在服务端完成。
- SEO性好,不像mvvm模式页面由js生成,而是在服务器渲染好html 字符,有利于网页被搜索到。
- 保持了前后端分离的优点和目的,即解放后端,后端可以继续以接口的形式写业务代码。
- 前端可以操控的范围增多,甚至可以做服务器,数据库层面的优化,比如中间层中常常用nginx,redis来优化项目,应对高并发。
-
做项目构建工具
这里说的项目构建工具,我相信大家都用过,我们的webpack,vue-cli都是输入项目构建工具。那么大家觉得这一类工具神奇好用方便的同时,有没有想过这些工具是拿什么语言写的?其实它们并不难,这些工具都是用Node来写的。
很多公司都会开发自己公司的项目构建工具,帮助公司项目做的更标准更方便,一个好的项目构建工具,会极大的加快整个公司的项目开发效率。
这一类的项目构建工具一般都要很多的文件操作,Node对于i/o流的操作,在目前的主流后端语言中数一数二。所以越来越多的公司选择用Node来做项目构建工具。
-
做一些小型网站后端
用Node做后端,可能是大多数人认为的Node作用。其实真正在企业之中,很少会让你去用Node去做后端。 所以一般来说都是做一些小型或者个人站的后端。不过随着时代的进步,node发展到可以取代java,成为真正的全栈编程语言,这一切都是有可能的。