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

Node.js 不是库,是一个运行环境,或者说是一个 JS 语言解释器。(Node.js 不是一门新的编程语言,也不是一个 JavaScript 框架,它是一套 JavaScript 运行环境,用来支持 JavaScript 代码的执行。用编程术语来讲,Node.js 是一个 JavaScript 运行时(Runtime)。)

Node.js 最初的定位是提升 Ryan 自己的日常工作效率,也就是用来写服务器代码的,但是后来没有想到的是 Node.js 在前端领域却大放异彩。

JavaScript 诞生于 1995 年,几乎是和互联网同时出现;Node.js 诞生于 2009 年,比 JavaScript 晚了 15 年左右。

在 Node.js 之前,JavaScript 只能运行在浏览器中,作为网页脚本使用,为网页添加一些特效,或者和服务器进行通信。有了 Node.js 以后,JavaScript 就可以脱离浏览器,像其它编程语言一样直接在计算机上使用,想干什么就干什么,再也不受浏览器的限制了。

Node.js 的组成

Node.js 运行时主要由 V8 引擎、标准库和本地模块组成,尤其是本地模块的多少,从底层决定了 Node.js 功能的强弱。

Chrome V8 与 Node.js

从某种意义上来说,Node.js 并不是一个从零开始编写的 JavaScript 运行时,它其实也是站在“巨人的肩膀”上进行了一系列的拼凑和封装得到的结果。它的高效离不开一些很牛的第三方程序和类库。比如Chrome V8。

Chrome V8 简称 V8,是由谷歌开源的一个高性能 JavaScript 引擎。该引擎采用 C++ 编写,Google Chrome 浏览器用的就是这个引擎。V8 可以单独运行,也可以嵌入 C++ 应用当中。
和其他的 JavaScript 引擎一样,V8 会编译、执行 JavaScript 代码,并一样会管理内存、垃圾回收等。

就是因为 V8 的高性能以及跨平台等特性,所以它也是 Node.js 的 JavaScript 引擎。

Node.js 一直紧跟 V8 的版本脚步在迭代。

Node.js 与 V8 实际上看起来更像是一对情侣,而不仅仅是 Node.js 一厢情愿地使用 V8 作为自己的底层支持。

在 Chrome V8 的博客中曾经有一篇文章名为《V8 ❤ Node.js》。Node.js 在几年发展中的流行度稳步增长,于是有了 V8 的“姑娘,你成功引起了我的注意”。现在 V8 也有一些工作是为 Node.js 而做的:

  • 在 Chrome 开发者工具中可以调试 Node.js;
  • 加速 ES6;
  • 针对 Node.js vm 模块和 REPL 的一些修复;
  • Async / await。

总结

V8 引擎借鉴了 Java 虚拟机和 C++ 编译器的众多技术,它将 JavaScript 代码直接编译成原生机器码,并且使用了缓存机制来提高性能,这使得 JavaScript 的运行速度可以媲美二进制程序。

Node.js 是一个 JavaScript 运行时,它让 JavaScript 脱离了浏览器环境,可以直接在计算机上运行,极大地拓展了 JavaScript 用途。我们应该将 JavaScript 和 Python、Java、Ruby 等其它编程语言同等对待,不能再将它视为一种“小玩意”。

最后我们来汇总一下 JavaScript 和 Node.js 的历史:

  • Netscape 浏览器衍生出了 JavaScript 脚本,赋予网页编程能力;
  • Chrome 浏览器衍生了 V8 引擎,提高了 JavaScript 性能;
  • V8 引擎构建了 Node.js,拓展了 JavaScript 的编程能力;
  • Node.js 衍生了 Libuv 库,给网络开发增加了一款优秀的工具。

【什么是 Nodejs ?】相关推荐

  1. CentOS6安装nodejs

    Nodejs是JavaScript的一种运行环境,是一个服务端的JavaScript解释器. NPM是Nodejs的包管理器. Nodejs包含npm,所以安装完nodejs后npm默认也被安装. 安 ...

  2. 让我们一起认识一下Nodejs

    Nodejs Nodejs是一个运行在chrome Javascript运行环境下(俗称GoogleV8引擎)的开发平台,用来方便快捷的创建服务器端网络应用程序.可以把它理解为一个轻量级的JSP或PH ...

  3. nodejs 各种插件

    __dirname:全局变量,存储的是文件所在的文件目录 __filename:全局变量,存储的是文件名 代码:dirname.jsconsole.log(__dirname); 运行node dir ...

  4. nodejs pm2使用

    pm2特点 1.简单方便,部署快. 2.解决nodejs单线程缺点 3.完善的日志 pm2安装及使用 1.安装 npm install -g pm2 2.启动 查看版本 pm2 start app.j ...

  5. NodeJS+Mongodb+Express做CMS博客系统

    楼主正在用业余时间开发中-- ,目前的版本仅支持会员系统,尝鲜一下吧~ hi-blog 一个 nodejs+express+mongodb 的 cms 系统 怎么启动 默认你已经安装了 mongodb ...

  6. 简述nodejs、npm及其模块在windows下的安装与配置

    nodejs的安装 登陆官网http://nodejs.org/,自行安装,不需配置环境变量,安装中自动配置了. 检测是否安装成功,使用cmd输入 node -v 即可查看. npm的安装 如果是最新 ...

  7. 关于内网linux系统如果安装nodejs,npm,express,mongodb,forever等

    内网的linux系统要安装nodejs以及express等系列的框架,因为系统是局域网和互联网是物理隔离的,所以,没法像官网的安装教程那样直接install了,只能手动安装,这里已经我们自己的linu ...

  8. windows nodejs mysql_windows server 安装 mysql + nondejs连接mysql

    下载 安装 下载完后,将 zip 包解压到相应的目录,这里我将解压后的文件夹放在 C:\mysql 下. 接下来需要配置下 MySQL 的配置文件 打开刚刚解压的文件夹 C:\mysql ,在该文件夹 ...

  9. php渲染nodejs api,如何使用nodejs 服务器读取HTML文件渲染至前端

    这次给大家带来如何使用nodejs 服务器读取HTML文件渲染至前端,使用nodejs 服务器读取HTML文件渲染至前端的注意事项有哪些,下面就是实战案例,一起来看一下. 1.分别简单实现三个备用页面 ...

  10. nodejs ld linux.so,请教大神,如何在独立虚拟主机上配置node.js开发环境?

    安装一下NodeJs就好啦. Windows系统很简单,直接下载运行安装包.linux复杂一点. 下面给出linux二进制文件安装方法. 首先到这里下载安装文件https://nodejs.org/z ...

最新文章

  1. 程序员的自我救赎---13.1:职场招聘与面试心得
  2. Android:Activity生命周期
  3. 提高网站首页载入速度的常用方法
  4. Spring MVC @ModelAttribute 详解
  5. mysql存储过程套嵌_mysql存储过程套嵌
  6. 控件列[Coolite]上传文件
  7. R语言-单一变量分析
  8. VirtualBox的四种网络接入模式
  9. 终端启动tomcat报错 command not found 解决方法 (含启动和关闭命令)
  10. sqlserver导出表结构到excel
  11. 七月算法机器学习 10 聚类算法与应用
  12. 几种常见模式识别算法整理和总结【转】
  13. miniusbpcb封装_USB接口封装及定义大全,不用去翻手册了
  14. 【数据分析与挖掘实战】金融风控之贷款违约预测详解1(有代码和数据集)
  15. 克莱斯勒等公司宣布召回缺陷汽车
  16. thawte,globalsign,alphassl,rapidssl,geotrust,digicert证书品牌的对照
  17. 淘宝API获取——商品详情信息、DESC信息、主图
  18. 你有没有过那种明知是对的但却没能去做的事?
  19. mysql locate用法,LOCATE()函数如何与MySQL WHERE子句一起使用?
  20. BI和大数据的区别在哪里?

热门文章

  1. JQuery中append(function(index,html)),appendTo(),after(function(index,html)),clone()方法
  2. HackPwn:TCL智能洗衣机破解细节分析
  3. 3.牛顿迭代法求解方程的根
  4. 控制文件的备份与还原
  5. 【Linux命令】modprobe命令
  6. java opencv 去噪,opencv教程-图像去噪与修复
  7. 中超比赛小观-长沙金德对上海申花(图,视频)_原水_新浪博客
  8. vue:element ui分页改变pageSize,触发两次回调请求
  9. bootstrapt学习指南_Bootstrap 教程
  10. 推荐一个外国的数据结构在线演示网站