如何评价node
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何评价node相关的知识,希望对你有一定的参考价值。
性能比express稍微差一点,我在项目中使用koa+ES6, 使用了很多的Promise和yield,减少了缩进和callback,代码更加简洁,可维护性更高;比起性能的略微减弱,开发效率的提升和维护成本是划算的!使用co还不如直接使用ES7的async/await,这样就不需要用co来包一个generator了;这里代码执行仍是异步运行的,只是写代码的方式发生变化而已,你任然可以执行一些并行的操作比如Promise.all() 参考技术A Node的优点和缺点都是非常明显的。。。在我看来,Node最大的优点是简单,学习门槛低。。。部署也方便。。甚至连环境变量都自动帮你配好了。。我只用了大约半个多小时,就手把手教会了正在上小学的侄子,在Windows系统上,如何安装Node,并用express部署一个单页面的“hello world网站”。
要说缺点嘛,本来也不该算缺点。。。但问题在于网上的一些人(合理怀疑,他们是前端开发人员),过度夸大了Node的功用,并且为Node选择了“完全错误的假想敌”。。源自网上常常见到的几个话题,比如“Node是否可以取代JAVA?”,“Node与Python哪个好?”,“ASP.NET开发人员不必担心Node的五大理由”等等
其实说到底,如果以php作为假想敌,Node显得非常好。几乎找不出缺点。但非要把JAVA,PYTHON.C#当对手,实在是自讨没趣了。。。改如何评价Node?首先就要说清楚,什么是官方反复强调的Node特点——“非阻塞异步IO”。
其实我第一次看到这个名词的时候就笑了。。而且不自觉的想到了“没停下来的跑步前进”这个词,既有”跑步”,自然就是“没停下来”的。。。既有异步,那当然是非阻塞的。。不然呢?
说穿了,所谓非阻塞异步IO,其实就是开启一个线程池里的线程,去执行读写操作。。每当要读写文件的时候,就开启一个新的线程,去执行这部分读写操作,而主线程则继续向下执行。。。。这是新技术吗?当然不是。。十几年前,英特尔的奔腾双核CPU诞生,各大语言就有这功能了。。。Node强调这一点,感觉有些混淆概念,忽悠外行。
有一些语言(比如JAVA和C#),可以通过线程池,来启动一个线程,至于什么时候用同步,什么时候用异步,可以自己决定。。。跟这些语言相比,Node不仅完全没有优势,而且是被打脸的。。等于限制了自由度,很多本该由开发者决定的东西,变得无法把控。。简单概括就是,人家的异步是有开关的,Node的异步只能一直开着,关不上。。
还有些语言,其实并不能操作线程,而是通过协程来实现的。比如Python。。但问题在于,Python本身也有自己的异步框架 ,比如Tornado、Twisted、Gevent等,和Node的原理大同小异。。反而选择更多。。Twisted的性能甚至比Node更好。。。一句话概括,虽然不至于被打脸,但也同样没优势可言
而最能体现Node优势的,就是PHP了。。。尤其是5.5版之前的PHP,不仅不能操作线程,甚至连协程都没有。。。所谓的多线程,都是靠扩展,或一些奇技淫巧实现的“伪多线程”。。。这时候Node的优势便显现出来了。。单单比IO,大概能比PHP快80-100倍。。说是秒杀也不过分。。。
总结一下,Node天生就是用来虐PHP的。。。虐出翔也没问题。。但是,千万不要去试图用Node去挑战JAVA,C#,PYTHON之流,那真是不知天高地厚。
如何评价 Android L
至少是革命性的,相对于以前的操作系统,简化更加便利化、实用化,如果再精细一些大有媲美ios 之势。 参考技术A 对用户来说界面焕然一新,而且采用了全新的虚拟机,还有其他一些新东西。其实L是对开发者最大的礼物,各种API,这也意味着谷歌对安卓的定位是不局限于手机平板而是全方位的,今后在各个平台用户都可以拥有统一而独具新意的体验,可以说L为此打下了坚实的基础。以上是关于如何评价node的主要内容,如果未能解决你的问题,请参考以下文章