跳到主要内容

对于node的一些思考

1.node存在的价值

现在很多应用都倾向于前后端分离,后端只提供api,前端来做渲染,这样分工明确,大家都可以专精自己的知识,不是很需要前端对后端有特别好的认知,后端也无需对前端有太多的了解,只需要专注自己的层面做事情就好,大家商议好数据结构和模式,甚至可以只通过文档来沟通(当然,是比较理想的情况下)。 不过,万物有利必有弊。这样做的好处很多,当然不能说一点坏处也没有。首先就是这样会产生一些“三不管”地带,比如说登录、鉴权、重定向等一些内容有时候就会产生质疑,到底由前端做还是后端做。 这种情况比较好的方式就是交给node来做。node就是用JavaScript来写服务端,这样更贴近于前端,却可以写服务端的内容,而且由node来写登录,鉴权,重定向等等会比较方便,node相当于前端和传统后端的一个“交通枢纽”,这样,而且由于node是JavaScript的,所以前端工程师比较容易上手,而鉴权和重定向这些内容也是前端会更加的熟悉,也更容易操作,这样可以让后端更加的专注于自己的业务逻辑,不需要分出人力和精神来维护登录鉴权等一些内容,当然如果某些特定api需要特定的鉴权肯定还是要做一些特殊的鉴权的。

2.node的上手难度

我这几年对于一句话感觉越来越有道理:

当一个人学会某种知识之后,就再也回不到没学会之前的状态了。

用一个俗语来说就是:会者不难,难者不会。我刚开始学node的时候就感觉很奇怪,啥都不懂,脑子里冒出来最多的几个字是——这都是啥? 但是随着对服务端的一些内容的了解,和对node的api的一些知识的学习,我对node也越来越看好了,因为他有很大的优势:基数大,易上手,社区强大,有一些比较成熟的企业级框架,这里的社区强大指的的JavaScript,并不是node,单纯的node的社区还不是很强大; 随着对node的不断了解,我也感到最近对于所谓的node的批评了,担忧了,会不会替代某些东西了,会不会昙花一现了,总感觉是杞人忧天, 首先,node有一些问题这个很正常,比较node才发展十年左右,有一些技术不是很成熟也很正常,Java,Python,c等等都是进过三四十年的沉淀才有今天的地位; 其次,node也并不存在抢谁饭碗的问题,术业有专攻,node和Java,Python,go等等比较起来应该说是各有千秋,只是在不同的情况下有更好的性能而已,抛开使用场景而去讨论语言是不理智也是不科学的,好的思路应该是两者互相结合,取长补短。 最后,node会不会昙花一现,我认为也是不会的,因为node在国外其实有很多成熟的企业用到的实战上,国内的企业级node应用也发展很快,现在前端来说,学会node是大势所趋,如果知识单纯的写页面,这样的前端发展道路会比较窄。

3.node适用的场景

    node天生的单线程以及非阻塞I/O让node天生适合I/O密集型场景,而事件驱动,又让node对于高并发的场景非常适合,Node利用事件循环的处理能力,而不是启动每一个线程为每一个请求服务,资源占用极少。但是node因为大量计算占用CPU导致无法继续调用异步I/O,所以对于CPU密集型场景不太适合,node使用场景比较多的就是通过作为一个中间层,将I/O操作放在node层,然后将需要挖掘服务器CPU的操作放在Java/C/C++等服务中;     node经历这么久也有很多成长,比如之前的回调地狱,现在有很优雅的async/await方案,

Loading Comments...