Nodejs介绍
               现状和展望



                       人人网FED - 李继成




11年8月3日星期三
主要内容

             • 从何而来
             • 能做什么
             • 现有成果
             • 继续努力

11年8月3日星期三
从何而来,为何而生



11年8月3日星期三
⼀一个简单的静态http服务器




11年8月3日星期三
• 简单
             • 模块机制
             • 能够处理系统I/O
             • 异步 无阻塞(callback)


11年8月3日星期三
• NodeJS是基于V8引擎构建的又⼀一个JS运行环境.
         • 这个环境给js提供了全异步的操作系统I/O的能力.
         • Node的宗旨是高性能,可伸缩.

         • JS具有先天的”异步”能力,每次函数调用都保存了”执行上下文”




11年8月3日星期三
能做什么



11年8月3日星期三
与浏览器js比较
                            NodeJS                        浏览器JS
              语言                     都是JS,都是ECMA-script标准的实现

              引擎              基于V8                        Chrome基于V8

                                                     只能操作浏览器提供的几个对象
              I/O          能够处理系统I/O
                                                        (window,document)

              用途        可以用来开发服务器端软件                     只能在浏览器中运行

                                                 所有依赖的文件都需要从网络加载(等待时间
             程序文件      依赖的文件直接从本地硬盘加载
                                                         较长)

              模块    内置的模块机制,直接用require载入其他模块      没有统⼀一的标准,需要手动实现⼀一个loader


             数据类型   可以方便的操作二进制数据流和内存缓存区           只有JS语言本身提供的几种简单数据类型




11年8月3日星期三
• File System
             • net
             • HTTP
             • Streams
             • Buffers
             • process
11年8月3日星期三
与其他流行语言
             ★   PHP    虚拟主机服务中最流行的语言


             ★   Java   拥有最多的商业应用,大厂商的支持,完善的开发工具套


             ★   Python   更多的应用在科学计算和辅助工具中


             ★   Ruby   因为优秀的Rails框架,所以很流行




             简单            轻量     无阻塞

11年8月3日星期三
经典聊天室例子




11年8月3日星期三
原理图




11年8月3日星期三
现状



11年8月3日星期三
• Node + npm包管理
             • Web开发框架Express
             • “实时”特色的库
             • 各种数据库的支持
             • 出现⼀一些支持nodejs的主机服务
             • 微软为Nodejs在windows上运行提供帮助
11年8月3日星期三
11年8月3日星期三
11年8月3日星期三
继续努力



11年8月3日星期三
开发&调试

             • 区分”开发环境”和”生产环境”
             • 需要⼀一个集成开发环境
             • 规范的单元测试
             • 应用异步的技巧和规范 - 代码可读性和
              内存泄露



11年8月3日星期三
Web开发

             • 框架还不够成熟
             • 程序出错会crash的问题
             • 支持多实例并行提供服务


11年8月3日星期三
部署

             • 自动化的部署工具
             • 标准的服务器运行环境
             • 健康状况监测


11年8月3日星期三
谢谢!



11年8月3日星期三

Nodejs介绍