回答者:鲸创日期:06月17日

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者在服务器端使用 JavaScript 进行编程。Node.js 作为 Web 后端的优势主要体现在以下几个方面:

  1. 异步和非阻塞I/O :Node.js 是异步和非阻塞的,这意味着它可以处理许多并发请求,无需等待任何函数或操作完成。这使得它非常适合处理高并发、数据密集型的实时应用,如在线游戏、聊天室、股票交易系统等。
  2. 单线程 :尽管 JavaScript 是单线程的,但 Node.js 使用了事件循环机制,让单线程也能处理高并发的请求。这样在某种程度上降低了服务器的资源消耗。
  3. 跨平台 :Node.js 可以在多种操作系统上运行,包括 Windows、Linux、Unix、Mac OS X 等。
  4. 共享代码 :Node.js 允许在客户端和服务器端共享代码,这使得开发人员可以更容易地进行全栈开发。
  5. 丰富的生态系统 :Node.js 的包管理器 npm 提供了大量的库和工具,可以帮助开发者更快地开发和部署应用程序。
  6. 高效性能 :由于 Node.js 是基于 Google 的 V8 引擎构建的,因此它能提供非常高效的性能。
  7. JSON 支持 :在处理 JSON 数据时,Node.js 的性能非常高,这使得它非常适合构建 RESTful API。

尽管 Node.js 具有许多优点,但也并不适合所有类型的应用。例如,它并不适合 CPU 密集型应用,因为 CPU 密集型任务会阻塞 Node.js 的事件循环。此外,Node.js 的错误处理也相对复杂,需要开发者有足够的经验才能正确处理异步编程中的错误。

回答者:伶俐小贝壳日期:2020年07月12日

我是工作8年的软件开发工程师,其中6年前端开发,2年ASP.NET开发,深刻体会前后端技术的变革,特别是Node.js带来的巨大变革优势。

随着前端技术的发展,JavaScript语言更新换代,语法更加优雅,功能逐渐强大,重视度不断提升。特别在ES5(EcmaScript)标准化JavaScript第5版的出现,JavaScript语言发展到了巅峰时期,这时候逐步从webkit浏览器内核ChromeV8JS解析引擎孵化出了Node.js:能够支持使用JavaScript语言开发应用的运行时环境,提供与后端能力媲美的服务处理功能。

因此,由于Node.js源自前端JavaScript语言诞生,具有很多独特的优势:

  • 满足标准化后端输出的各种请求、响应场景
  • 前端资源处理的支持度高
  • 共享前端js周边生态
  • 支持单页面应用的SSR服务端渲染

满足标准化后端输出的各种请求、响应场景

浏览器标准化数据请求、响应报文 。当前主流前后端分离的web应用开发,细分为前端页面渲染和后端API输出响应报文。其中前端最终是可以作为静态资源发布,而后端需要提供响应的报文。在web通信方面,提供的一种标准是restful,即GET、POST、PUT、PATCH、DELETE,增删改查的HTTP请求类型。

Node.js提供与后端一致标准化的HTTP请求响应方案。 对于通信来说,最希望的就是通信双方使用标准化的协议。Node.js的http响应模块提供了request、response对象,同样可以输出后端能够输出的各种场景报文场景。

前端资源处理的支持度高

与其他后端语言相比,Node.js能够搭配插件具备独特有效进行前端资源处理的能力。 比如,通过webpack插件,能够对需要对js文件进行逻辑处理、合并、压缩处理后再输出,基于Node.js很方便使用js的方法进行处理,但其他语言很难针对js资源内部进行处理。

共享前端js周边生态

Node.js开发应用时,可以使用各大社区提供的js资源,有效实现所需业务需求。 在JavaScript领域,是有世界范围内较好的技术生态社区支持的,如npmjs社区,开发者可以通过社区提供的共享资源,减少开发成本,提高生产力。

支持单页面应用的SSR服务端渲染

React、Vue单页面应用首次加载白屏问题 。当下主流的开发模式为:前端使用如React、Vue开发的单页面应用前端项目,后端为Java等面向接口输出的项目,两者有机统一。而随着单页面项目的发展,客户端渲染成本越来越高,首次加载会出现一直白屏问题。因此,我们需要服务器渲染技术ServerSideRender(SSR)。

Node.js友好支持SSR服务端渲染。 前端的单页面应用项目,经过简单改造后能够支持SSR服务端渲染。这种技术的好处是:既能符合SEO搜索引擎友好,又能避免首屏白屏问题。例如,React的服务端渲染框架Next.js,Vue的服务器端渲染框架Nuxt.js,都是基于Node.js为基础的优秀解决方案。

Node.js发展方向

基于Node.js为基础的衍生框架的日益发展。 这几年的前端发展历程中,产生了很多基于Node.js平台为基础衍生的各种插件、框架,Node.js推动了前端在前端工程化、服务端能力的发展。 比如:企业级中后台框架eggjs,方便进行开箱即用的基于Node.js为基础的服务端框架,方便了很多中小企业快速低成本开发中后台项目的需要。

Node.js衍生分支deno逐步支持JavaScript、TypeScript编译。 随着前端工程化、标准化的演进,越来越严谨、标准。于是TypeScript语言应运而生,提供强类型、面向对象等优秀特性。而Node.js官方团队逐步衍生出分支软件deno,天然支持JavaScript和TypeScript。 Node.js越来越推动标准化、工程化发展。

写在最后

Node.js能够天然支持JavaScript语言,对前端友好,满足标准化后端输出、优秀的前端资源处理能力、共享前端js周边生态和支持单页面应用的SSR服务端渲染等众多特性,决定了与其他后端框架的不同。 对于需要前后端配合的项目,Node.js具有大的优势,是值得深入研究的优秀框架。

以上是我的观点,希望对你有所帮助。

回答者:望情不忘情日期:2020年07月13日

先问是不是,再问为什么,个人觉得nodejs 做后端没有啥优势

回答者:0祥0子0日期:2020年07月13日

nodejs做后端非常大的优势在于 性能非常高 内存非常低 脚本开发很快 分布式不行 擅长单机

java相当耗内存 性能比nodejs稍微高一点点 擅长企业级 分布式 大数据 搜索引擎 等等热门技术

golang 性能超了java 内存非常低 第三方库较少

回答者:李东bbsky日期:2020年07月08日

Node.js学习非常简单,上手比较容易,非常适合快速开发出一个产品原型。

使用Node.js作为后端和前端有着统一技术栈都是使用JavaScript,这有利于前端开发工程师无缝进阶为全栈工程师。尤其是最近比较火的Serverless,各大公司也是纷纷把Node.js作为主力语言,归功于Serverless的便利性,这让Node.js在跨多端开发上优势非常明显,一个前端开发工程师就能够独立hold住整个产品的开发。

Node.js自身的生态非常完善、社区非常活跃,拥有编程语言里最多的依赖包,虽然还不能和PHP、Java相比,但是处理大多数业务上完全足够。Node.js可以有效降低招人成本、用工成本以及时间成本。