很早之前就关注过node js。也做过许多实验性的东西。总结一下nodejs可以做哪些东西。
node本身可以做很优秀的服务端程序,对于web项目,使用express框架,结合mongodb 或者mysql数据库可以构建很棒的应用。
如果是作为整个web应用来说,结合ejs或者jade这样的模板可以大大提高开发的效率。但是相应的路由配置也比较复杂一些。如果再加入过滤项,可能需要在每个请求前面再加一个过滤请求,那样的路由配置必将十分庞大。
个人觉得理想的使用方式就是使用统一的url,定义好post请求的数据格式,比如{head:{},body{ no:1001}}这样的json格式,把每一个接口以数字的形式对应后台的服务,由node后台解析请求格式通过映射的服务对象实现特定的逻辑。这样的话我们可以针对app,web应用定义不同的接口。服务器只负责返回数据处理逻辑,过滤请求,缓存session,验证某些第三方登录口令等,这里把前端分离出去,跟app一样作为单独的端。这时候前端和后端可以完全的分离。前端使用整套的自动化构建工具,如grunt,bower,作为单独的开发,而服务端只做数据接口的提供者。我们现在做的项目使用的java后台就是如此。我专门负责前端部分的完成,另由后端人员提供包括前端数据接口在内的客户端接口。自己也使用nodejs如法炮制,稍后跟大家分享。
当然如果项目需要快速迭代,并且人手不够的话只能使用统一的服务端加模板的形式进行敏捷开发。
另外node种的 socketio 组件可以作为书写即使通讯应用的核心组件,即使是对于wesocket这样兼容性需求比较大的通讯方式也可以通过降级为轮训的方式胜任。
另外node适合做io密集型应用,本身直接作为服务器,省略了类似于java servlet 那一层,效率也会更好。另外因为其强大而灵活的特性更值得我们去探索练习创建自己的框架体系。不失为一个升级到架构师的好平台。个人觉得Node为基础的爬虫类组件也是最优雅最容易使用的。这样还能为日常需求做很好的服务,比如希望抓取某网站的有用信息或者从互联网上收集市场信息等。
总之node 值得每一个前端工程师拥有。