Taobao FED

致想用 Node.js 的你

致想用 Node.js 的你

Node.js,09 年这个集成了 Google V8 JavaScript 引擎和一个底层 I/O API 的项目,如今项目无数,大企业也纷纷尝试。

Node.js 有如得到了金陵才子一般,忽然间就在大街小巷中风靡开来,诱人的滋味感觉谁都想咬一口,虽然其他语言的酸葡萄理论开始蔓延,但是依旧没有影响到它的推广和发展。在强大的 PHP 和稳定的 Java 之中,慢慢的发芽并占有了一席之地。

虽说一开始 0.6 版本的 Node.js 像玩具,只能简单做些小工具,但是并不妨碍各种尝试。当初 lua 语言大肆流行,多亏了 wow 的插件体系,暴雪当作粘合剂,而程序员玩家纷纷效仿,一度一夜之间冒出许多 lua 开发的文章。而 Node.js 也似乎是一夜之间,多出了各种新手教程,当然也无非就是安装和敲敲 hello world,但是不管怎么说,软文多了之后,眼球已经被深深的吸引了。

虽然 python 也可以一句话创建 Server,但是 JS 却是头一回,除了在 windows 上编译费劲外,似乎一切都那么完美。这也是第一次 JS 立足于不同的土地,通过事件驱动和非阻塞 IO,创造了一片新的大陆。

除了社区的活跃,npm 包管理的问世和内置集成也功不可没。Java 之所以流行,Ant 和 Maven 的工程化套件必不可少,而后者的 JAR 包管理中心化更是将 Java 的共享和社区化推进到了一个新的高度,而 npm 正是 Node.js 版本的仓库,大海中无数种类的鱼,总有你想要的,程序员们总能找到想要的东西,而且正是由于 JS 代码的可见性,借鉴和更新变的非常容易。

当然 npm 也有它本身的缺陷,模块包的代码质量良莠不齐,不过高质量的代码库总能获得最多的下载量,也算是一个弥补措施了。

一个服务器并不能满足前端们的好奇心,模仿是天生的,所以之后开始使用 Node.js 来编写各种工具,最直接的就是打包脚本,妥妥的从 YUI Compressor 中解放了出来,后来各种轻语言开始迁移工具,纷纷开始支持,比如 Less 和 Sass。自此开始,Node.js 走上了一条人人都会一点,人人都来咬一口的局面。

1.0 之前,算是大跃进时期,每个版本都有着非常鲜明的特色和功能。虽然前段时间 io.js 的事情闹得沸沸扬扬,各路人马甚至开始考虑站队的事情,当然最后还是合并了,算是不错的结尾,Node.js 4.0 的时代也算是开始,应该会开始稳健的进步了。

全栈工程师的 title 也自此开始冒泡,其实一直都有,以前这些从前写到后的人,大多是小公司加班出来的。

发现写了这么多,大多写了些历史和演变,还是回到其本身。Node.js 本身就是个万精油,什么都能干,但是并不一定拿它干最好,有些事情还是要找对应的语言,比如复杂度很高的计算,那就不应该是它干的。存在既是理由,您拿一把斧头砍树固然好,挖土就不行,所以用之前评估和衡量还是非常之重要。而 Node.js 更擅长处理并发连接,单进程的 JS 语言没有什么死锁的压力,而自由的写法更加使得代码变的有吸引力。

除了 npm 算是官方提供的包管理之外,似乎没什么官方提供的支持了,这也是 Node.js 的弱项吧,配套比不过其他语言,要啥啥没有,好在社区强大,现在算是成熟许多,debug、profiler 等一应俱全。

想用 Node.js 的你,必须是一个有耐心、细心的人才能驾驭,可能你会在一整天排查一个内存溢出问题,也可能花上大半天搞定一个莫名其妙的依赖错误,这些都是以前我实实在在碰到过的。不过好在现在 Node.js 的报错规范了许多,大多还是能够一眼就看出问题。

当然,最后希望你好好的用 Node.js,用好它,那么它就会更好。