秉徇【先有问题,才有方案】
1. 问题
我们知道,JavaScript 的出现可以说是 Java Applet 的掘墓人,它因为是浏览器原生支持的,无需像 Applet 那样还要额外安装 Applet 相关程序,一来很方便,二来执行效率也比后者要高很多,它也同样能满足请求后端服务、实现动态网页的需求。
可 JavaScript 不满足于只做一个前端页面和后端服务交互的脚本语言,我 JS 自己也想开发后端服务。在前端因为有浏览器原生支持所以 JS 才得以运行,但是在服务器端怎么执行 JS 的代码?就像 PHP 和 Python 脚本,能做为后端语言也是因为有解释器的支持。
2. 方案
既然浏览器能支持 JS 的执行,那我就利用一下浏览器内核引擎,再加点自己的东西,于是有了 Nodejs。
Nodejs 是对 Chrome V8 引擎的封装,从而可以支持 JavaScript 的运行,也就是说,Nodejs 与谷歌浏览器在解析JavaScript 时都使用了V8引擎。Nodejs 不是一个 JS 文件,而是一个 JS 的运行环境,是一个 JS 的开发平台。作为开发平台,它当然提供了诸多的 API 来满足不同的业务需求。Nodejs 使得 JavaScript 能够运行于服务端,并使其成为地位与服务端语言(Python、PHP 等)一样高的脚本语言。
Nodejs 的能力
- 提供了替代的API,使得 V8 引擎在非浏览器的环境下运行地更好;
- V8 引擎执行 JavaScript 的速度非常快,性能非常好;
- 是一个基于 Chrome JavaScript 运行时建立的平台,能方便地搭建响应速度快、易于扩展的网络应用。
现在 JS 的开发平台已经搭建起来了,可是在开发网站时往往依赖的库很多,例如依赖的 jquery、bootstrap 库等都需要自己去不同的地方单独下载,并导入工程。就很麻烦,而且不好管理版本,所以为什么不用管理工具来统一管理这些资源?
于是 Npm 就来了,Npm 全称是 Node package manager(Node 包管理工具),和 Maven、Gradle 一样是个包管理工具,只不过 Maven 与 Gradle 是用来管理 Java jar包的,而 Npm 是用来管理 Node 包的。
Npm 的实现原理与 Maven&Gradle 一样。
- 先建立一个远程代码仓库,用来存放所有的被共享的 Node 库,并且每个 Node 库都有自己唯一的标识符;
- 用户想要引入某个 Node 库时,只需引用对应的标识符,就会自动下载下来。
Npm 一开始出来的时候,并没有人在意它。后来 Nodejs 开发完成后,正缺少一个包管理工具,于是二者一拍即合。结果就是 Nodejs 内置了Npm,这也导致了要下载 Npm 的话,必须得下载 Nodejs。随着 Nodejs 流行,很多人开始使用Npm 下载和共享代码,Npm 已经成了前端的标配。
网友评论