node.js服务器端编程的作用
NodeJS服务器端编程
NodeJS在2009年诞⽣, NodeJS 是⼀个开源与跨平台的 JavaScript 运⾏环境,也叫Node.js或者Node
所谓“运⾏环境”有两层意思:
⾸先, JavaScript语⾔通过Node在服务器 运⾏,在这个意义上, Node有点像JavaScript虚拟机;
其次, Node提供⼤量⼯具库,使得 JavaScript语⾔与操作系统互动(⽐如读写⽂件、新建⼦进程),在这个意义上, Node⼜是 JavaScript的⼯具库。
Node内部采⽤Google公司的V8引擎,作为JavaScript语⾔解释器;通过⾃⾏开发的libuv库,调⽤操作系统资源。第⼀章节
1 简介
Node.js 是⼀个开源和跨平台的 JavaScript 运⾏时环境。 它⼏乎是任何类型项⽬的流⾏⼯具!
Node.js 在浏览器之外运⾏ V8 JavaScript 引擎(Google Chrome 的内核)。 这使得 Node.js 的性能⾮常好。
Node.js 应⽤程序在单个进程中运⾏,⽆需为每个请求创建新的线程。 Node.js 在其标准库中提供了⼀组异步的 I/O原语,以 防⽌ JavaScript 代码阻塞 ,通常, Node.js 中的库是使⽤⾮阻塞范式编写的,使得阻塞⾏为成为异常⽽不是常态。
当 Node.js 执⾏ I/O 操作时(⽐如从⽹络读取、访问数据库或⽂件系统), Node.js 将在响应返回时恢复操作(⽽不是阻塞线程和浪费 CPU 周期等待)。
这允许 Node.js 使⽤单个服务器处理数千个并发连接,⽽不会引⼊管理线程并发(这可能是错误的重要来源)的负担。
Node.js 具有独特的优势,因为数百万为浏览器编写 JavaScript 的前端开发者现在⽆需学习完全不同的语⾔,就可以编写除客户端代码之外的服务器端代码。
在 Node.js 中,可以毫⽆问题地使⽤新的 ECMAScript 标准,因为你不必等待所有⽤户更新他们的浏览器,你负责通过更改 Node.js 版本来决定使⽤哪个 ECMAScript 版本,你还可以通过运⾏带有标志的 Node.js 来启⽤特定的实验性功能。
⼤量的库npm 以其简单的结构帮助 Node.js ⽣态系统蓬勃发展,现在 npm 仓库托管了超过 1,000,000(百万级) 个开源包,你可以⾃由使⽤。
Node.js 框架和⼯具
Node.js 是⼀个底层平台。 为了让开发者的⼯作变得轻松有趣,社区在 Node.js 上构建了数千个库。
许多随着时间的推移⽽成为流⾏的选择。 以下是值得学习的部分列表:
AdonisJS :基于 TypeScript 的全功能框架,⾼度关注开发者的效率、稳定和信任。 Adonis 是最快的 Node.jsWeb 框架之⼀。
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 。
标签:
相关文章
-
无相关信息