基于Node.js(express)实现业务层的方案推荐

 

杨阳   yangyang@ldpala.com

诚致文俊

现状问题

亟需人手的模块;经验和兴趣最多的领域

一、为什么选Node.js

核心搜索node优势关键字

"Node vs Php/Python/Ruby/Java/..."

"express vs laravel/django/rails/jsp/..."

选择技术方案务实第一

 

概述

  • NodeJS是一个使用了Google高性能V8引擎的服务器端JavaScript实现。它提供了一个完全非阻塞I/O栈,与JavaScript提供的闭包和匿名函数相结合,使之成为编写高吞吐量网络服务程序的优秀平台。

原因一:高性能

原因二:高并发异步IO

  • 作为实现服务器端的主流语言,其基于事件的异步I/O的实现,对高并发访问有着业界第一的支持。
  • libev:javascript封装的C++实现的异步IO线程库
  • 网上的评测结果,node基本不输任何对手
  • 在未来唯一有机会在性能上超过node的可能只有go了,但现在两者在其他方面的对比完全不在一个数量极。

原因三:活跃的社区,丰富的库

  • 不缺文档,不缺库,不用重新发明轮子。
  • 对于初学上手非常重要,幸运的是社区非常强大,第三方库的库非常广泛。
  • https://www.npmjs.com/

原因四:部署方便快捷

  • grunt, mocha, docker
  • Digital Ocean等vps标准化集成,可直接参考业界成熟部署方式,MEAN
  • 可以独自部署,也可通过nginx反向代理完美结合二者的最长处

原因五:业界已有广泛成熟应用

  • “没落”的大公司:列表,如paypal/linkedin taobao
    • "其实到今天为止,很少有哪些大的互联网公司是和 Node.js 无关的"
  • 创业的小公司:。不计其数。采用MEAN stack很多。
    • "前后端统一,人人可全栈",足以吸引太多初创企业。
  • 开源项目:github projects
  • 典型例子:。Pomelo,网易开源的游戏服务端框架
    • "高性能、分布式、实时的多人在线游戏引擎,对服务器的并发及性能要求最高的Web应用之一"

原因六:顺势而为

不断被验证的Atwood定律

Any application that can be written in JavaScript,

will eventually be written in JavaScript.

服务器端(node)、数据库(mongo)、集成部署(grunt)、游戏引擎(cocos2d-js)、移动APP(Hybrid-app)、移动WebApi(微信js-sdk)

二、Web开发经历

一直在成为专家的路上努力

最感兴趣也最擅长后端业务层(离客户端最近的后台)

Web开发实战经历

  • Java(jsp)-本科: 入门web/http
  • Nginx+php-本科: 调研了业界问题(高并发C10k/安全)
  • Ruby(rails)-研一博士课程:Rest Web API理论
  • Python(django)-研二所里项目和创业项目:技术成功
  • Node.js(express)-小米一年:项目成功,带动他人
    • 收获了真实的技术和来自心底的快乐

Web开发实战经历

  • 起因: “你一定要成为咱组的web专家“
  • 发展:自己钻研并出活,说服新主管并得到赞许,教学
  • 结果:不是高手也是熟手,当不了专家也能作师傅
    • 两个网站共5个系统从一无所有到部署上线
    • 近半年来提交近 40K行代码
    • 教会三人入门能开发
    • 解决常见的很多问题,读若干本书,写若干技术随笔
  • 总结: node天生为解决网络服务而存在,express是所见过所用过的最爽的web框架,解决问题最快
    • 运行快、开发快、部署快、扩展快、学习快。

三、进度承诺

该亮剑的时候,宁愿挖坑一拼

不谈计划进度的技术设计方案是耍流氓

保守计划

  • 2天见网站,每天有进展
  • 1周上下各层联通可用
  • 1月网站基本成型可上线
  • 协作培养展示层的人员开发
  • 一切维护升级和改版

反之...

  • 为他人手下,非不情愿;但考虑进度,夜不能寐
  • 无他意,市场价值如此
  • 手中已有一把钢剑,无需再铸一把铁剑
  • 与其寄生团队“学技术”,更愿意用自身技术贡献团队

未来需要的帮助

  • 设计上模块间的咨询,高手建议多多益善
  • 支付模块
  • 安全考虑

委以重任,必不敢负

 

杨阳  yangyang@ldpala.com

Node

By pro-yy

Node

  • 875