Node.js是一门用javascript编写服务端应用的语言,具备非阻塞、高I/O的优势。相信不少前端开发工程看到这个描述就跃跃欲试了。终于有机会跟后台开发一争天下,推翻程序员鄙视链理论指日可待啊(c>c++>java/.net>前端)。javascript
然而事实上,Node.js已经走过了10年了,并无在服务端应用方面掀起太大的波浪,反却是在包管理,工具化方面应用更为普遍,如npm仓库、webpack等。所以除非大家团队原本的后台技术栈就是Node.js,否则要想在服务端说服公司使用Node.js仍是须要费些心力的。html
笔者所在公司使用Node.js已经有两年多,从一开始使用Node.js替代Jsp作先后端分离,到使用Node.js承担公司部分创新性项目积累了必定的经验。接下来,本文将描述说服使用Node.js面临的难题?如何找准立足点并让领导接受使用Node.js?你们有什么意见和想法欢迎留言讨论。前端
本文写于19/06/14。也许将来说服使用Node.js并非一件很难的事,本文所描述的也就不适用了。java
在大部分的公司,后台服务基本是由java、c++等语言把持。所以想用Node.js去作服务面临着各类困难,主要缘由以下:node
以java为例,通过长时间的发展和线上验证,java的生态至关完善。在当下微服务体系大行其道的背景下,各类微服务解决方案就像是为java而生的同样,例如使用Spring Cloud
体系,你能搭建出一整套的解决方案。而Node.js在这块还属于初级阶段。幸运的是,这类解决方案基本提供了标准的接入方案,Node.js等非java体系语言也能接入。然而接入门槛较高,如java的接入提供了相关sdk,只须要编写相关的配置文件便可,Node.js是须要本身编写代码实现的。webpack
另外,小公司为了下降运营和维护成本,通常只接受一种后台语言,java体系下,问题的排查和解决比较容易找到资深的工程师解决。c++
后台开发对算法、数据接口、设计模式、逻辑分析等能力的要求较高,较为严谨。而传统意义上的前端开发,只需对用户负责就能够了,相信你们也听过Don't let me think
这句话。前端面向用户体验负责,偏向于感性。作好这一点,也能成为一名优秀的前端开发工程师。可是若是想让Node.js在服务端有所应用,相关技术能力是须要补足的,所幸向周围的大牛学习和多逛技术论坛能够弥补这点。程序员
"毕竟前端的入门门槛比较低"相信这句话做为前端的同窗应该都有全部耳闻。而且JavaScript
是一门弱类型语言,在后端使用不严谨(可使用Typescript替代)。改变刻板印象是一个长期的过程。这里也感谢国内大厂,线上环境对于Node.js的大规模使用,正改变着人们过往的印象。web
这个主要是由于两个方面的缘由:算法
deno
,打击了你们使用Node.js的信心;总之,使用Node.js作服务端开发语言,须要有强大的决心。可是决心是不够的,咱们使用一门新的技术,须要找准立足点。
当咱们终于鼓起勇气,向领导安利Node.js的时候,咱们总不能说,“你看,某某厂也在用”吧。凡事预则立不预则废。咱们得找准立足点,让领导明白这个只有前端的同事能作,或者作的更好。我以为能够从如下几个方面进行论述。
前端开发理应为用户体验负责。
曾几什么时候,先后端开发的分界并无那么明显,大部分的前端页面由后台人员兼着作,一套JQuery+BootStrap即可走天下,例如J2EE、PHP、ASP.NET等。但随着前端框架的出现(Angular、React、Vue),其复杂程度和上手难度已经不是后台能开箱即用的了。慢慢的,如今的后台人员“不懂”前端,关于体验前端更有发言权。
同时,复杂的前端框架也让首屏时间愈来愈长,白屏也将致使用户流失,须要咱们作优化,常见的手段有如SSR
,PWA
。而这些若是不借助与Node.js的能力,是很难实现的。
服务端设计的接口应面向通用服务,趋向稳定,后端团队理应关注于服务自己,并尽可能少的关注于UI。一套接口,多端适用。
面向UI的接口应交给BFF
(Backends For Frontends),实现数据聚合、裁剪和格式化。秉着服务自治(谁使用,谁负责、谁开发)的原则,这一层应该交由前端团队负责。
前端是一个须要不断学习,不断充电的领域,各类新的技术在不断涌现并成为主流,如PWA
、GraphQL
、SSR
等,须要咱们去尝试。Node.js的使用能让团队在让这些技术落地,提升团队活力和技术水平。一个有想象空间的团队,所能创造的东西的是不同的。
树立专业形象主要为了达到跟领导创建信任感,让领导知道你是能把一件事情作好的人,即首先让领导信任你这我的或者团队。这个须要在平时多跟领导交流,表现出我的素养。我认为主要分为两个方面:
以开放和包容的态度对待技术。 在后台的大牛面前,Node.js能作的内容仍是小打小闹,他们在各方面都有成熟的方案。例如在全链路监控、系统性能度量、算法、数据库等等方面,所以多跟后台人员讨教,兼听则明。
Node.js的性能如何,可否顶得住现有压力,不是靠咱们几句话就能描述清楚的,一份压测报告才是最好的证实。若是是改造原有系统,有个直观的数据数据比较会更好,咱们使用Node.js改造JSP站点的时候,渲染同个页面压测出来的数据是有10倍+性能的提高的。
好的技术设计文档利于你们了解你的架构和后续作扩展。所以一份长期维护的文档也是很重要的。如何写一份好的文档,推荐你们看这边文章What nobody tells you about documentation
如下是本人关于Node.js将来发展的一些观点,仅供参考:
service mesh
的规模化使用以后,使用任何语言都能开发微服务,而不须要关心如何搭建微服务体系自己。对于使用Node.js是一种利好;k8s
+Prometheus
便可作好node.js运行时监控,线上监控趋向简单;一些有用的资料