赞
踩
Node.js 由 Ryan Dahl 于 2009 年首次创建,大约在 Netscape 的第一个服务器端 JavaScript 环境 LiveWire Pro Web 推出 13 年后。Node.js 的第一个版本支持 Linux 和 Mac OS X。它的开发和维护由 Ryan Dahl 领导,后来得到 Joyent 的支持。
Node.js 是一个开源框架,用于构建快速且可扩展的服务器端 JavaScript 应用程序。Ryan Dahl 于 2009 年创建了Node.js框架。它基于 V8 JavaScript 运行时构建,使用事件驱动的非阻塞 I/O 模型,这使得Node.js轻量级、高效,非常适合分布式设备上的数据密集型并发应用程序。
一些世界领先的公司在制作中使用Node.js,包括 Netflix、PayPal、沃尔玛和优步。
Node.js 还提供对大型 JavaScript 模块库的访问,大大简化了Node.js Web 应用程序的开发。它允许开发人员使用 JavaScript 创建命令行工具和服务器端脚本。
最初,网络只是通过计算机网络协议在网络上显示文本文件。随着时间的流逝,网络随着协议的DNA,HTML和HTTP而扩展。
JavaScript 是 Netscape 于 1995 年创建的一种编程语言,作为在 Netscape Navigator 中操作网页的编程工具。Netscape 的商业模式涉及销售 Web 服务器,包括一个名为 LiveWire 的环境,该环境可以使用服务器端 JavaScript 呈现动态网页。不幸的是,LiveWire并不是很成功。
2009 年,谷歌的软件工程师 Ryan Dahl 创建了 Node.js。在第一个版本中,它仅支持 macOS 和 Linux,但最终也支持其他操作系统。Ryan Dahl 领导了 Node.js 的开发和维护,后来得到了 Joyent 的支持。
单线程:在Node.js中,所有请求都是单线程的,并在事件循环中收集。事件循环允许Node.js执行所有非阻塞操作。这意味着从接收请求到执行任务再到向客户端发送响应的所有内容都在单个线程中执行。此功能可防止重新加载并减少上下文切换时间。
高度可扩展性:Node.js应用程序具有高度可扩展性,因为它们是异步运行的。Node.js可以有效地处理并发请求,同时平衡所有活动的 CPU 内核。Node.js的这个功能对开发人员非常有益。
跨平台兼容性:Node.js可用于各种系统,从 Windows 到 Mac OS、Linux 甚至移动平台。
JavaScript:大多数开发人员已经对 JavaScript、它的工作原理以及与之相关的其他基本和高级概念有了很好的了解。Node.js允许开发人员使用 JavaScript 进行后端开发。这很方便,因为开发人员不必在多种编程语言之间切换,并且只需了解 JavaScript 即可制作全栈项目。
快速数据流:Node.js 基于 Google Chrome 的 V8 JavaScript 引擎构建,可使您的代码运行得更快。该引擎将 JavaScript 代码编译为机器代码。这使得Node.js的运行速度明显加快,并为 Web 应用程序提供快速的数据流。异步编程等概念及其与非阻塞 I/O 操作的协同工作使Node.js高效。
无缓冲:Node.js适用于数据流,数据流是聚合数据。因此,用户可以更轻松、更快速地获取数据,因为无需等待整个操作完成。它减少了处理所需的总时间。因此,Node.js很少或根本没有数据缓冲。
异步:默认情况下Node.js是异步的,即使用 Node.js 构建的服务器不需要等待 API 的日期。换句话说,Node.js以非阻塞方式工作,不会阻止任何进一步操作的执行。异步和非阻塞 I/O 可缩短响应时间并改善用户体验。
事件驱动:事件驱动的概念类似于异步编程中回调函数的概念。在Node.js中,回调函数(也称为事件处理程序)在触发或完成事件时执行。回调函数在服务器端需要更少的资源,消耗更少的内存。Node.js的这一功能使应用程序变得轻量级。
LinkedIn:LinkedIn是一个用于专业交流的社交网络。2011 年底,LinkedIn从 Ruby on Rails 切换到 Node.js。这主要是因为 LinkedIn 的开发人员想要优化他们的移动应用程序,该应用程序现在完全是用 Node.js 编写的。Node.js大大减少了服务器资源,并且该程序的运行速度比其前身快 20 倍。HTML5也是LinkedIn移动应用程序开发的一个重要因素。
Netflix:Netflix 是一家为全球数百万用户提供服务的电视和电影流媒体服务,可能是最熟悉的使用 Node.js 的公司之一。Netflix 用户界面是使用 Node.js 构建的。根据 Netflix 团队的说法,该框架的模块化鼓励了 Node.js 的使用。
优步:优步是一项出租车服务,适合那些需要匆忙到达某个地方但又被黄色出租车过高的价格吓倒的人。在使用 Node.js 的公司中,Uber 是最早充分利用该框架的公司之一,在 Node.js 之上构建了大部分 Uber 平台。快速的处理速度、持续的开发和容易出错是 Uber 选择 Node.js 的三个主要原因。
Trello:Trello 是一种协作在线工具,企业使用它来使用虚拟板来组织他们的项目和想法。Trello 仪表板可以告诉用户他们正在做什么,谁在做,以及项目在开发过程中的位置。Trello 需要一种事件驱动的技术,可以同时处理多个并发请求。因此,正是出于这些原因,Node.js成为我们的首选。
PayPal:PayPal是一个在线平台,用于通过受信任的服务进行数字支付。工程师们对 Java 很满意,但 JavaScript 前端在开发过程中造成了差距,导致加载缓慢和支付处理问题。作为解决方案,2013 年,PayPal 决定从 Java 迁移到 Node.js。PayPal软件团队喜欢这样Node.js它允许开发人员使用 JavaScript 构建服务器端和客户端。
美国宇航局:美国国家航空航天局(NASA),是由美国政府赞助的负责太空研究和开发的机构。NASA 使用 Node.js 构建了一个 API 驱动的企业架构,用于将数据传输到云数据库。NASA 创建了一个微服务架构,将传统应用程序迁移到现代环境。这导致了更快的数据可用性,这就是Node.js用于打破数据障碍的方式。
eBay:eBay等电子商务平台允许用户通过在线交易从个人和企业购买产品。eBay的第一个应用程序是使用Node.js构建的,很少有内部工具或服务器使用Node.js。目前,它正在将 Node.js 用于 eBay API 库。
Medium:Medium 是一个用于博客和发布文章的在线平台,每月约有 2500 万独立用户。开发人员使用 Node.js 从前端与服务器通信。Node.js为发布商提供了平稳的过渡和更好的用户体验。它还将部署时间缩短了 15 分钟。
Groupon:Groupon是一个拥有超过4000万活跃用户的电子商务平台。它与第三方服务合作,提供折扣和特价。和LinkedIn一样,Groupon在2015年从Ruby on Rails转向了Node.js。Groupon软件开发人员已将移动流量和网络流量转移到该框架中。流畅的迁移和可重用的代码帮助开发人员节省了大量时间,还允许更高的可扩展性和 50% 的加载速度。
雅虎:雅虎主要是一个用于查找新闻、体育和金融信息的网络目录。它的作用很快扩大到包括电子邮件服务和搜索引擎。Yahoo Food、Yahoo Life 和 Yahoo Answers 都使用Node.js。雅虎是其产品中另一个早期采用Node.js的人,从 Node 0.8 版开始。甚至雅虎的 Flickr 也使用Node.js来提供快速可靠的照片页面。
数据流:Node.js 为 HTTP 流提供了强大的支持,这使得Node.js非常适合构建需要实时更新的实时流媒体应用程序,例如体育直播或新闻频道。
服务器端渲染:服务器端 HTML 渲染对于大部分内容为静态内容的网站来说是一个好主意。服务器端 HTML 渲染意味着Node.js可以在将响应发送回客户端之前完成所有工作,从而允许用户立即查看内容,而不是在收到客户端的请求后等待node.js在 JavaScript 中渲染所有内容。
命令行工具:Node.js可用于构建命令行工具。虽然 Node 通常与网站和 Web 应用程序相关联,但 Node.js 也非常适合构建命令行工具,并允许您自动执行重复性任务或构建需要块操作的工具,例如文件下载器。
桌面应用程序:Node-WebKit 是一个基于 Chromium 和 Node.js 的应用程序运行时环境,允许开发人员将 Node.js 用作其桌面程序的后端。Node-WebKit 使用 Node.js V8 引擎的修改版本,因此您可以构建其他类型的 Chrome 应用,而不仅仅是独立的 Node.js 应用。
嵌入式系统:JavaScript 用于对微控制器和物联网设备原型进行编程,但硬件编程正迅速成为Node.js的主要用例。现在甚至还有一个系统要求低得多的Node.js端口,称为 low.js,它允许Node.js在低成本、高能效的微控制器板上运行。
Node.js应用程序包括以下三个关键步骤:
const http = require('http');
- http.createServer((request, response) => {
-
- // Status code 200 tells the browser that everything is OK, and the data is in a plain text
- response.writeHead(200, {
- 'Content-Type': 'text/plain'
- });
-
- response.write('Hello, World!\n');
-
- response.end();
-
- }).listen(1337);
- const http = require('http');
-
- http.createServer((request, response) => {
-
- response.writeHead(200, {
- 'Content-Type': 'text/plain'
- });
-
- response.write('Hello, World!\n');
-
- response.end();
-
- }).listen(1337);
通过运行main.js启动服务器,如下所示:
$ node main.js
您的 HTTP 服务器正在运行并响应端口 1337 上的所有 HTTP 请求。
比较基础 | JavaScrip | Node.jS |
---|---|---|
定义 | 它是一种开源、跨平台、解释型和轻量级编程语言,用于开发动态 Web 应用程序。 | Node.js 是一个开源框架,用于构建快速且可扩展的服务器端 JavaScript 应用程序。 |
效用 | 它用于 Web 应用程序中的客户端活动,例如验证属性、定期刷新页面或在不刷新页面的情况下动态更改网页。 | 它用于访问非阻塞操作,例如编写 shell 脚本、访问特定于硬件的数据以及处理后端作业 |
局限性 | JavaScript 缺乏多线程和多处理器功能。 | 由于其不稳定的 API,Node.js必须处理大量的代码更改。 |
语言 | JavaScript 是一种遵循 ECMAScript 标准的高级实时编译语言。 | Node.js 是基于 Chrome 的 V8 JavaScript 引擎构建的 JavaScript 运行时。 |
运行引擎 | JavaScript 可以在任何支持 JavaScript 引擎的浏览器中运行,例如 Firefox、Google Chrome、Opera 和 Spider Monkey。 | Node.js仅在 Chrome 的 V8 引擎中受支持。用 Node.js 编写的 JavaScript 应用程序始终在 Chrome 的 V8 引擎上运行。 |
模块 | 很少有流行的 JavaScript 框架是 Angular、React、Vue.js、Ember.js、Meteor、Polymer 等。 | NPM 是 Node.js 的默认包管理器。一些流行的 NPM 包包括 Express、Lodash、Axios 和 Molecular。 |
公司使用 | 各种公司使用 JavaScript,如 Google、Instacart、Shopify、Netflix、Groupon、Uber、Facebook 等。 | 各种公司都使用Node.js,如 LinkedIn、沃尔玛、快乐、PayPal、LinkedIn、Medium、Trello、eBay 等。 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。