接手一个小项目,本来,想用go语言来做的,于是前半周便开始临阵磨枪的疯狂学习go语言
go真的是个好玩的东西,语法简单,又支持许多高级特性,package管理超方便,集动态语言的灵活、快速开发,与静态语言的高效于一身
语言编码格式神马的常见问题都好解决,eclipse就搞定了
然而,windows安装go环境却颇费了一番周折,开始是8g,后来是go run,最后也没找到合适的调试web程序的方式,只能在linux的测试服务器上做部署调试
虽然是小项目,但仍然要包含各种元素,需要一个一个搞定才能正式做项目
web框架,go有beego和webgo,都是很好用的MVC框架
mysql神马的也都不是问题
最后卡在了thrift上
thrift本身是支持go的,可以生成go的client,但是却找不到完整的例子,thrift文档里的example里没有go,按生成的client里的小例子做,根本走不通。gifhub里的两个go-thrift插件也都没走通。最关键的是,不管是百度还是google,相关的资料几乎都没有。折腾了一天,到周三下午的时候,眼看项目时间周期就要受此影响,最后不得不暂时放弃
放弃了,转向另一个早就想跃跃欲试的东西:nodejs
第一次用nodejs/express做项目也并不顺畅,选什么模板/怎么连mysql/thrift,以及怎么做权限过滤,还好,都解决了,但是最后险些卡在了图片验证码上
搜到的的资料,nodejs的验证码大部分都是基于node-canvas做的。canvas是nodejs的一个图形库,大概类似php所用的GD库。canvas和操作系统结合比较紧密,windows安装再次遇到了问题。要装npm-gyp来编译c++,进而需要安装Visual C++,还要装Python,可是最后“npm install canvas”的时候,还是TM不停的失败
还好,改了一下思路,找到了另外一个可以生成验证码的nodejs小插件:node-ccap,实现了需要的效果
已经很久没真正尝试过后端的新东西了~~~近三年以来,不再用java,也不用很久之前就开始研究的nodejs,而一直使用php,甚至几乎只使用cakephp~~~~鄙视
直到近期,发现cakephp一个很SB,却很关键,会造成整个系统无法工作的bug,才突然意识到,应该学点后端的新东西了
开始的时候没选nodejs,是因为个人其实并不看好nodejs在后端的作为。听过很多nodejs的经验介绍和分享,但几乎无一例外的,使用nodejs做项目的公司,开始时都是前端开发资源过剩,于是让前端团队去承担后端工作。
对于传统的后端开发,nodejs的缺点明显:单进程,与异步
多核时代的今天,nodejs的默认启动模式居然还不支持多核,让人很纳闷
大部分人都不习惯nodejs的异步模式,这也是其使用的一个巨大障碍
另外,基于js的后端程序,其效率可能只能与php相比,与java、go等静态编译型语言相比,先天不足