45天带你玩转Node
粉丝要求博主系统的写一篇关于Node.js的学习资料,但其实我们的Node.js知识点并不少,所以博主为大家搭建了一个专栏,为了方便大家系统的学习Node.js,大家记得订阅哦!虽然我们的Node.js还很年轻,但是他也已经有了很高的地位,让我们尽情的畅游在Node.js的专栏中吧,希望通过此专栏我们能够系统的将Node.js学好,它将会成为我们的一大亮点,我们可以用这款前端中的后端语言让提升我们的价值与眼界,如今的他也已经成为面试官口中的高并发面试内容了,一起加油!
初探Node.js
- 前言
- Node.js简介
- Node.js的发展史
- Node.js 框架和工具
- Node.js和浏览器
- 总结
前言
我们熟知在一个完整的项目中我们是需要前端、后端双技术的配合,传统的Web应用开发主要还是以PHP+MySQL或者是Tomcat+Java,两个系列各有优势,前者开发方式便捷、简单,但是总体性能并不高,对于大量请求或者即时应用来说并不合适,而后者虽然继承了Java的高性能优势,但对于开发者来说过于繁琐,从而给开发者造成了一定的困难,Node.js则结合了上面两种开主流开发方式的特点,他是一个开源和跨平台的 JavaScript 运行时环境。作为当下的前端开发工程师,大家对Node.js已经是熟悉到极致了,毕竟我们只要使用前端框架进行开发,必不可少的就是在我们电脑上配置Node环境;
Node.js简介
Node.js发布于2009年5月, 是一种能够在服务器端运行 Javasoript 语言的宿主环境。该宿主环境能够支持跨平台功能,如 Windows 平合、Linux 平台、Mac 平台等。使用 Nodejs 可以在服务器端使用 JavaScript 语言完成如 PHP、Java、Perl 等语言才能完成的后端开发功能,并且完成的项目更符合软件工程的要求。
Node.is 最初是由 Ryan Dahl 发起的开源项目,后由 Joyent 公司进行商业运营,尽管 Node.js诞生时间还不长(于2009年诞生),但是到目前为止,已经发展成相当庞大的生态系统,包含各大领域层次的 NPM 包,如MongoDB、MySQL 的连接器,以及 CSS的样式表、模板引擎、数宇格式化等。使用这些 NPM 包可以相当快捷地完成基本应用的开发
当 Node.js 执行 I/O 操作时(比如从网络读取、访问数据库或文件系统),Node.js 将在响应返回时恢复操作(而不是阻塞线程和浪费 CPU 周期等待)
这允许 Node.js 使用单个服务器处理数千个并发连接,而不会引入管理线程并发(这可能是错误的重要来源)的负担。Node.js 具有独特的优势,因为数百万为浏览器编写 JavaScript 的前端开发者现在无需学习完全不同的语言,就可以编写除客户端代码之外的服务器端代码。在 Node.js 中,可以毫无问题地使用新的 ECMAScript 标准,因为你不必等待所有用户更新他们的浏览器,你负责通过更改 Node.js 版本来决定使用哪个 ECMAScript 版本,你还可以通过运行带有标志的 Node.js 来启用特定的实验性功能。
Node.js的发展史
其实我们的Node.js才仅仅诞生12年,相比之下我们的JavaScript
已经存在了26年,前端已经33年,在技术潮流中其实一个12年并不是很长,但是我们的Node.js发展到今天已经相对很完善了,可用性也非常高!下面先让我们了解一下Node.js的成长吧!
时间 | 成长 |
---|---|
2009 | Node.js诞生,第一版npm被创建 |
2010 | Express诞生,Socket.io诞生 |
2011 | npm 发布 1.0 版本,较大的公司(LinkedIn、Uber 等)开始采用 Node.js,hapi 诞生 |
2012 | 普及速度非常快 |
2013 | 第一个使用 Node.js 的大型博客平台:Ghost,Koa 诞生 |
2014 | 大分支:io.js 是 Node.js 的一个主要分支,目的是引入 ES6 支持并加快推进速度 |
2015 | Node.js 基金会 诞生,IO.js 被合并回 Node.js,npm 引入私有模块,Node.js 4(以前从未发布过 1、2 和 3 版本) |
2016 | leftpad 事件,Yarn 诞生,Node.js 6 |
2017 | npm 更加注重安全性,Node.js 8,HTTP/2,V8 在其测试套件中引入了 Node.js,除了 Chrome 之外,Node.js 正式成为 JS 引擎的标杆,每周 30 亿次 npm 下载 |
2018 | Node.js 10,ES 模块 .mjs 实验支持,Node.js 11 |
2019 | Node.js 12,Node.js 13 |
2020 | Node.js 14,Node.js 15 |
2021 | Node.js 16,Node.js 17 |
Node.js 框架和工具
Node.js 是一个底层平台。 为了让开发者的工作变得轻松有趣,社区在 Node.js 上构建了数千个库。
许多随着时间的推移而成为流行的选择。 以下是值得学习的部分列表:
AdonisJS:
基于 TypeScript 的全功能框架,高度关注开发者的效率、稳定和信任。Adonis 是最快的 Node.js Web 框架之一。
Egg.js:
使用 Node.js 和 Koa 构建更好的企业级框架和应用程序的框架。
Express:
提供了最简单而强大的方式来创建 Web 服务器。它的极简主义方法、没有偏见、专注于服务器的核心功能,是其成功的关键。
Fastify:
高度专注于以最少的开销和强大的插件架构提供最佳开发者体验的 Web 框架。Fastify 是最快的 Node.js Web 之一 构架。
FeatherJS:
Feathers 是轻量级的网络框架,用于使用 JavaScript 或 TypeScript 创建实时应用程序和 REST API。在几分钟内构建原型,在几天内构建可用于生产的应用程序。
Gatsby:
基于 React、由 GraphQL 驱动的静态网站生成器,具有非常丰富的插件和启动器生态系统。
hapi:
用于构建应用程序和服务的富框架,使开发者能够专注于编写可重用的应用程序逻辑,而不是花时间搭建基础设施。
koa:由 Express 背后的同一个团队构建,旨在更简单、更小,建立在多年知识的基础上。新项目的诞生是为了在不破坏现有社区的情况下创建不兼容的更改。
Loopback.io:
使构建需要复杂集成的现代应用程序变得容易。
Meteor:非常强大的全栈框架,为您提供同构的方法来使用 JavaScript 构建应用程序,在客户端和服务器上共享代码。曾经是提供所有功能的现成工具,现在可以与前端库 React、Vue 和 Angular 集成。也可用于创建移动应用程序。
Micro:
提供了非常轻量级的服务器来创建异步的 HTTP 微服务。
NestJS:
基于 TypeScript 的渐进式 Node.js 框架,用于构建企业级的高效、可靠和可扩展的服务器端应用程序。
Next.js:
React 框架,为您提供最佳的开发者体验,包括生产所需的所有功能:混合静态和服务器渲染、TypeScript 支持、智能捆绑、路由预取等。
Nx:使用 NestJS、Express、React、Angular 等进行全栈大仓开发的工具包!Nx 有助于将您的开发从构建单个应用程序的团队扩展到多个团队协作开发多个应用程序!
Remix:
Remix 是一个全栈 Web 框架,用于为 web 构建出色的用户体验。它开箱即用,提供构建现代 web 应用程序所需的一切(包括前端和后端)并将其部署到任何基于 JavaScript 的运行时环境(包括 Node.js)。
Sapper:
Sapper 是用于构建各种规模的 Web 应用程序的框架,具有优美的开发体验和灵活的基于文件系统的路由。提供 SSR 等等!
Socket.io:
构建网络应用的实时通信引擎。
Strapi:
Strapi 是灵活开源的 Headless CMS,让开发者可以自由选择他们喜欢的工具和框架,同时还允许编辑人员轻松管理和分发他们的内容。通过插件系统使管理面板和 API 可扩展,Strapi 使世界上最大的公司能够在构建精美的数字体验的同时加速内容交付。
Node.js和浏览器
浏览器和 Node.js 都使用 JavaScript 作为其编程语言。构建在浏览器中运行的应用程序与构建 Node.js 应用程序完全不同。尽管它始终是 JavaScript,但有一些关键的差异使体验完全不同。
从广泛使用 JavaScript 的前端开发人员的角度来看,Node.js 应用程序带来了巨大的优势:使用一种语言编写所有东西(前端和后端)的舒适性。
你有一个巨大的机会,因为我们知道完全、深入地学习一门编程语言是多么困难,并且通过使用同一种语言在 web 上执行你的所有工作,无论是在客户端还是在服务器上,你都处于独特的优势地位。
在浏览器中,您所做的大部分时间都是与 DOM 或其他 Web 平台 API(如 Cookies)进行交互。 这些当然在 Node.js 中不存在。 您没有浏览器提供的 document、window 和所有其他对象。在浏览器中,我们没有 Node.js 通过其模块提供的所有友好的 API,比如文件系统访问功能。
另一个很大的不同是在 Node.js 中你可以控制环境。 除非您正在构建一个任何人都可以在任何地方部署的开源应用程序,否则您知道将在哪个版本的 Node.js 上运行该应用程序。 与浏览器环境(您无法奢侈地选择访问者将使用哪种浏览器)相比,这非常方便。
这意味着您可以编写您的 Node.js 版本支持的所有现代的 ES6-7-8-9 JavaScript。
由于 JavaScript 的发展速度如此之快,但浏览器的升级速度可能会有点慢,有时在 web 上你会被旧的 JavaScript / ECMAScript 版本所困扰。你可以在将代码发布到浏览器之前使用 Babel 将代码转换为 ES5 兼容,但在 Node.js 中,你不需要它。
另一个不同之处是 Node.js 使用 CommonJS 模块系统,而在浏览器中我们开始看到正在实施的 ES Modules 标准。在实践中,这意味着你暂时在 Node.js 中使用 require(),在浏览器中使用 import。
总结
本篇文章全部都是理论内容,主要就是让大家对Node.js有一定的了解,以及发展史,虽然我们的Node.js还很年轻,但是他也已经有了很高的地位,让我们尽情的畅游在Node.js的专栏中吧,希望通过此专栏我们能够系统的将Node.js学好,它将会成为我们的一大亮点,我们可以用这款前端中的后端语言让提升我们的价值与眼界,如今的他也已经成为面试官口中的高并发面试内容了,一起加油!我们下篇见