搜索上面各种技术介绍,博客 帖子很多都是两年以前的。51job上面node 职位也不是很多。 编程语言排行,去年JavaScript降低了一位。而且估计这些用户大多还是以前前端的用户,JavaScript这门语言,在前端至少很长一段时间是无法撼动的。就跟后端的java一样。但是js的后端node,种种迹象表明,node很难火起来呀! 不知道目前有没有上千万级别用户,以node为主要开发语言开发的公司呢?
@yakczh 说得已经很清楚了啊,已经火过了,现在都忙着埋头填坑。
说得太直接了,这里有的人会不高兴,会表示不欢迎的。@alsotang 还是挺不错的,比较客观开放,但是一些自认为比较牛逼的人是会不舒服的。发这种帖子的你也不是第一个,也不会是最后一个。
你要了解真实情况可以看看Node.js 在双十一中有哪些应用,表现如何? 尤其看与java对比的那部分。
nodejs刚出来的时候是以性能著称的,为了追求性能,他把所有阻塞操作都用回调异步来实现,再加上v8,在三年前来看,这性能跟PHP,java,python比那是杠杆的。但现在已经没有任何性能优势了,尤其是go,fibjs等新语言,新框架出现之后,性能的实际情况可以看响马大哥的测试
就连PHP都在大力提高性能。现在实际上也没有多少人再提nodejs的性能优势了。性能优势没有了,甚至落后了,现在宣扬的重点是生态,是巨量的库,是前后端统一。当然有的人会说,我不在乎性能,公司刚起步,nodejs性能足够了。说这种话的人是正确的,nodejs就是适合创业公司,人手不多,前后端语言统一,快速原型开发迭代。但nodejs绝对不是银蛋,他适合干的事情,也就是中小项目的原型开发,前端工具库,模板渲染等。阿里系拿nodejs主要用来做前后端分离的,把原来不该是后端的活交给nodejs去干,后端只要提供数据,nodejs负责渲染就行。这种开发模式对大公司而言就减少了沟通成本,将取后端数据的API给nodejs层调用就是,网页渲染成什么样由nodejs决定,这部分代码原来是后端的人写,显示效果又是由前端决定的,这中间就存在沟通成本,现在全由前端干了,自然效率就提高了很多。顺带的,nodejs还能提供性能上相对于PHP或java的好处。这是对nodejs正确的用法,要么是中小项目,要么是阿里这样作为渲染层,要么为前端提供各种工具链。
就nodejs本身而言,坑太多了,javascript语言本身就是个坑,这就决定了他不适合大型,对稳定安全有一定要求的项目。阿里自己的人说nodejs可能需要5-10年来弥补和java的差距。我并不清楚这种判断的依据,但肯定是经历过,对比过才会有的结论。
javascript语言现在已经进入了快速进化期,ES6跟ES5比,加入了很多新特性,很多语法糖,新特性和语法糖起的作用有好有坏,好是很多新特性的确能够简化代码,坏是语言越来越复杂的同时,还继续保持了对老版本的兼容性,javascript原本自由的语法问题会被新增的复杂度迅速放大,如果不做一定的硬性编码规定,团队作战将是一个极大的考验。nodejs巨量库,大多是精巧的个人项目,或许是对javascript这个语言特性最好的注解。我举个例子,继承,是用ES5的原型继承(ES5的原型继承就有好几种),还是用ES6的class语法糖?这需要强约束。异步,我可以用callback,promise,generator/yield,async/await,这也需要强约束。
javascript大量的用户本身也是坑,nodejs最不缺的是人,但最缺的也是人。会javascript的人茫茫多,但用的真正好的却很少,javascript是典型的入门容易精通难。大量从前端转nodejs的人,没有一定的基础,搞了小项目就觉得自己是后端大牛了,这样的人不在少数,把nodejs当银弹的人或公司不在少数。大家看看nodejs项目核心贡献有多少中国人就明白了,几乎是等于零蛋,阿里的人在Node.js 在双十一中有哪些应用,表现如何?再一次讲了实话,大家可以去看看。
javascript大量用户中坑不少,那巨量的库中的坑有多少大家只能自己去体会了。并不是说高质量的库没有,而是少。精华就那么几个,其他数量众多能有什么用?敢随便用么?其实并不敢。
我如果继续下去,马上就会有人过来说怪话了,以上只是个人观点,大家自己去斟酌吧。
顺便介绍下我的个人项目,c + Lua + libuv 实现的异步网络库,tcp部分已经实现,http部分正在编码,过年后实现tls,https,websocket和一些数据库客户端(初期可能会直接用openresty现成的)
https://github.com/coordcn/LuaIO
通过lua的协程在c代码层面将回调异步转换为形式同步,异步编程将和同步编程没什么两样,性能和编程模型统一了。
阿里的人说 他们用node 做CDN的源站 。大量的提高了QPS。 节省了很多成本。 但是我不知道为什么一定要用node做源站,用java 或者 其他语言做源站 不也是一样提高。 这个与node在阿里的应用没什么关系吧。
@coordcn jsp不用说了,虽然java一开始靠jsp + servlet 但是现在由于tomcat 等web容器太过臃肿,性能一直跟不上,java现在主要还是中间件的稳定强大。php之所以占领前端市场也是这个原因。 那现在的意思,阿里是想用node 把php替代掉了