• 1. 深入浅出NodeJs演讲:tomieric翼虎网 前端工程师2013年5月13日
  • 2. 目录1234NodeJS 简介核心模块NodeJS入门基础web开发《简信群聊案例分析》
  • 3. 01 / nodejs基础javascript javascript由于ECMAScript、DOM、BOM组成(Mozlia指Core Javascript 和 Client Javascript组成)。 nodejs是javascript? nodejs是基于ECMAScript或Core Javascript,借助于chorme 的V8引擎,使用C++编写扩展。 与其编程语言区别? nodejs不是一种独立语言。他是居于javascript语言基础开发的服务器端语言,它可以像php它们一样 web编程,它是可以可以跳过apache,nginx等http服务器直接面向前端开发。什么是nodejs?
  • 4. 01 / nodejs基础具有复杂逻辑的网站; 基于社交网络的大规模 Web 应用; Web Socket 服务器; TCP/UDP 套接字应用程序; 命令行工具; 交互式终端程序; 带有图形用户界面的本地应用程序; 单元测试工具; 客户端 JavaScript 编译器。nodejs能做什么?
  • 5. 01 / nodejs基础异步和同步差别 // 同步 var str = '开始了'; function loop(){ var i = 100000; if(i == 0) console.log('哈哈,我先打印了str:'+str); while(i > 0) i--; } loop(); console.log('我想打印str:'+str+'需要等待loop执行完');异步式 I/O 与事件驱动
  • 6. 01 / nodejs基础异步和同步差别 // 异步 var str = '开始了'; $.get(url, function(data){ console.log('我离开了一下回来打印str的:'+str+',顺便带来朋友data:'+data); }); console.log('我是先输出str的'+str);异步式 I/O 与事件驱动
  • 7. 01 / nodejs基础异步式 I / O Node.js 使用的是单线程模型,对于所有 I/O 都采用异步式的请求方式,避免了频繁的上下文切换。Node.js 在执行的过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式 I/O 请求完成后会被推送到事件队列,等待程序进程进行处理。 异步式 I/O 与事件驱动db.query('SELECT * from some_table', function(res) { res.output(); });
  • 8. 01 / nodejs基础事件驱动 由一个事件收集器、一个事件发送器和一个事件处理器组成。事件收集器专门负责收集所有事件,包括来自用户的(如鼠标、键盘事件等)、来自硬件的(如时钟事件等)和来自软件的(如操作系统、应用程序本身等)。事件发送器负责将收集器收集到的事件分发到目标对象中。 异步式 I/O 与事件驱动
  • 9. 01 / nodejs基础遵循commonJS标准规范commonJS模块(module)包(packages)系统(system)二进制(binary)控制台(console)编码(encodings)文件系统(filesystems)套接字(socket)单元测试(unit testing)...
  • 10. 01 / nodejs基础nodejs性能
  • 11. 01 / nodejs基础Snoopyxd 详细对比了 Node.js 与 PHP+Nginx 组合,结果显示在3000并发连接、30秒的 测试下,输出“hello world”请求: PHP 每秒响应请求数为3624,平均每个请求响应时间为0.39秒;Node.js 每秒响应请求数为7677,平均每个请求响应时间为0.13秒 而同样的测试,对MySQL查询操作: PHP 每秒响应请求数为1293,平均每个请求响应时间为0.82 Node.js 每秒响应请求数为2999,平均每个请求响应时间为0.33秒。nodejs性能资料:《nodejs开发指南》 第1.4.2章
  • 12. 01 / nodejs基础nodejs性能《nodejs在朋友网的实践》 http://wenku.baidu.com/view/b5ae3cc3bb4cf7ec4afed0a0.html
  • 13. 02 / nodejs入门nodejs安装下载安装nodejs http://nodejs.org/download/
  • 14. 02 / nodejs入门nodejs安装设置系统环境变量 将node.exe所在目录加入系统环境变量PATH中,便于在任意位置执行node应用 NPM 打包管理器 新版nodejs已经默认安装了npm,不需另外安装。 测试安装环境 windows下面按window+R, 输入cmd,调用命令窗口。 输入> node -v 输入> npm -v
  • 15. 02 / nodejs入门nodejs使用第一个程序 打印 hello world 在“G:\nodejs\demo”下新建一个hello.js文件 输入
  • 16. 02 / nodejs入门入门基础创建HTTP服务器
  • 17. 02 / nodejs入门异步式 I/O (非阻塞 I / O)
  • 18. 02 / nodejs入门回调函数
  • 19. 02 / nodejs入门事件式编程
  • 20. 03 / 核心模块全局变量nodejs的全局变量是global,而不是window process 进程对象 console.log 控制台输出
  • 21. 03 / 核心模块内置模块Util 工具包 Util.inherits(Constructor, SuperConstructor) 对象原型Util.inspect(object, [showHidden], [depth], [color]) 对象转换成字符串 Util.isArray() Util.isRegExp() Util.isDate() Utils.isError()
  • 22. 03 / 核心模块内置模块event 事件驱动 EventEmitter.on(event, listener) 监听事件 EventEmitter.emit(event, arg1,...) 发射(触发)事件 EventEmitter.once(event, listener); 只绑定一次事件 EventRemoveListener(event, listener) 解除某个监听事件 EventRemoveAllListener([event]) 移除所有监听
  • 23. 03 / 核心模块内置模块fs 文件系统 fs.readFile(filename,[encode],[callback(err, data)]) 异步读取文件 fs.readFileSync(filename,[encode],[callback(err, data)]) 同步读取文件 fs.open(path, flags, [mode], [callback(err, fd)] fs.read(...)
  • 24. 03 / 核心模块内置模块HTTP 服务器与客户端 http.Server 事件 http.ServerRequest http.ServerResponse
  • 25. 03 / 核心模块模块与包创建模块
  • 26. 03 / 核心模块模块与包创建包 package.json 必须在包的顶层目录下; 二进制文件应该在 bin 目录下; JavaScript 代码应该在 lib 目录下; 文档应该在 doc 目录下; 单元测试应该在 test 目录下。
  • 27. 03 / web应用Nodejs建站案例
  • 28. 03 / web开发《简信群聊案例分析》Express框架(mvc)web application framework for node
  • 29. 03 / web开发《简信群聊案例分析》Express框架(mvc)创建一个Express框架app
  • 30. 03 / web开发《简信群聊案例分析》Express框架(mvc)创建成功,安装所需包
  • 31. 03 / web开发《简信群聊案例分析》Express框架(mvc)导入需要包
  • 32. 03 / web开发《简信群聊案例分析》ejs 模板引擎JS模板引擎 jquery Templ, artTemplate, Juicer, jade等 与jade模板区别
  • 33. 03 / web开发《简信群聊案例分析》mongoDB 非关系数据库 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 《8天学通mongoDB http://www.cnblogs.com/huangxincheng/category/355399.html
  • 34. 03 / web开发《简信群聊案例分析》express搭建微博系统创建包 package.json 必须在包的顶层目录下; 二进制文件应该在 bin 目录下; JavaScript 代码应该在 lib 目录下; 文档应该在 doc 目录下; 单元测试应该在 test 目录下。
  • 35. 03 / web开发《简信群聊案例分析》简信群聊案例分析express + socket.io[+mongoDB] What is Socket.IO? Socket.IO aims to make realtime apps possible in every browser and mobile device, blurring the differences between the different transport mechanisms. It's care-free realtime 100% in JavaScript. Socket.IO 旨在任何浏览器和移动终端中创建实时的app应用,弱化不同的传输机制达到统一,它是一种快速的实时的JavaScript应用。
  • 36. 03 / web开发《简信群聊案例分析》简信群聊案例分析
  • 37. 03 / web开发《简信群聊案例分析》简信群聊案例分析
  • 38. 03 / web开发《简信群聊案例分析》简信群聊案例分析
  • 39. 03 / web开发《简信群聊案例分析》简信群聊案例分析
  • 40. 03 / web开发《简信群聊案例分析》简信群聊案例分析
  • 41. 03 / web开发《简信群聊案例分析》简信群聊案例分析
  • 42. 参考资料《nodejs权威开发指南》 nodejs中文手册 http://docs.cnodejs.net/cman/index.html express中文手册http://expressjs.jser.us/api.html jade中文手册http://expressjs.jser.us/jade.html nodejs中文社区http://cnodejs.org/
  • 43. 谢谢聆听·