1 为什么对Node.js感兴趣?
前台和后台使用同一种开发语言(Javascript)是一种奇妙的体验,尽管JS并不是一门完美的开发语言,但值得体验一下。至于盛传的Nodejs的性能如何如何,还未达到追求性能的阶段,暂且不提。
2 Express呢?
Express是对Node.js的http的重新封装,提供了更加结构化的开发模板,类似于Python的Django,ruby的Rails等框架,希望能在Nodejs的基于事件的特征下体验Express开发。
3 趟过的那些坑们
不得不说,折腾Nodejs是一件令人痛苦的事情,可以说遇到的坑是一个接一个,简单记录一下:
3.1 Node.js的库
Nodejs几乎完全依赖于网络,离线几乎无法进行开发。工程中涉及的各种包都需要从网上下载(通过npm),而在这个神奇的国度,搞点新技术总是那么难,你懂的。国外的库基本上很难正常的访问,好在国内有镜像可以用(npm.taobao.org)。
装好Node.js后,第一件事情是安装国内镜像源:
npm install -g cnpm --registry=https://registry.npm.taobao.org
然后就可以用cnpm命令取代npm了。
在公司的环境中,还涉及配置代理上网和https无法使用的问题。前者的解决方案是使用--proxy=http://username:password@proxy.xxx.xxx,而后者只能指定http的registry,但有些包需要从https://github上下载,不知道如何设置只是用http?
3.2 rebuild的问题
Nodejs的很多包都是通过源码来分发的,而对于很多用c语言写的包在本地需要有个编译的过程,特别是windows环境下,很多包需要MS的VS编译工具来搞定。问题是,每个包需求的MSVS编译器的版本都不相同,有的需要vs2015(比如socket.io),有的需要vs2010(mongodb),这就需要你本机环境安装多个版本的vs(崩溃)。
另外,多数包的rebuild还需要python环境支持,有的还不支持python3.x,因此本地需要安装多个python的版本,(崩溃)……
总结的经验是,出了问题不要只看log中的提示,往往不是真正的解决方案,而要看那个包出了问题,找出这个包的说明文档查看它的环境需求在你本地是否满足,比如安装mongodb的时候,其中一个包就需要本机安装了vs2010,而且高版本的还不行(次奥),更令人崩溃的是shell提示的问题和解决方案根本解决不了问题。