原创文章转载请注明出处:@协思, 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. 【Android】Eclipse自动编译NDK/JNI的三种方法

    [Android]Eclipse自动编译NDK/JNI的三种方法 SkySeraph Sep. 18th  2014 Email:skyseraph00@163.com 更多精彩请直接访问SkySer ...

  2. 百度UEditor在线编辑器的配置和图片上传

    前言 最近在项目中使用了百度UEditor富文本编辑器,配置UEditor过程中遇到了几个问题,在此记录一下解决方案和使用方法,避免以后使用UEditor出现类似的错误. 基本配置 一.下载UEdit ...

  3. 使用Redis的INCR、Hsetnx、Hincrby的命令生成序列号

    Redis INCR命令 用于由一个递增key的整数值.如果该key不存在,它被设置为0执行操作之前.如果key包含了错误类型的值或包含不能被表示为整数,字符串,则返回错误.该操作被限制为64位带符号 ...

  4. vue学习之旅

    大纲: 属性 事件 循环 指令 交互 过滤器 模板 计算属性 自定义过滤器和指令 组件(父子组件之间的通讯) 路由和多层路由以及占位槽slot等其他 vue-loader和模块加载(webpack)等 ...

  5. Copy-On-Write容器

    Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改, ...

  6. 恶心的content

    getBaseContent getApplicationContent ...

  7. Day 2 T1

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  8. XmlRpc.net 出参字符串还原为结构体

    上一篇随笔写的是入参结构体转字符串,现在需要把保存到服务器的字符串还原为结构体,这里记录一下操作步骤: 1. 格式化字符串. XmlRpcDeserializer 支持反序列化<struct&g ...

  9. JS typeof与instanceof的区别

    typeof 与 instanceof 通常是用来判断一个变量的类型,二者有如下区别: typeof: 判断一个变量的类型,返回值是字符串形式,返回结果有如下几种: number,boolean,st ...

  10. iOS 遇到的错误总结

    1.[[[NSBundle mainBundle] loadNibNamed:@"UIFeedbackController" owner:nil options:nil] firs ...