资源预览内容
第1页 / 共43页
第2页 / 共43页
第3页 / 共43页
第4页 / 共43页
第5页 / 共43页
第6页 / 共43页
第7页 / 共43页
第8页 / 共43页
第9页 / 共43页
第10页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
深入浅出NodeJs,演讲:tomieric,翼虎网 前端工程师,2013年5月13日,目录,1,2,3,4,NodeJS 简介,核心模块,NodeJS入门基础,web开发简信群聊案例分析,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?,01 / nodejs基础,具有复杂逻辑的网站; 基于社交网络的大规模 Web 应用; Web Socket 服务器; TCP/UDP 套接字应用程序; 命令行工具; 交互式终端程序; 带有图形用户界面的本地应用程序; 单元测试工具; 客户端 JavaScript 编译器。,nodejs能做什么?,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 与事件驱动,01 / nodejs基础,异步和同步差别 / 异步 var str = 开始了; $.get(url, function(data) console.log(我离开了一下回来打印str的:+str+,顺便带来朋友data:+data); ); console.log(我是先输出str的+str);,异步式 I/O 与事件驱动,01 / nodejs基础,异步式 I / O Node.js 使用的是单线程模型,对于所有 I/O 都采用异步式的请求方式,避免了频繁的上下文切换。Node.js 在执行的过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式 I/O 请求完成后会被推送到事件队列,等待程序进程进行处理。,异步式 I/O 与事件驱动,db.query(SELECT * from some_table, function(res) res.output(); );,01 / nodejs基础,事件驱动 由一个事件收集器、一个事件发送器和一个事件处理器组成。事件收集器专门负责收集所有事件,包括来自用户的(如鼠标、键盘事件等)、来自硬件的(如时钟事件等)和来自软件的(如操作系统、应用程序本身等)。事件发送器负责将收集器收集到的事件分发到目标对象中。,异步式 I/O 与事件驱动,01 / nodejs基础,遵循commonJS标准规范,commonJS,模块(module),包(packages),系统(system),二进制(binary),控制台(console),编码(encodings),文件系统(filesystems),套接字(socket),单元测试(unit testing),.,01 / nodejs基础,nodejs性能,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章,01 / nodejs基础,nodejs性能,nodejs在朋友网的实践 ,02 / nodejs入门,nodejs安装,下载安装nodejs http:/nodejs.org/download/,02 / nodejs入门,nodejs安装,设置系统环境变量 将node.exe所在目录加入系统环境变量PATH中,便于在任意位置执行node应用 NPM 打包管理器 新版nodejs已经默认安装了npm,不需另外安装。 测试安装环境 windows下面按window+R, 输入cmd,调用命令窗口。 输入 node -v 输入 npm -v,02 / nodejs入门,nodejs使用,第一个程序 打印 hello world 在“G:nodejsdemo”下新建一个hello.js文件 输入,02 / nodejs入门,入门基础,创建HTTP服务器,02 / nodejs入门,异步式 I/O (非阻塞 I / O),02 / nodejs入门,回调函数,02 / nodejs入门,事件式编程,03 / 核心模块,全局变量,nodejs的全局变量是global,而不是window process 进程对象 console.log 控制台输出,03 / 核心模块,内置模块,Util 工具包 Util.inherits(Constructor, SuperConstructor) 对象原型Util.inspect(object, showHidden, depth, color) 对象转换成字符串 Util.isArray() Util.isRegExp() Util.isDate() Utils.isError(),03 / 核心模块,内置模块,event 事件驱动 EventEmitter.on(event, listener) 监听事件 EventEmitter.emit(event, arg1,.) 发射(触发)事件 EventEmitter.once(event, listener); 只绑定一次事件 EventRemoveListener(event, listener) 解除某个监听事件 EventRemoveAllListener(event) 移除所有监听,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(.),03 / 核心模块,内置模块,HTTP 服务器与客户端 http.Server 事件 http.ServerRequest http.ServerResponse,03 / 核心模块,模块与包,创建模块,03 / 核心模块,模块与包,创建包 package.json 必须在包的顶层目录下; 二进制文件应该在 bin 目录下; JavaScript 代码应该在 lib 目录下; 文档应该在 doc 目录下; 单元测试应该在 test 目录下。,03 / web应用,Nodejs建站案例,03 / web开发简信群聊案例分析,Express框架(mvc),web application framework for node,03 / web开发简信群聊案例分析,Express框架(mvc),创建一个Express框架app,03 / web开发简信群聊案例分析,Express框架(mvc),创建成功,安装所需包,03 / web开发简信群聊案例分析,Express框架(mvc),导入需要包,03 / web开发简信群聊案例分析,ejs 模板引擎,JS模板引擎 jquery Templ, artTemplate, Juicer, jade等 与jade模板区别,03 / web开发简信群聊案例分析,mongoDB 非关系数据库,MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 8天学通mongoDB ,03 / web开发简信群聊案例分析,express搭建微博系统,创建包 package.json 必须在包的顶层目录下; 二进制文件应该在 bin 目录下; JavaScript 代码应该在 lib 目录下; 文档应该在 doc 目录下; 单元测试应该在 test 目录下。,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. Its care-free realtime 100% in JavaScript. Socket.IO 旨在任何浏览器和移动终端中创建实时的app应用,弱化不同的传输机制达到统一,它是一种快速的实时的JavaScript应用。,03 / web开发简信群聊案例分析,简信群聊案例分析,03 / web开发简信群聊案例分析,简信群聊案例分析,03 / web开发简信群聊案例分析,简信群聊案例分析,03 / web开发简信群聊案例分析,简信群聊案例分析,03 / web开发简信群聊案例分析,简信群聊案例分析,03 / web开发简信群聊案例分析,简信群聊案例分析,参考资料,nodejs权威开发指南 nodejs中文手册 express中文手册http:/expressjs.jser.us/api.html jade中文手册http:/expressjs.jser.us/jade.html nodejs中文社区http:/cnodejs.org/,谢谢聆听,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号