原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com

首先本文的目的不是引发语言之争,纯属个人的一些思绪记录。

因为工作原因,用Node.js做过几个项目,基本都是涉及REST方面的。有一个涉及消息转发的服务,分别部署到6台服务器,目前已经成功处理数亿的消息,没有发生消息丢失,总体运行稳定,说明Node用在产线环境是能经受考验的。

今年Node社区发生了一件大事,那就是Express作者TJ大神转投Go的怀抱,理由是大神要做云端程序开发。作为悲催的偏后端码农,开始怀疑Node在后端的表现,有了以下偏见:

1. Node是运行在V8之上的,虽然有的模块已经被改良,但基因没变,而V8是为桌面浏览器设计的,服务端毕竟要求会苛刻一些。

2. Node作为Javascript运行环境,而Javascript的发展受限于ECMA规范,ECMA规范可能是双刃剑。

3. 总感觉event loop比较脆弱, 可以充分利用IO, 但无法执行CPU密集性工作,多核运行需要require cluster,一直觉得这种做法有点山寨。

4. Callback层次的问题,可以用async等库进行改善,但还是觉得山寨。业务逻辑在回调机制下支离破碎,凡人难以理解。

5. 生态的问题,Javascript由于门槛低,github各种node库相当泛滥,质量参差不齐,好在有源代码,踩坑了再回来填坑。

6. 一些第三方库或为了追求性能,或为了突破限制,需要结合Node源码进行编译,总觉得不够环保。特别是产线服务器不能访问外网的情况下,就要抓狂了。

7. 我自己Javascript水平不怎么样,也就认为弱类型语言可维护性不如强类型语言,单元测试可以保证正确性,但难以重构。

基于以上莫须有的理由,我不知道Node 1.0以后的路会怎么走? 往哪方面走?还能走多远? 目前1.0已经有些难产…

建议:暂时不要将Node用于核心业务, 虽然paypal宣称已经这样干了。充分利用Node的优势,做和前端交互性的工作,并且是在规模不大的时候。如果把后端系统想象成一个鸡蛋的话,那蛋黄就不要用Node来做,一家之言。

有点担心Node.js的未来了的更多相关文章

  1. Node.js TLS/SSL

    Stability: 3 - Stable 可以使用 require('tls') 来访问这个模块. tls 模块 使用 OpenSSL 来提供传输层(Transport Layer)安全性和(或)安 ...

  2. 一名全栈工程师Node.js之路-转

    Node.js 全球现状 虽然 Node.js 在国内没有盛行,但据 StackOverflow 2016 年开发者调查,其中 node.js .全栈.JavaScript 相关的技术在多个领域(包括 ...

  3. 好未来数据中台 Node.js BFF实践(一):基础篇

    好未来数据中台 Node.js BFF实践系列文章列表: 基础篇 实战篇(TODO) 进阶篇(TODO) 好未来数据中台的Node.js中间层从7月份开始讨论可行性,截止到9月已经支持了4个平台,其中 ...

  4. heX——基于 HTML5 和 Node.JS 开发桌面应用

    heX 是网易有道团队的一个开源项目,允许你采用前端技术(HTML,CSS,JavaScript)开发桌面应用软件的跨平台解决方案.heX 是你开发桌面应用的一种新的选择,意在解决传统桌面应用开发中繁 ...

  5. Node.js 项目搭建

    关于 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识.本书绝不是一本“Hello World”的教程. 状态 你正在阅读的已经是本书的最终版. ...

  6. heX:用HTML5和Node.JS开发桌面应用

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  7. PHP vs Node.js

    网络正在处于一个日新月异的发展时代.服务器端开发人员在选择语言的时候非常困惑,有长期占主导地位的语言,例如C.Java和Perl,也有专注于web开发的语言,例如Ruby.Clojure和Go.只要你 ...

  8. [转载]Node入门 » 一本全面的Node.js教程

    http://www.nodebeginner.org/index-zh-cn.html 作者: Manuel Kiessling 翻译: goddyzhao & GrayZhang & ...

  9. (转)heX——基于 HTML5 和 Node.JS 开发桌面应用

    本文转载自:http://techblog.youdao.com/?p=685 简介:heX,一个允许你采用前端技术(HTML,CSS,JavaScript)开发桌面应用软件的跨平台解决方案.是你开发 ...

随机推荐

  1. web安全入门书单

  2. iOS drewRect方法

    You do not need to override this method if your view sets its content in other ways. By the time thi ...

  3. iOS之使用模拟器报错:resource fork, Finder information, or similar detritus not allowed

    很奇怪的问题,使用真机测试没有问题.但使用模拟器测试的时候就会报这样的错误,错误类型为:Code Sign Error 错误提示是这样:resource fork, Finder informatio ...

  4. brew管理node的版本

    摘要 nvm可以.brew怎么去切换不同的node版本 转载请注明出处:http://my.oschina.net/uniquejava/blog/491030 brew详解:http://stack ...

  5. Apache Permission denied (httpd.conf配置和目录权限无问题)解决办法

    今天在CentOS5.9中配置zabbix时出现错误:Apache 403 error, (13)Permission denied: access to / denied 检查了一圈httpd.co ...

  6. 搭建ssm的领悟

    今天搭建了ssm,但是一直报错误 "Cannot load JDBC driver class 'com.mysql.jdbc.Driver" 我以为是版本的问题就换,以为是路径加 ...

  7. tomcat发布脚本

    #!/bin/bash #发布相关目录Tomcat_log='/home/CodePub/tomcatlog'dev_package='/home/CodePub/package'old_packag ...

  8. View的弹性滑动

    View的弹性滑动 实现弹性滑动的思想:将一次大的滑动分成若干次小的滑动并在一个时间段内完成,具体的实现方式有很多,如通过Scroller.Handler#postDelayed以及Thread#sl ...

  9. 安卓(android)之实现断点下载功能

    一.建立实体类 1.文件实体类 package com.example.zjw.myapplication.dao; import java.io.Serializable; /** * 预下载文件实 ...

  10. MySQL中EXPLAIN命令详解

    explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了: 如: expla ...