Node js 做服务端优缺点
分析一波nodejs在后端中的优缺点 缺点: 1.nodejs单线程,不能做cpu密集型操作,导致时间片不能释放,阻塞后面的任务。 2.nodejs可靠性比较低,一个地方报错会导致整个程序崩溃,需要守护进程或者docker重启来解决。 3.像使用多核性能的时候需要使用cluster或者部署多个实例,比较麻烦。 4.内存默认0.7G和1.4G,设置大了之后垃圾回收会变慢,可能需要多部署几个实例。 5.nodejs类型的后端比较难招,需要前端转后端或者后端转nodejs。
优点: 1.nodejs底层异步io,性能比较好。 2.编写起来不用担心线程的问题。 3.开发速度高,弱类型语言比较灵活,不像强类型一样需要各种转换,代码量少。 4.单页应用ssr比较方便,上下文比较相同。 5.前端转nodejs相对来说对语法天然熟练。
如果开发web的话,主要异步io,可以使用nodejs,性能非常好,不过最好也要看下目标城市的nodejs所使用的公司是否比较多,在cpu密集型的时候用cc++,go做个服务,或者cc++做个nodejs模块?
依赖管理问题 把依赖都放项目本地是绝对唯一正确的做法,一切全局依赖在逻辑上就是不合理的,实际使用的时候基本都是各种无解的问题。这不分语言、项目类型等等,这里最严重的就是C、C++这种古老语言。(即使是C++也在努力改进这方面的问题)NPM之所以那么做,是因为:磁盘空间是服务器上最不值钱的资源(开发机器就更别提了),如果多用几百GB硬盘就可以减少一个诡异的bug,那绝对是稳赚不赔的。
磁盘空间不值钱这个比较赞同,但是并没有解释为什么全局依赖在逻辑上不合理这个问题?maven不是很合理的吗?也很稳定,很少听到java程序员吐槽maven的依赖设计不合理