1. 聚能聊>
  2. 话题详情

Node.js 应该处于技术架构中的哪个位置?

nodejs

Node.js 从 2009 年出世到现在,使用 Node.js 开发的构建工具改变了前端们的开发流程,已经是大部分前端开发者电脑上必装的 JavaScript Runtime 了。那它作为一门后端语言,在后端技术架构方面又处于什么位置呢?

首先说下目前我了解到的技术架构,主要有两种 :

-纯 Node.js 应用,从前端到数据层都由 Node.js 处理(创业公司居多)

-将 Node.js 作为中间层,Node.js 作为业务中间层调用数据接口(大公司前后端数据分离方案)

是什么原因让大家做出这样的选择呢?

Node.js 目前是不是能很好的驾驭大型的项目呢?配套设施是否已经足够成熟了?与 Java 等传统语言能不能在后端开发上处于同等的地位?

参与话题

奖品区域 活动规则 已 结束

67个回答

15

死月 复制链接去分享

做大底层基本上是没戏的,但是可以作为异构服务化中的一个环节。——

无论是业务逻辑层(取代目前一些 Java / PHP 等的业务层,当然没说要推翻现有的重写,而是说以后新的服务出来之后技术选型可以考虑 Node.js),又或者网关层(包括中途岛类的前后端分离方案)。

如果是一些内部小型系统或者外部小型系统,也可以一手包办。

个人原因有如下几点:

  • 语言舒适区,作为从 C++ 转过来的我,认为 JavaScript 比写 Java 更爽;
  • 生态活跃,完全有能力驾驭一些业务层的大型项目(极端情况下的 CPU 密集型系统除外,当然 Node.js 实际上也并非无力驾驭这些系统,只是开发上会复杂一些);
  • 开发成本低,一套系统没有那么多的冗余代码,在一套系统的快速出原型上有比较大的优势,在处理 IO 密集的操作(尤其是现代大型互联网应用服务化的时候,要频繁请求内部或者三方服务或者接口的情况下)有着天生的节省开发成本的优势;
  • 人员复用,虽然很不愿意承认这一点,但是的确在一些小型的能跑起来就可以的内部应用里面,前端同学可以直接跑过来看看文档就开写(但是要驾驭正规的企业级互联网应用的话还是需要系统学习后端知识,而不是目前网上炒得很热的所谓的全栈)。

就目前而言,对于生态圈的评价大概是这样的:

  • 需要更多的高质量开发人员投入到生态圈中,虽然 NPM 中有很多高质量的包,但也不排除有低质量的内容;
  • 就企业级的 Web 框架来说,还有缺失,或者不活跃。目前社区中最火的 Express 和 Koa 来说实际上称不上是框架,太过于自由以至于看起来虽然简单谁都能上手实际上对开发人员的素质要求非常高,一个不注意整个项目会掉入无尽的技术债黑洞中。

最后讲讲 Node.js 在我厂中的位置探索:

  1. 完整的重 App 的后端,其中有调用更底层的服务(如通用的用户服务等);
  2. 完整的小型 Web 后端;
  3. 异构服务化中的一些服务,如供其它业务方调用的短连接服务等;
  4. 前后端分离胶水层,某种意义上就是一个网关层
  5. 计算密集型任务集中处理系统——用多进程进行任务处理;
  6. 前端工具,如 Webpack 打包等。

先这样吧,后续想到继续补充。

啊平淡 回复

厉害呢 我的哥

xinyu198736 回复

厉害了我的哥

呜喵喵喵 回复

厉害了我的哥

tusdasa翼 回复

厉害了我的哥

新视窗 回复

厉害了 我的哥

bycobeta 回复

厉害了 word哥

浩瀚动酷 回复

厉害了我的哥

youcongtech 回复

受用了

评论
6

扬风飞雪 复制链接去分享

本人是2015年底开始学的nodejs,春节期间突击看了一本书,觉得还不错,然后直接运用到公司开发的一个发布云平台上。
当时选择它主要考虑几个方面,一是本人是C++,iOS开发的,对JAVA不懂又不想学;二是学好JS就即可做后端又可做前端;三是拿它做接口api高效,性能好;四是开发环境搭起来很简单,部署也很简单。
刚开始用它重写了整个云平台的api供APP调用,后来有部分后台的模块也采用它去开发,那种感觉真的很爽,从底层数据库设计,到后端业务接口封装,前端界面开发,一个人全部搞定。
刚开始还害怕nodejs不稳定,直接用在我们的云平台上风险挺大,现在经过半年多的实际检验,平台上有百家客户都在使用,服务还是相当稳定的。
大概花了半年时间,把一些基础模块做了封装,把遇到的坑都填了一遍,现在开始从团队内部培养人一起来做,上手还是挺快的,依葫芦画瓢基本上就能满足我们的新业务需求,只要在一些关键地方把好关就行。
个人感觉nodejs很适合创业团队的核心骨干去做,一个人可以同时承担多个角色,但是他必须掌握得比较全面,后端设计能力,前端能力,甚至移动客户端开发能力,有了nodejs,就像一根线把整个业务所需的所有开发角色都串联起来了,做起来就会非常得心应手。

suo 回复

6666

评论
3

琴瑟 复制链接去分享

Node.js简单易学,很多前端设计人员可以很快上手做后端设计;但是它可靠性低,优化难,难调试;所以还是做接口吧。

云栖技术 回复

坐稳了,送你上去

brainpoint 回复

成功依赖于开源。商业应用需成熟框架支持

评论
4

云栖技术 复制链接去分享

Node.js其实有很多大公司都在用的,比如eBay, Microsoft。。。等等,驾驭大型的项目是可以的。
在说说优势把:
1、采用事件驱动、异步编程,为网络服务而设计。其实Javascript的匿名函数和闭包特性非常适合事件驱动、异步编程。而且JavaScript也简单易学,很多前端设计人员可以很快上手做后端设计。
2、Node.js非阻塞模式的IO处理给Node.js带来在相对低系统资源耗用下的高性能与出众的负载能力,非常适合用作依赖其它IO资源的中间层服务。
3、Node.js轻量高效,可以认为是数据密集型分布式部署环境下的实时应用系统的完美解决方案。Node非常适合如下情况:在响应客户端之前,您预计可能有很高的流量,但所需的服务器端逻辑和处理不一定很多。

Node.js现在已经相对成熟了,大公司都在使用就是最好 的解释。、至于java吗。老牌的语言,怎么说呢。技术上已经没啥问题了,很多人还是顺手用java,取代恐怕是时间上的问题了

1

钉友 复制链接去分享

我是一个刚刚学习node.js的小白, 我的理解, node更适合做架构中, 中台的开发. 未来是后台/中台/前台 分离开发的时代.

水墨寒 回复

中台 ,第一次听说哎

评论
2

1697573648930773 复制链接去分享

一种语言如果什么都可以做,那么他就是什么都不可以做

1

脚印信息 复制链接去分享

我们就在大规模用了,包括docker化,企业框架,api接口层,微服务,消息总线,负载均衡高可用。

denghongcai 回复

详细说下负载均衡高可用这块?

评论
1

szm. 复制链接去分享

听说淘宝的页面渲染由nodeJS进行的,像双十一这种复杂的场面都可以控制住,有什么理由相信它不行呢?
就像淘宝用它一样,在特别大型的复杂项目里,它还是只适合做页面渲染这一块。但是当项目比较小,则可以做为后台了,比如一个广告牌,只需要进行一些简单的业务逻辑。

1

春哥叨叨 复制链接去分享

主要使用场景如下:

  • 一些APP后端API;
  • 独立小型内部web站点;
  • 长连接,日志服务;
  • 前后端分离网关路由层;
  • web及h5项目路由层,调用底层JAVA api;
1

嚷嚷安寧 复制链接去分享

已经使用了nodejs开发简单的接口,在开发过程中对自己所使用的技术架构感觉不是太好,有一些跟java接口交互的地方没有完美实现,比如session传递问题。还有使用nodejs实现数据事务处理的问题!总之只使用了使用nodejs实现了简单的数据交互的接口,对于较大项目还没有使用经验!

1

dogz 复制链接去分享

nodejs作为前端主导前后端分离的技术方案。促使大批大前端,全栈名词火热起来。毕竟node作为后端语言,所以在开发,线上稳定性方面还是跟java等成熟的语言有所差距。但是经过几年的发展,node也慢慢变得成熟起来。不管是社区,还是服务稳定性,包括各种性能监控。最主要v8引擎不断更新,提高性能。而且目前nodejs试用场景非常丰富,不管是做服务器,还是做机器人,都有nodejs的一席之地。这都归功于v8引擎的强大,js2c++可随意拓展。促使nodejs发展到一个很盛的时期。相信随着语言以及社区的积累,nodejs前景一片光明。

1

文斯 复制链接去分享

nodejs处理request请求还是很有优势,页面渲染觉得不是nodejs最有优势地方..作为中间层觉得更能发挥作用.

1

dingstudio 复制链接去分享

个人使用Node.JS用于搭建github和coding上的个人静态html博客站点(hexo),总体感觉挺不错的。静态页面感觉扔服务器或者虚拟主机上访问也比动态的ASP、PHP、JSP等快多了,资源占用极小。希望有一天能开发出一种pc客户端和手机app,一键生成静态博客页面。

欢迎访问我的旧版博客(已经停更,采用coding-page服务器+hexo静态博客生成) - old.dingstudio.cn

1

1305273523438159 复制链接去分享

一直拿来当前端工具用,比如webpack,babel,gulp等等。从来没有考虑过用它做服务,就只因为它是JavaScript!

1

亲嘴的鱼 复制链接去分享

node在前端领域还是有很大作用的

1

夜神舞 复制链接去分享

实现功能来说没啥问题。node相比于java系缺少了一些好用的服务治理服务监测框架。 比如JAVA有dubbo, rocketMQ...node已经很好用,只是缺少上层建筑

1

妙正灰 复制链接去分享

第一次认识 Node.js 还得是因为13年发布的 Ghost 要运行在这货上面了。之前一直用的都是 PHP 的 WordPress,思维还是比较清楚的,文件放在该放的位置就行了。 然后 Node.js 就不是这样的思维了,这是让我比较印象深刻的。

然后有安装过 NodeBB、NodeClub,所以我一般都是用 Node.js 跑整个应用的,然后前面加个 Nginx,毕竟个人开发者,所以可能不大用到中间件模式。用 Node.js 感觉还是很顺的,用 NPM 管理和 json 的支持让整个开发和应用体验都非常好。

只要生态足够完整,用 Node.js 开发整个应用的例子会越来越多

0

1118898712837396 复制链接去分享

nodejs纯后端,前端中间件,甚至桌面应用都是可以的

0

archersado 复制链接去分享

计算非密集 IO密集的部分

0

云旷 复制链接去分享

后端中的偏前端,模板渲染、做数据的格式化处理提供 http 接口

4